@curviate/sdk 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,28 @@ Versioning: semantic — minor for additive changes, patch for bug fixes; no sta
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.2.1] — 2026-06-29
11
+
12
+ ### Fixed
13
+
14
+ - `deleteMessage` and `addReaction` no longer inject `account_id` into the request. The server resolves the owning account from the message id — sending a client-supplied `account_id` was rejected by the server's strict schema, making both methods unusable via `client.account(id)`. The server's schemas are also relaxed (patch on the server side) so existing SDK installs continue to work without updating.
15
+
16
+ ---
17
+
18
+ ## [0.2.0] — 2026-06-28
19
+
20
+ ### Added
21
+
22
+ - `profiles.getMe(params?)` now accepts an optional `linkedin_sections` array to request specific LinkedIn profile sections (e.g. education, experience, skills); responses include only the requested enrichment fields.
23
+ - `OwnProfile` type is normalized: `is_premium` and `is_open_profile` are always present on the response. Enriched section fields (`headline`, `summary`, `work_experience`, `education`, `skills`, and more) are present when the corresponding section was requested.
24
+ - `Chat` type now includes a `subject` field (nullable string) reflecting the conversation subject where available.
25
+
26
+ ### Changed
27
+
28
+ - Array-valued query parameters are now serialized as repeated keys (`?key=a&key=b`) rather than as a comma-joined string. This matches the server's expected format for array parameters such as `linkedin_sections`.
29
+
30
+ ---
31
+
10
32
  ## [0.1.1] — 2026-06-22
11
33
 
12
34
  ### Fixed
package/dist/index.d.ts CHANGED
@@ -76,15 +76,23 @@ type HttpMethod = "GET" | "HEAD" | "POST" | "PATCH" | "PUT" | "DELETE";
76
76
  * - `"query"` — GET reads, body-less destructive verbs (DELETE), and
77
77
  * filter-search POSTs (whose body is the filter set, with `account_id` in
78
78
  * the query string) all carry it as a query parameter.
79
+ * - `"none"` — the endpoint resolves the owning account server-side; the
80
+ * SDK sends no `account_id` in the query or body. Use for id-scoped
81
+ * operations where the server infers ownership from the resource id
82
+ * (e.g. `deleteMessage`, `addReaction`).
79
83
  *
80
84
  * Defaults to `"query"` so a method that omits it keeps the read-style location.
81
85
  */
82
- type AccountIdLocation = "body" | "query";
86
+ type AccountIdLocation = "body" | "query" | "none";
83
87
  /** Per-call request shape passed by a resource method. */
84
88
  interface RequestArgs {
85
89
  method: HttpMethod;
86
90
  path: string;
87
- query?: Record<string, string | number | boolean | undefined | null>;
91
+ /**
92
+ * Query params. Array values serialize as repeated params (e.g. `?k=a&k=b`)
93
+ * to support multi-value fields like `linkedin_sections`.
94
+ */
95
+ query?: Record<string, string | number | boolean | string[] | undefined | null>;
88
96
  body?: unknown;
89
97
  /**
90
98
  * Where to inject the context's fixed `account_id`. Defaults to `"query"`.
@@ -2573,6 +2581,8 @@ interface paths {
2573
2581
  * @enum {number}
2574
2582
  */
2575
2583
  pinned?: 0 | 1;
2584
+ /** @description The conversation subject or InMail subject line; null when none. */
2585
+ subject?: ((string | null) | null) | null;
2576
2586
  }[];
2577
2587
  /** @description Next-page cursor; null on the last page. */
2578
2588
  cursor?: string | null;
@@ -2957,6 +2967,8 @@ interface paths {
2957
2967
  * @enum {number}
2958
2968
  */
2959
2969
  pinned?: 0 | 1;
2970
+ /** @description The conversation subject or InMail subject line; null when none. */
2971
+ subject?: ((string | null) | null) | null;
2960
2972
  /** @description The most recent message in the chat, or null if empty. */
2961
2973
  lastMessage?: {
2962
2974
  /**
@@ -5064,13 +5076,13 @@ interface paths {
5064
5076
  account_id: string;
5065
5077
  /** @description Post body text (1–3000 chars). Not stored or logged. */
5066
5078
  text: string;
5067
- /** @description social_id of a post to repost. Reachability verified live by qa. */
5079
+ /** @description social_id of a post to repost. */
5068
5080
  repost?: string;
5069
- /** @description External URL to include in the post. Reachability verified live by qa. */
5081
+ /** @description External URL to include in the post. */
5070
5082
  external_link?: string;
5071
- /** @description Company page social_id to post as. Reachability verified live by qa. */
5083
+ /** @description Company page social_id to post as. */
5072
5084
  as_organization?: string;
5073
- /** @description JSON-encoded array of mention objects ({name, profile_id, is_company}). Reachability verified live by qa. */
5085
+ /** @description JSON-encoded array of mention objects ({name, profile_id, is_company}). */
5074
5086
  mentions?: {
5075
5087
  /** @description Display name of the mentioned person or company. */
5076
5088
  name: string;
@@ -5079,7 +5091,7 @@ interface paths {
5079
5091
  /** @description true if the mention is a company page. */
5080
5092
  is_company: boolean;
5081
5093
  }[];
5082
- /** @description Include a job posting in the post. Reachability verified live by qa. */
5094
+ /** @description Include a job posting in the post. */
5083
5095
  include_job_posting?: boolean;
5084
5096
  /**
5085
5097
  * Format: binary
@@ -5240,7 +5252,7 @@ interface paths {
5240
5252
  query: {
5241
5253
  /** @description Account ID to use for the request. */
5242
5254
  account_id: string;
5243
- /** @description When supplied, returns replies to this comment instead of top-level comments. Reachability verified live by qa. */
5255
+ /** @description When supplied, returns replies to this comment instead of top-level comments. */
5244
5256
  comment_id?: string;
5245
5257
  /** @description Maximum comments to return (1–50, default 20). */
5246
5258
  limit?: number;
@@ -5407,9 +5419,9 @@ interface paths {
5407
5419
  account_id: string;
5408
5420
  /** @description Comment text (1–1250 chars). Not stored or logged. */
5409
5421
  text: string;
5410
- /** @description When supplied, this comment is a reply to that comment rather than a top-level reply to the post. Reachability verified live by qa. */
5422
+ /** @description When supplied, this comment is a reply to that comment rather than a top-level reply to the post. */
5411
5423
  comment_id?: string;
5412
- /** @description JSON-encoded array of mention objects ({name, profile_id, is_company}). Reachability verified live by qa. */
5424
+ /** @description JSON-encoded array of mention objects ({name, profile_id, is_company}). */
5413
5425
  mentions?: {
5414
5426
  /** @description Display name of the mentioned person or company. */
5415
5427
  name: string;
@@ -5418,9 +5430,9 @@ interface paths {
5418
5430
  /** @description true if the mention is a company page. */
5419
5431
  is_company: boolean;
5420
5432
  }[];
5421
- /** @description Company page social_id to comment as. Reachability verified live by qa. */
5433
+ /** @description Company page social_id to comment as. */
5422
5434
  as_organization?: string;
5423
- /** @description External URL to include in the comment. Reachability verified live by qa. */
5435
+ /** @description External URL to include in the comment. */
5424
5436
  external_link?: string;
5425
5437
  /**
5426
5438
  * Format: binary
@@ -5569,7 +5581,7 @@ interface paths {
5569
5581
  };
5570
5582
  /**
5571
5583
  * List a post's reactions
5572
- * @description Returns reactions on a post. Each item includes the UPPERCASE reaction value and author. Error mapping is conservative — raw-path errors map to 502 unless qa verifies a cleaner status.
5584
+ * @description Returns reactions on a post. Each item includes the UPPERCASE reaction value and author.
5573
5585
  */
5574
5586
  get: {
5575
5587
  parameters: {
@@ -5744,9 +5756,9 @@ interface paths {
5744
5756
  * @enum {string}
5745
5757
  */
5746
5758
  reaction: "like" | "celebrate" | "support" | "love" | "insightful" | "funny";
5747
- /** @description When supplied, the reaction applies to this comment rather than the post. Reachability verified live by qa. */
5759
+ /** @description When supplied, the reaction applies to this comment rather than the post. */
5748
5760
  comment_id?: string;
5749
- /** @description Company page to react as. Reachability verified live by qa. */
5761
+ /** @description Company page to react as. */
5750
5762
  as_organization?: string;
5751
5763
  };
5752
5764
  };
@@ -5875,13 +5887,15 @@ interface paths {
5875
5887
  };
5876
5888
  /**
5877
5889
  * Retrieve your own profile
5878
- * @description Returns the connected account's own LinkedIn profile — name, headline, location, email, and premium/open-profile status.
5890
+ * @description Returns the connected account's own LinkedIn profile — name, headline, location, email, and premium/open-profile status. Request extra sections via linkedin_sections.
5879
5891
  */
5880
5892
  get: {
5881
5893
  parameters: {
5882
5894
  query: {
5883
5895
  /** @description The connected LinkedIn account to read with (acc_…). Required. */
5884
5896
  account_id: string;
5897
+ /** @description Which profile sections to fetch (repeatable). Allowed values: * (all sections), *_preview, about, experience, education, languages, skills, certifications, volunteering_experience, projects, recommendations_received, recommendations_given, and the _preview variant of each section. Omit for base fields only. */
5898
+ linkedin_sections?: ("*" | "*_preview" | "about" | "about_preview" | "experience" | "experience_preview" | "education" | "education_preview" | "languages" | "languages_preview" | "skills" | "skills_preview" | "certifications" | "certifications_preview" | "volunteering_experience" | "volunteering_experience_preview" | "projects" | "projects_preview" | "recommendations_received" | "recommendations_received_preview" | "recommendations_given" | "recommendations_given_preview")[];
5885
5899
  };
5886
5900
  header?: never;
5887
5901
  path?: never;
@@ -5914,12 +5928,12 @@ interface paths {
5914
5928
  /** @description Last name. */
5915
5929
  last_name?: string;
5916
5930
  /** @description LinkedIn public identifier (the slug after linkedin.com/in/). */
5917
- public_identifier?: string;
5918
- /** @description Full LinkedIn public profile URL. */
5931
+ public_identifier?: string | null;
5932
+ /** @description Full LinkedIn public profile URL, synthesized from the public identifier; null if the account has none. */
5919
5933
  public_profile_url?: string | null;
5920
5934
  /** @description Profile picture URL, or null if not set. */
5921
5935
  profile_picture_url?: string | null;
5922
- /** @description LinkedIn headline. */
5936
+ /** @description LinkedIn headline. Empty by default for the account's own profile; supply linkedin_sections to return the populated headline (enrichment path). */
5923
5937
  headline?: string | null;
5924
5938
  /** @description Location as set on the profile. */
5925
5939
  location?: string | null;
@@ -5928,11 +5942,35 @@ interface paths {
5928
5942
  /** @description Current occupation or role. */
5929
5943
  occupation?: string | null;
5930
5944
  /** @description true if this is a LinkedIn Premium account. */
5931
- premium?: boolean;
5945
+ is_premium?: boolean;
5932
5946
  /** @description true if the account has an open profile enabled. */
5933
- open_profile?: boolean;
5947
+ is_open_profile?: boolean;
5934
5948
  /** @description Organizations the account is associated with. */
5935
5949
  organizations?: Record<string, never>[];
5950
+ /** @description Total follower count. Absent by default; present only when linkedin_sections is supplied (enrichment path). */
5951
+ follower_count?: number;
5952
+ /** @description Total connection count. Absent by default; present only when linkedin_sections is supplied (enrichment path). */
5953
+ connections_count?: number;
5954
+ /** @description About/summary text (content pass-through — never stored). Present only when requested via linkedin_sections. */
5955
+ summary?: string | null;
5956
+ /** @description Work experience entries. Present only when requested via linkedin_sections. */
5957
+ work_experience?: Record<string, never>[];
5958
+ /** @description Education entries. Present only when requested via linkedin_sections. */
5959
+ education?: Record<string, never>[];
5960
+ /** @description Skills list. Present only when requested via linkedin_sections. */
5961
+ skills?: string[];
5962
+ /** @description Languages. Present only when requested via linkedin_sections. */
5963
+ languages?: string[];
5964
+ /** @description Certifications. Present only when requested via linkedin_sections. */
5965
+ certifications?: Record<string, never>[];
5966
+ /** @description Projects. Present only when requested via linkedin_sections. */
5967
+ projects?: Record<string, never>[];
5968
+ /** @description Volunteering experience entries. Present only when requested via linkedin_sections. */
5969
+ volunteering_experience?: Record<string, never>[];
5970
+ /** @description Recommendations (content pass-through — never stored). Present only when requested via linkedin_sections. */
5971
+ recommendations?: Record<string, never>[];
5972
+ /** @description Sections LinkedIn rate-limited away for this request. */
5973
+ throttled_sections?: string[];
5936
5974
  };
5937
5975
  };
5938
5976
  };
@@ -8309,7 +8347,7 @@ interface paths {
8309
8347
  };
8310
8348
  /**
8311
8349
  * Resolve search-filter IDs (Recruiter)
8312
- * @description Resolve human-readable terms to opaque Recruiter filter IDs for use in people search requests. The type parameter selects the filter family; type must be one of the 6 verified Recruiter values: GROUPS, DEPARTMENT, HIRING_PROJECTS, SAVED_SEARCHES, SAVED_FILTERS, DEGREE. Classic-only types (JOB_TITLE, LOCATION, PEOPLE, COMPANY, etc.) are rejected with 400 at schema validation, before any external call. Requires a Recruiter seat.
8350
+ * @description Resolve human-readable terms to opaque Recruiter filter IDs for use in people search requests. The type parameter selects the filter family; type must be one of the 6 Recruiter values: GROUPS, DEPARTMENT, HIRING_PROJECTS, SAVED_SEARCHES, SAVED_FILTERS, DEGREE. Classic-only types (JOB_TITLE, LOCATION, PEOPLE, COMPANY, etc.) are rejected with 400 at schema validation, before any external call. Requires a Recruiter seat.
8313
8351
  */
8314
8352
  get: {
8315
8353
  parameters: {
@@ -12288,7 +12326,7 @@ interface paths {
12288
12326
  };
12289
12327
  /**
12290
12328
  * Resolve search-filter IDs (Sales Navigator)
12291
- * @description Resolve human-readable terms to opaque Sales Navigator filter IDs for use in people or company search requests. The type parameter selects the filter family; type must be one of the 12 verified SN values. Classic-only types (LOCATION, PEOPLE, JOB_TITLE, etc.) are rejected with 400 at schema validation, before any external call. To resolve PEOPLE IDs (for the connections_of filter), use GET /v1/search/parameters instead. Requires a Sales Navigator seat.
12329
+ * @description Resolve human-readable terms to opaque Sales Navigator filter IDs for use in people or company search requests. The type parameter selects the filter family; type must be one of the 12 Sales Navigator values. Classic-only types (LOCATION, PEOPLE, JOB_TITLE, etc.) are rejected with 400 at schema validation, before any external call. To resolve PEOPLE IDs (for the connections_of filter), use GET /v1/search/parameters instead. Requires a Sales Navigator seat.
12292
12330
  */
12293
12331
  get: {
12294
12332
  parameters: {
@@ -14293,7 +14331,7 @@ interface paths {
14293
14331
  }[];
14294
14332
  /** @description Messaging events to subscribe to (default: [message.received]) */
14295
14333
  events?: ("message.received" | "message.delivered" | "message.read" | "message.reaction" | "message.edited" | "message.deleted")[];
14296
- /** @description Field-remapping keys for the messaging delivery payload (Array 1) */
14334
+ /** @description Field-remapping keys for the messaging delivery payload */
14297
14335
  data?: string[];
14298
14336
  } | {
14299
14337
  /** @constant */
@@ -14318,7 +14356,7 @@ interface paths {
14318
14356
  }[];
14319
14357
  /** @description User/relation events to subscribe to (default: [connection.accepted]) */
14320
14358
  events?: "connection.accepted"[];
14321
- /** @description Field-remapping keys for the user/relation delivery payload (Array 2) */
14359
+ /** @description Field-remapping keys for the user/relation delivery payload */
14322
14360
  data?: ("user_provider_id" | "user_full_name" | "user_public_identifier" | "user_profile_url" | "user_picture_url")[];
14323
14361
  } | {
14324
14362
  /** @constant */
@@ -15150,6 +15188,8 @@ declare class MessagingResource {
15150
15188
  /** Strip `account_id` from a query-param type (injected by the account-scoped context). */
15151
15189
  type WithoutAccountId<T> = Omit<T, "account_id">;
15152
15190
  type ProfileDetail = paths["/v1/profiles/me"]["get"]["responses"]["200"]["content"]["application/json"];
15191
+ /** Caller-facing query params for `profiles.getMe()` — `account_id` is injected by context. */
15192
+ type ProfileGetMeParams = WithoutAccountId<paths["/v1/profiles/me"]["get"]["parameters"]["query"]>;
15153
15193
  type ProfileGetResult = paths["/v1/profiles/{profile_id}"]["get"]["responses"]["200"]["content"]["application/json"];
15154
15194
  /** Caller-facing query params for `profiles.get()` — `account_id` is injected by context. */
15155
15195
  type ProfileGetParams = WithoutAccountId<paths["/v1/profiles/{profile_id}"]["get"]["parameters"]["query"]>;
@@ -15169,8 +15209,12 @@ type EndorseResult = paths["/v1/profiles/{profile_id}/endorse"]["post"]["respons
15169
15209
  declare class ProfilesResource {
15170
15210
  protected readonly ctx: RequestContext;
15171
15211
  constructor(ctx: RequestContext);
15172
- /** Get the account's own LinkedIn profile. `GET /v1/profiles/me` */
15173
- getMe(): Promise<ProfileDetail>;
15212
+ /**
15213
+ * Get the account's own LinkedIn profile. `GET /v1/profiles/me`
15214
+ * Pass `{ linkedin_sections: ['about', 'experience', ...] }` to request enriched sections.
15215
+ * The `account_id` is injected by the account-scoped context.
15216
+ */
15217
+ getMe(params?: ProfileGetMeParams): Promise<ProfileDetail>;
15174
15218
  /**
15175
15219
  * Get a LinkedIn member profile by id or public handle.
15176
15220
  * `GET /v1/profiles/{profile_id}`
package/dist/index.js CHANGED
@@ -182,7 +182,14 @@ function buildUrl(path, opts) {
182
182
  const url = new URL(path, opts.baseUrl);
183
183
  if (opts.query) {
184
184
  for (const [key, value] of Object.entries(opts.query)) {
185
- if (value !== void 0 && value !== null) url.searchParams.set(key, String(value));
185
+ if (value === void 0 || value === null) continue;
186
+ if (Array.isArray(value)) {
187
+ for (const v of value) {
188
+ url.searchParams.append(key, String(v));
189
+ }
190
+ } else {
191
+ url.searchParams.set(key, String(value));
192
+ }
186
193
  }
187
194
  }
188
195
  return url.toString();
@@ -260,6 +267,7 @@ function createContext(config, accountId) {
260
267
  if (accountId !== void 0) {
261
268
  if (target === "body") {
262
269
  body = injectAccountIdIntoBody(body, accountId);
270
+ } else if (target === "none") {
263
271
  } else {
264
272
  query = { account_id: accountId, ...args.query };
265
273
  }
@@ -520,7 +528,9 @@ var MessagingResource = class {
520
528
  deleteMessage(messageId) {
521
529
  return this.ctx.request({
522
530
  method: "DELETE",
523
- path: `/v1/messages/${messageId}`
531
+ path: `/v1/messages/${messageId}`,
532
+ accountIdIn: "none"
533
+ // server resolves owning account from message id
524
534
  });
525
535
  }
526
536
  /**
@@ -540,7 +550,8 @@ var MessagingResource = class {
540
550
  method: "POST",
541
551
  path: `/v1/messages/${messageId}/reactions`,
542
552
  body,
543
- accountIdIn: "body"
553
+ accountIdIn: "none"
554
+ // server resolves owning account from message id
544
555
  });
545
556
  }
546
557
  /** Send an InMail. `POST /v1/messages/inmail` */
@@ -575,11 +586,16 @@ var ProfilesResource = class {
575
586
  constructor(ctx) {
576
587
  this.ctx = ctx;
577
588
  }
578
- /** Get the account's own LinkedIn profile. `GET /v1/profiles/me` */
579
- getMe() {
589
+ /**
590
+ * Get the account's own LinkedIn profile. `GET /v1/profiles/me`
591
+ * Pass `{ linkedin_sections: ['about', 'experience', ...] }` to request enriched sections.
592
+ * The `account_id` is injected by the account-scoped context.
593
+ */
594
+ getMe(params) {
580
595
  return this.ctx.request({
581
596
  method: "GET",
582
- path: "/v1/profiles/me"
597
+ path: "/v1/profiles/me",
598
+ ...params ? { query: params } : {}
583
599
  });
584
600
  }
585
601
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curviate/sdk",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "private": false,
5
5
  "description": "TypeScript SDK for the Curviate API.",
6
6
  "license": "MIT",
@@ -8,7 +8,7 @@
8
8
  "homepage": "https://docs.curviate.com",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/curviate/sdk.git"
11
+ "url": "git+https://github.com/curviate/sdk.git"
12
12
  },
13
13
  "bugs": {
14
14
  "url": "https://github.com/curviate/sdk/issues"
@@ -2472,6 +2472,8 @@ export interface paths {
2472
2472
  * @enum {number}
2473
2473
  */
2474
2474
  pinned?: 0 | 1;
2475
+ /** @description The conversation subject or InMail subject line; null when none. */
2476
+ subject?: ((string | null) | null) | null;
2475
2477
  }[];
2476
2478
  /** @description Next-page cursor; null on the last page. */
2477
2479
  cursor?: string | null;
@@ -2856,6 +2858,8 @@ export interface paths {
2856
2858
  * @enum {number}
2857
2859
  */
2858
2860
  pinned?: 0 | 1;
2861
+ /** @description The conversation subject or InMail subject line; null when none. */
2862
+ subject?: ((string | null) | null) | null;
2859
2863
  /** @description The most recent message in the chat, or null if empty. */
2860
2864
  lastMessage?: {
2861
2865
  /**
@@ -4963,13 +4967,13 @@ export interface paths {
4963
4967
  account_id: string;
4964
4968
  /** @description Post body text (1–3000 chars). Not stored or logged. */
4965
4969
  text: string;
4966
- /** @description social_id of a post to repost. Reachability verified live by qa. */
4970
+ /** @description social_id of a post to repost. */
4967
4971
  repost?: string;
4968
- /** @description External URL to include in the post. Reachability verified live by qa. */
4972
+ /** @description External URL to include in the post. */
4969
4973
  external_link?: string;
4970
- /** @description Company page social_id to post as. Reachability verified live by qa. */
4974
+ /** @description Company page social_id to post as. */
4971
4975
  as_organization?: string;
4972
- /** @description JSON-encoded array of mention objects ({name, profile_id, is_company}). Reachability verified live by qa. */
4976
+ /** @description JSON-encoded array of mention objects ({name, profile_id, is_company}). */
4973
4977
  mentions?: {
4974
4978
  /** @description Display name of the mentioned person or company. */
4975
4979
  name: string;
@@ -4978,7 +4982,7 @@ export interface paths {
4978
4982
  /** @description true if the mention is a company page. */
4979
4983
  is_company: boolean;
4980
4984
  }[];
4981
- /** @description Include a job posting in the post. Reachability verified live by qa. */
4985
+ /** @description Include a job posting in the post. */
4982
4986
  include_job_posting?: boolean;
4983
4987
  /**
4984
4988
  * Format: binary
@@ -5139,7 +5143,7 @@ export interface paths {
5139
5143
  query: {
5140
5144
  /** @description Account ID to use for the request. */
5141
5145
  account_id: string;
5142
- /** @description When supplied, returns replies to this comment instead of top-level comments. Reachability verified live by qa. */
5146
+ /** @description When supplied, returns replies to this comment instead of top-level comments. */
5143
5147
  comment_id?: string;
5144
5148
  /** @description Maximum comments to return (1–50, default 20). */
5145
5149
  limit?: number;
@@ -5306,9 +5310,9 @@ export interface paths {
5306
5310
  account_id: string;
5307
5311
  /** @description Comment text (1–1250 chars). Not stored or logged. */
5308
5312
  text: string;
5309
- /** @description When supplied, this comment is a reply to that comment rather than a top-level reply to the post. Reachability verified live by qa. */
5313
+ /** @description When supplied, this comment is a reply to that comment rather than a top-level reply to the post. */
5310
5314
  comment_id?: string;
5311
- /** @description JSON-encoded array of mention objects ({name, profile_id, is_company}). Reachability verified live by qa. */
5315
+ /** @description JSON-encoded array of mention objects ({name, profile_id, is_company}). */
5312
5316
  mentions?: {
5313
5317
  /** @description Display name of the mentioned person or company. */
5314
5318
  name: string;
@@ -5317,9 +5321,9 @@ export interface paths {
5317
5321
  /** @description true if the mention is a company page. */
5318
5322
  is_company: boolean;
5319
5323
  }[];
5320
- /** @description Company page social_id to comment as. Reachability verified live by qa. */
5324
+ /** @description Company page social_id to comment as. */
5321
5325
  as_organization?: string;
5322
- /** @description External URL to include in the comment. Reachability verified live by qa. */
5326
+ /** @description External URL to include in the comment. */
5323
5327
  external_link?: string;
5324
5328
  /**
5325
5329
  * Format: binary
@@ -5468,7 +5472,7 @@ export interface paths {
5468
5472
  };
5469
5473
  /**
5470
5474
  * List a post's reactions
5471
- * @description Returns reactions on a post. Each item includes the UPPERCASE reaction value and author. Error mapping is conservative — raw-path errors map to 502 unless qa verifies a cleaner status.
5475
+ * @description Returns reactions on a post. Each item includes the UPPERCASE reaction value and author.
5472
5476
  */
5473
5477
  get: {
5474
5478
  parameters: {
@@ -5643,9 +5647,9 @@ export interface paths {
5643
5647
  * @enum {string}
5644
5648
  */
5645
5649
  reaction: "like" | "celebrate" | "support" | "love" | "insightful" | "funny";
5646
- /** @description When supplied, the reaction applies to this comment rather than the post. Reachability verified live by qa. */
5650
+ /** @description When supplied, the reaction applies to this comment rather than the post. */
5647
5651
  comment_id?: string;
5648
- /** @description Company page to react as. Reachability verified live by qa. */
5652
+ /** @description Company page to react as. */
5649
5653
  as_organization?: string;
5650
5654
  };
5651
5655
  };
@@ -5774,13 +5778,15 @@ export interface paths {
5774
5778
  };
5775
5779
  /**
5776
5780
  * Retrieve your own profile
5777
- * @description Returns the connected account's own LinkedIn profile — name, headline, location, email, and premium/open-profile status.
5781
+ * @description Returns the connected account's own LinkedIn profile — name, headline, location, email, and premium/open-profile status. Request extra sections via linkedin_sections.
5778
5782
  */
5779
5783
  get: {
5780
5784
  parameters: {
5781
5785
  query: {
5782
5786
  /** @description The connected LinkedIn account to read with (acc_…). Required. */
5783
5787
  account_id: string;
5788
+ /** @description Which profile sections to fetch (repeatable). Allowed values: * (all sections), *_preview, about, experience, education, languages, skills, certifications, volunteering_experience, projects, recommendations_received, recommendations_given, and the _preview variant of each section. Omit for base fields only. */
5789
+ linkedin_sections?: ("*" | "*_preview" | "about" | "about_preview" | "experience" | "experience_preview" | "education" | "education_preview" | "languages" | "languages_preview" | "skills" | "skills_preview" | "certifications" | "certifications_preview" | "volunteering_experience" | "volunteering_experience_preview" | "projects" | "projects_preview" | "recommendations_received" | "recommendations_received_preview" | "recommendations_given" | "recommendations_given_preview")[];
5784
5790
  };
5785
5791
  header?: never;
5786
5792
  path?: never;
@@ -5813,12 +5819,12 @@ export interface paths {
5813
5819
  /** @description Last name. */
5814
5820
  last_name?: string;
5815
5821
  /** @description LinkedIn public identifier (the slug after linkedin.com/in/). */
5816
- public_identifier?: string;
5817
- /** @description Full LinkedIn public profile URL. */
5822
+ public_identifier?: string | null;
5823
+ /** @description Full LinkedIn public profile URL, synthesized from the public identifier; null if the account has none. */
5818
5824
  public_profile_url?: string | null;
5819
5825
  /** @description Profile picture URL, or null if not set. */
5820
5826
  profile_picture_url?: string | null;
5821
- /** @description LinkedIn headline. */
5827
+ /** @description LinkedIn headline. Empty by default for the account's own profile; supply linkedin_sections to return the populated headline (enrichment path). */
5822
5828
  headline?: string | null;
5823
5829
  /** @description Location as set on the profile. */
5824
5830
  location?: string | null;
@@ -5827,11 +5833,35 @@ export interface paths {
5827
5833
  /** @description Current occupation or role. */
5828
5834
  occupation?: string | null;
5829
5835
  /** @description true if this is a LinkedIn Premium account. */
5830
- premium?: boolean;
5836
+ is_premium?: boolean;
5831
5837
  /** @description true if the account has an open profile enabled. */
5832
- open_profile?: boolean;
5838
+ is_open_profile?: boolean;
5833
5839
  /** @description Organizations the account is associated with. */
5834
5840
  organizations?: Record<string, never>[];
5841
+ /** @description Total follower count. Absent by default; present only when linkedin_sections is supplied (enrichment path). */
5842
+ follower_count?: number;
5843
+ /** @description Total connection count. Absent by default; present only when linkedin_sections is supplied (enrichment path). */
5844
+ connections_count?: number;
5845
+ /** @description About/summary text (content pass-through — never stored). Present only when requested via linkedin_sections. */
5846
+ summary?: string | null;
5847
+ /** @description Work experience entries. Present only when requested via linkedin_sections. */
5848
+ work_experience?: Record<string, never>[];
5849
+ /** @description Education entries. Present only when requested via linkedin_sections. */
5850
+ education?: Record<string, never>[];
5851
+ /** @description Skills list. Present only when requested via linkedin_sections. */
5852
+ skills?: string[];
5853
+ /** @description Languages. Present only when requested via linkedin_sections. */
5854
+ languages?: string[];
5855
+ /** @description Certifications. Present only when requested via linkedin_sections. */
5856
+ certifications?: Record<string, never>[];
5857
+ /** @description Projects. Present only when requested via linkedin_sections. */
5858
+ projects?: Record<string, never>[];
5859
+ /** @description Volunteering experience entries. Present only when requested via linkedin_sections. */
5860
+ volunteering_experience?: Record<string, never>[];
5861
+ /** @description Recommendations (content pass-through — never stored). Present only when requested via linkedin_sections. */
5862
+ recommendations?: Record<string, never>[];
5863
+ /** @description Sections LinkedIn rate-limited away for this request. */
5864
+ throttled_sections?: string[];
5835
5865
  };
5836
5866
  };
5837
5867
  };
@@ -8208,7 +8238,7 @@ export interface paths {
8208
8238
  };
8209
8239
  /**
8210
8240
  * Resolve search-filter IDs (Recruiter)
8211
- * @description Resolve human-readable terms to opaque Recruiter filter IDs for use in people search requests. The type parameter selects the filter family; type must be one of the 6 verified Recruiter values: GROUPS, DEPARTMENT, HIRING_PROJECTS, SAVED_SEARCHES, SAVED_FILTERS, DEGREE. Classic-only types (JOB_TITLE, LOCATION, PEOPLE, COMPANY, etc.) are rejected with 400 at schema validation, before any external call. Requires a Recruiter seat.
8241
+ * @description Resolve human-readable terms to opaque Recruiter filter IDs for use in people search requests. The type parameter selects the filter family; type must be one of the 6 Recruiter values: GROUPS, DEPARTMENT, HIRING_PROJECTS, SAVED_SEARCHES, SAVED_FILTERS, DEGREE. Classic-only types (JOB_TITLE, LOCATION, PEOPLE, COMPANY, etc.) are rejected with 400 at schema validation, before any external call. Requires a Recruiter seat.
8212
8242
  */
8213
8243
  get: {
8214
8244
  parameters: {
@@ -12187,7 +12217,7 @@ export interface paths {
12187
12217
  };
12188
12218
  /**
12189
12219
  * Resolve search-filter IDs (Sales Navigator)
12190
- * @description Resolve human-readable terms to opaque Sales Navigator filter IDs for use in people or company search requests. The type parameter selects the filter family; type must be one of the 12 verified SN values. Classic-only types (LOCATION, PEOPLE, JOB_TITLE, etc.) are rejected with 400 at schema validation, before any external call. To resolve PEOPLE IDs (for the connections_of filter), use GET /v1/search/parameters instead. Requires a Sales Navigator seat.
12220
+ * @description Resolve human-readable terms to opaque Sales Navigator filter IDs for use in people or company search requests. The type parameter selects the filter family; type must be one of the 12 Sales Navigator values. Classic-only types (LOCATION, PEOPLE, JOB_TITLE, etc.) are rejected with 400 at schema validation, before any external call. To resolve PEOPLE IDs (for the connections_of filter), use GET /v1/search/parameters instead. Requires a Sales Navigator seat.
12191
12221
  */
12192
12222
  get: {
12193
12223
  parameters: {
@@ -14192,7 +14222,7 @@ export interface paths {
14192
14222
  }[];
14193
14223
  /** @description Messaging events to subscribe to (default: [message.received]) */
14194
14224
  events?: ("message.received" | "message.delivered" | "message.read" | "message.reaction" | "message.edited" | "message.deleted")[];
14195
- /** @description Field-remapping keys for the messaging delivery payload (Array 1) */
14225
+ /** @description Field-remapping keys for the messaging delivery payload */
14196
14226
  data?: string[];
14197
14227
  } | {
14198
14228
  /** @constant */
@@ -14217,7 +14247,7 @@ export interface paths {
14217
14247
  }[];
14218
14248
  /** @description User/relation events to subscribe to (default: [connection.accepted]) */
14219
14249
  events?: "connection.accepted"[];
14220
- /** @description Field-remapping keys for the user/relation delivery payload (Array 2) */
14250
+ /** @description Field-remapping keys for the user/relation delivery payload */
14221
14251
  data?: ("user_provider_id" | "user_full_name" | "user_public_identifier" | "user_profile_url" | "user_picture_url")[];
14222
14252
  } | {
14223
14253
  /** @constant */