@curviate/sdk 0.4.2 → 0.5.0

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,24 @@ Versioning: semantic — minor for additive changes, patch for bug fixes; no sta
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.5.0] — 2026-07-01
11
+
12
+ ### Added
13
+
14
+ - Posts search gains nested `posted_by`, `mentioning`, and `author` filter objects. `posted_by` and `mentioning` take `member` / `company` arrays of opaque IDs (from `GET /v1/search/parameters`); `posted_by` also accepts `me`, `first_connections`, and `people_you_follow` booleans; `author` filters by `industry`, `company`, or `keywords`.
15
+ - Search-parameters items (`GET /v1/search/parameters`) now carry nullable company-disambiguation fields — `industry`, `location`, `headcount` (human-readable size range), and `followers_count` — populated only for `type=COMPANY` results.
16
+
17
+ ### Changed
18
+
19
+ - **Breaking (typed consumers):** people-search `connections_of` and `followers_of` are now arrays of opaque member IDs (`string[]`) instead of a single `string`. Pass one or more IDs resolved from `GET /v1/search/parameters`.
20
+ - **Breaking (typed consumers):** posts-search replaces the flat `member_urn` / `company_urn` filters with the nested `posted_by` / `mentioning` / `author` objects described above.
21
+ - **Breaking (typed consumers):** jobs-search `location_within_area` is now a `number` (search radius in miles) instead of a `string`.
22
+ - Company-size (`headcount`) bucket bounds are documented with their explicit valid values.
23
+ - De-branded the four search method summaries in the SDK JSDoc (`Search people/companies/posts/jobs`).
24
+ - Regenerated types from the current API surface.
25
+
26
+ ---
27
+
10
28
  ## [0.4.2] — 2026-07-01
11
29
 
12
30
  ### Added
package/dist/index.d.ts CHANGED
@@ -13077,6 +13077,14 @@ interface paths {
13077
13077
  title: string;
13078
13078
  /** @description Optional image URL for this filter value (e.g. company logo). Present when available. */
13079
13079
  picture_url?: string;
13080
+ /** @description Industry the company operates in. Present (nullable) only for type=COMPANY, to disambiguate same-named companies. */
13081
+ industry?: string | null;
13082
+ /** @description Company follower count. Present (nullable) only for type=COMPANY. */
13083
+ followers_count?: number | null;
13084
+ /** @description Human-readable company size range (e.g. '51-200'). Present (nullable) only for type=COMPANY. */
13085
+ headcount?: string | null;
13086
+ /** @description Company headquarters location. Present (nullable) only for type=COMPANY. */
13087
+ location?: string | null;
13080
13088
  }[];
13081
13089
  /** @description Paging metadata. */
13082
13090
  paging: {
@@ -13190,7 +13198,7 @@ interface paths {
13190
13198
  get?: never;
13191
13199
  put?: never;
13192
13200
  /**
13193
- * Search LinkedIn people
13201
+ * Search people
13194
13202
  * @description Searches LinkedIn profiles using structured filters or a pasted LinkedIn search URL. The two modes are mutually exclusive: supply either url or structured filters, not both. account_id and pagination live in query params; filters in the request body.
13195
13203
  */
13196
13204
  post: {
@@ -13239,10 +13247,10 @@ interface paths {
13239
13247
  school?: string[];
13240
13248
  /** @description Opaque service IDs from GET /v1/search/parameters?type=SERVICE. */
13241
13249
  service?: string[];
13242
- /** @description Filter to connections of a specific member URN. */
13243
- connections_of?: string;
13244
- /** @description Filter to followers of a specific member URN. */
13245
- followers_of?: string;
13250
+ /** @description Filter to connections of the given members. Array of opaque member IDs from GET /v1/search/parameters?type=CONNECTIONS. */
13251
+ connections_of?: string[];
13252
+ /** @description Filter to followers of the given members. Array of opaque member IDs from GET /v1/search/parameters?type=PEOPLE. */
13253
+ followers_of?: string[];
13246
13254
  /** @description Filter by network distance: 1 = 1st degree, 2 = 2nd degree, 3 = 3rd degree. */
13247
13255
  network_distance?: (1 | 2 | 3)[];
13248
13256
  /** @description Filter by profile language codes. */
@@ -13468,7 +13476,7 @@ interface paths {
13468
13476
  get?: never;
13469
13477
  put?: never;
13470
13478
  /**
13471
- * Search LinkedIn companies
13479
+ * Search companies
13472
13480
  * @description Searches LinkedIn companies using structured filters or a pasted LinkedIn search URL. The two modes are mutually exclusive. No company description or tagline is returned.
13473
13481
  */
13474
13482
  post: {
@@ -13500,9 +13508,9 @@ interface paths {
13500
13508
  has_job_offers?: boolean;
13501
13509
  /** @description Filter by company size buckets. Each entry is a { min, max } object (e.g. { min: 51, max: 200 }). */
13502
13510
  headcount?: {
13503
- /** @description Minimum headcount for this bucket. */
13511
+ /** @description Lower bound of a company-size bucket. Valid values: 1, 11, 51, 201, 501, 1001, 5001, 10001. */
13504
13512
  min: number;
13505
- /** @description Maximum headcount for this bucket. */
13513
+ /** @description Upper bound of a company-size bucket. Valid values: 1, 10, 50, 200, 500, 1000, 5000, 10000. */
13506
13514
  max: number;
13507
13515
  }[];
13508
13516
  /** @description Filter by network distance: 1 = 1st degree, 2 = 2nd degree, 3 = 3rd degree. */
@@ -13672,7 +13680,7 @@ interface paths {
13672
13680
  get?: never;
13673
13681
  put?: never;
13674
13682
  /**
13675
- * Search LinkedIn posts
13683
+ * Search posts
13676
13684
  * @description Searches LinkedIn posts using structured filters or a pasted LinkedIn search URL. The two modes are mutually exclusive. Post body text is never returned — results carry the post URN and engagement metadata only.
13677
13685
  */
13678
13686
  post: {
@@ -13711,22 +13719,34 @@ interface paths {
13711
13719
  * @enum {string}
13712
13720
  */
13713
13721
  content_type?: "videos" | "images" | "live_videos" | "collaborative_articles" | "documents";
13714
- /** @description Filter to posts by a specific member. */
13722
+ /** @description Filter to posts by specific authors (members, companies, yourself, connections, or people you follow). */
13715
13723
  posted_by?: {
13716
- /** @description LinkedIn member URN (e.g. urn:li:member:123). */
13717
- member_urn?: string;
13718
- };
13719
- /** @description Filter to posts mentioning a specific member. */
13724
+ /** @description Opaque member IDs from GET /v1/search/parameters?type=PEOPLE. */
13725
+ member?: string[];
13726
+ /** @description Opaque company IDs from GET /v1/search/parameters?type=COMPANY. */
13727
+ company?: string[];
13728
+ /** @description Restrict to your own posts. */
13729
+ me?: boolean;
13730
+ /** @description Restrict to posts by your 1st-degree connections. */
13731
+ first_connections?: boolean;
13732
+ /** @description Restrict to posts by people you follow. */
13733
+ people_you_follow?: boolean;
13734
+ };
13735
+ /** @description Filter to posts mentioning specific members or companies. */
13720
13736
  mentioning?: {
13721
- /** @description LinkedIn member URN (e.g. urn:li:member:123). */
13722
- member_urn?: string;
13737
+ /** @description Opaque member IDs from GET /v1/search/parameters?type=PEOPLE. */
13738
+ member?: string[];
13739
+ /** @description Opaque company IDs from GET /v1/search/parameters?type=COMPANY. */
13740
+ company?: string[];
13723
13741
  };
13724
- /** @description Filter to posts from a specific author (company or member). */
13742
+ /** @description Filter to posts by author attributes (industry, company, or keywords). */
13725
13743
  author?: {
13726
- /** @description LinkedIn organization URN (e.g. urn:li:organization:456). */
13727
- company_urn?: string;
13728
- /** @description LinkedIn member URN (e.g. urn:li:member:123). */
13729
- member_urn?: string;
13744
+ /** @description Opaque industry IDs from GET /v1/search/parameters?type=INDUSTRY. */
13745
+ industry?: string[];
13746
+ /** @description Opaque company IDs from GET /v1/search/parameters?type=COMPANY. */
13747
+ company?: string[];
13748
+ /** @description Free-text keyword match on the author. */
13749
+ keywords?: string;
13730
13750
  };
13731
13751
  };
13732
13752
  };
@@ -13940,7 +13960,7 @@ interface paths {
13940
13960
  get?: never;
13941
13961
  put?: never;
13942
13962
  /**
13943
- * Search LinkedIn jobs
13963
+ * Search jobs
13944
13964
  * @description Searches LinkedIn job postings using structured filters or a pasted LinkedIn jobs URL. The two modes are mutually exclusive. Job description text is never returned.
13945
13965
  */
13946
13966
  post: {
@@ -13975,8 +13995,8 @@ interface paths {
13975
13995
  region?: string;
13976
13996
  /** @description Opaque location IDs from GET /v1/search/parameters?type=LOCATION. */
13977
13997
  location?: string[];
13978
- /** @description Location area string filter. */
13979
- location_within_area?: string;
13998
+ /** @description Search radius around the location, in miles (positive number). */
13999
+ location_within_area?: number;
13980
14000
  /** @description Opaque industry IDs from GET /v1/search/parameters?type=INDUSTRY. */
13981
14001
  industry?: string[];
13982
14002
  /** @description Filter by seniority levels. */
@@ -15309,7 +15329,7 @@ declare class SearchResource {
15309
15329
  */
15310
15330
  getParameters(query: SearchParametersQuery): Promise<SearchParametersResult>;
15311
15331
  /**
15312
- * Search LinkedIn people with structured filters or a pasted URL.
15332
+ * Search people with structured filters or a pasted URL.
15313
15333
  * `POST /v1/search/people`
15314
15334
  * Cursor passed via query param (not body) — matches the OpenAPI spec.
15315
15335
  */
@@ -15318,7 +15338,7 @@ declare class SearchResource {
15318
15338
  limit?: number;
15319
15339
  }): Promise<SearchPeopleResult>;
15320
15340
  /**
15321
- * Search LinkedIn companies.
15341
+ * Search companies.
15322
15342
  * `POST /v1/search/companies`
15323
15343
  */
15324
15344
  companies(body: SearchCompaniesBody & {
@@ -15326,7 +15346,7 @@ declare class SearchResource {
15326
15346
  limit?: number;
15327
15347
  }): Promise<SearchCompaniesResult>;
15328
15348
  /**
15329
- * Search LinkedIn posts.
15349
+ * Search posts.
15330
15350
  * `POST /v1/search/posts`
15331
15351
  */
15332
15352
  posts(body: SearchPostsBody & {
@@ -15334,7 +15354,7 @@ declare class SearchResource {
15334
15354
  limit?: number;
15335
15355
  }): Promise<SearchPostsResult>;
15336
15356
  /**
15337
- * Search LinkedIn jobs.
15357
+ * Search jobs.
15338
15358
  * `POST /v1/search/jobs`
15339
15359
  */
15340
15360
  jobs(body: SearchJobsBody & {
package/dist/index.js CHANGED
@@ -740,7 +740,7 @@ var SearchResource = class {
740
740
  });
741
741
  }
742
742
  /**
743
- * Search LinkedIn people with structured filters or a pasted URL.
743
+ * Search people with structured filters or a pasted URL.
744
744
  * `POST /v1/search/people`
745
745
  * Cursor passed via query param (not body) — matches the OpenAPI spec.
746
746
  */
@@ -754,7 +754,7 @@ var SearchResource = class {
754
754
  });
755
755
  }
756
756
  /**
757
- * Search LinkedIn companies.
757
+ * Search companies.
758
758
  * `POST /v1/search/companies`
759
759
  */
760
760
  companies(body) {
@@ -767,7 +767,7 @@ var SearchResource = class {
767
767
  });
768
768
  }
769
769
  /**
770
- * Search LinkedIn posts.
770
+ * Search posts.
771
771
  * `POST /v1/search/posts`
772
772
  */
773
773
  posts(body) {
@@ -780,7 +780,7 @@ var SearchResource = class {
780
780
  });
781
781
  }
782
782
  /**
783
- * Search LinkedIn jobs.
783
+ * Search jobs.
784
784
  * `POST /v1/search/jobs`
785
785
  */
786
786
  jobs(body) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curviate/sdk",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "private": false,
5
5
  "description": "TypeScript SDK for the Curviate API.",
6
6
  "license": "MIT",
@@ -12968,6 +12968,14 @@ export interface paths {
12968
12968
  title: string;
12969
12969
  /** @description Optional image URL for this filter value (e.g. company logo). Present when available. */
12970
12970
  picture_url?: string;
12971
+ /** @description Industry the company operates in. Present (nullable) only for type=COMPANY, to disambiguate same-named companies. */
12972
+ industry?: string | null;
12973
+ /** @description Company follower count. Present (nullable) only for type=COMPANY. */
12974
+ followers_count?: number | null;
12975
+ /** @description Human-readable company size range (e.g. '51-200'). Present (nullable) only for type=COMPANY. */
12976
+ headcount?: string | null;
12977
+ /** @description Company headquarters location. Present (nullable) only for type=COMPANY. */
12978
+ location?: string | null;
12971
12979
  }[];
12972
12980
  /** @description Paging metadata. */
12973
12981
  paging: {
@@ -13081,7 +13089,7 @@ export interface paths {
13081
13089
  get?: never;
13082
13090
  put?: never;
13083
13091
  /**
13084
- * Search LinkedIn people
13092
+ * Search people
13085
13093
  * @description Searches LinkedIn profiles using structured filters or a pasted LinkedIn search URL. The two modes are mutually exclusive: supply either url or structured filters, not both. account_id and pagination live in query params; filters in the request body.
13086
13094
  */
13087
13095
  post: {
@@ -13130,10 +13138,10 @@ export interface paths {
13130
13138
  school?: string[];
13131
13139
  /** @description Opaque service IDs from GET /v1/search/parameters?type=SERVICE. */
13132
13140
  service?: string[];
13133
- /** @description Filter to connections of a specific member URN. */
13134
- connections_of?: string;
13135
- /** @description Filter to followers of a specific member URN. */
13136
- followers_of?: string;
13141
+ /** @description Filter to connections of the given members. Array of opaque member IDs from GET /v1/search/parameters?type=CONNECTIONS. */
13142
+ connections_of?: string[];
13143
+ /** @description Filter to followers of the given members. Array of opaque member IDs from GET /v1/search/parameters?type=PEOPLE. */
13144
+ followers_of?: string[];
13137
13145
  /** @description Filter by network distance: 1 = 1st degree, 2 = 2nd degree, 3 = 3rd degree. */
13138
13146
  network_distance?: (1 | 2 | 3)[];
13139
13147
  /** @description Filter by profile language codes. */
@@ -13359,7 +13367,7 @@ export interface paths {
13359
13367
  get?: never;
13360
13368
  put?: never;
13361
13369
  /**
13362
- * Search LinkedIn companies
13370
+ * Search companies
13363
13371
  * @description Searches LinkedIn companies using structured filters or a pasted LinkedIn search URL. The two modes are mutually exclusive. No company description or tagline is returned.
13364
13372
  */
13365
13373
  post: {
@@ -13391,9 +13399,9 @@ export interface paths {
13391
13399
  has_job_offers?: boolean;
13392
13400
  /** @description Filter by company size buckets. Each entry is a { min, max } object (e.g. { min: 51, max: 200 }). */
13393
13401
  headcount?: {
13394
- /** @description Minimum headcount for this bucket. */
13402
+ /** @description Lower bound of a company-size bucket. Valid values: 1, 11, 51, 201, 501, 1001, 5001, 10001. */
13395
13403
  min: number;
13396
- /** @description Maximum headcount for this bucket. */
13404
+ /** @description Upper bound of a company-size bucket. Valid values: 1, 10, 50, 200, 500, 1000, 5000, 10000. */
13397
13405
  max: number;
13398
13406
  }[];
13399
13407
  /** @description Filter by network distance: 1 = 1st degree, 2 = 2nd degree, 3 = 3rd degree. */
@@ -13563,7 +13571,7 @@ export interface paths {
13563
13571
  get?: never;
13564
13572
  put?: never;
13565
13573
  /**
13566
- * Search LinkedIn posts
13574
+ * Search posts
13567
13575
  * @description Searches LinkedIn posts using structured filters or a pasted LinkedIn search URL. The two modes are mutually exclusive. Post body text is never returned — results carry the post URN and engagement metadata only.
13568
13576
  */
13569
13577
  post: {
@@ -13602,22 +13610,34 @@ export interface paths {
13602
13610
  * @enum {string}
13603
13611
  */
13604
13612
  content_type?: "videos" | "images" | "live_videos" | "collaborative_articles" | "documents";
13605
- /** @description Filter to posts by a specific member. */
13613
+ /** @description Filter to posts by specific authors (members, companies, yourself, connections, or people you follow). */
13606
13614
  posted_by?: {
13607
- /** @description LinkedIn member URN (e.g. urn:li:member:123). */
13608
- member_urn?: string;
13609
- };
13610
- /** @description Filter to posts mentioning a specific member. */
13615
+ /** @description Opaque member IDs from GET /v1/search/parameters?type=PEOPLE. */
13616
+ member?: string[];
13617
+ /** @description Opaque company IDs from GET /v1/search/parameters?type=COMPANY. */
13618
+ company?: string[];
13619
+ /** @description Restrict to your own posts. */
13620
+ me?: boolean;
13621
+ /** @description Restrict to posts by your 1st-degree connections. */
13622
+ first_connections?: boolean;
13623
+ /** @description Restrict to posts by people you follow. */
13624
+ people_you_follow?: boolean;
13625
+ };
13626
+ /** @description Filter to posts mentioning specific members or companies. */
13611
13627
  mentioning?: {
13612
- /** @description LinkedIn member URN (e.g. urn:li:member:123). */
13613
- member_urn?: string;
13628
+ /** @description Opaque member IDs from GET /v1/search/parameters?type=PEOPLE. */
13629
+ member?: string[];
13630
+ /** @description Opaque company IDs from GET /v1/search/parameters?type=COMPANY. */
13631
+ company?: string[];
13614
13632
  };
13615
- /** @description Filter to posts from a specific author (company or member). */
13633
+ /** @description Filter to posts by author attributes (industry, company, or keywords). */
13616
13634
  author?: {
13617
- /** @description LinkedIn organization URN (e.g. urn:li:organization:456). */
13618
- company_urn?: string;
13619
- /** @description LinkedIn member URN (e.g. urn:li:member:123). */
13620
- member_urn?: string;
13635
+ /** @description Opaque industry IDs from GET /v1/search/parameters?type=INDUSTRY. */
13636
+ industry?: string[];
13637
+ /** @description Opaque company IDs from GET /v1/search/parameters?type=COMPANY. */
13638
+ company?: string[];
13639
+ /** @description Free-text keyword match on the author. */
13640
+ keywords?: string;
13621
13641
  };
13622
13642
  };
13623
13643
  };
@@ -13831,7 +13851,7 @@ export interface paths {
13831
13851
  get?: never;
13832
13852
  put?: never;
13833
13853
  /**
13834
- * Search LinkedIn jobs
13854
+ * Search jobs
13835
13855
  * @description Searches LinkedIn job postings using structured filters or a pasted LinkedIn jobs URL. The two modes are mutually exclusive. Job description text is never returned.
13836
13856
  */
13837
13857
  post: {
@@ -13866,8 +13886,8 @@ export interface paths {
13866
13886
  region?: string;
13867
13887
  /** @description Opaque location IDs from GET /v1/search/parameters?type=LOCATION. */
13868
13888
  location?: string[];
13869
- /** @description Location area string filter. */
13870
- location_within_area?: string;
13889
+ /** @description Search radius around the location, in miles (positive number). */
13890
+ location_within_area?: number;
13871
13891
  /** @description Opaque industry IDs from GET /v1/search/parameters?type=INDUSTRY. */
13872
13892
  industry?: string[];
13873
13893
  /** @description Filter by seniority levels. */