@curviate/sdk 0.20.1 → 0.21.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/dist/index.d.ts CHANGED
@@ -175,7 +175,7 @@ interface paths {
175
175
  put?: never;
176
176
  /**
177
177
  * Endorse a member's skill
178
- * @description Endorses one specific skill on a target member's profile. You can only endorse the skills of your 1st-degree connections. To obtain the endorsement_id: (1) GET /v1/{account_id}/users/{user_id}?linkedin_sections=linkedin_skills, (2) read the target skill's endorsement_id from the skills section, this field is present ONLY for connections you are eligible to endorse (it is omitted for users outside your network and on your own profile, so this workflow requires the target to be a 1st-degree connection), (3) call this endpoint with that value. user_id must be the LinkedIn member ID (ACo… format); a public identifier does not resolve on this endpoint.
178
+ * @description Endorses one specific skill on a target member's profile. You can only endorse the skills of your 1st-degree connections. To obtain the endorsement_id: (1) GET /v1/{account_id}/users/{user_id}?linkedin_sections=linkedin_skills, (2) read the target skill's endorsement_id from the skills section, this field is present ONLY for connections you are eligible to endorse (it is omitted for users outside your network and on your own profile, so this workflow requires the target to be a 1st-degree connection), (3) call this endpoint with that value. user_id must be the LinkedIn member ID (ACo... format); a public identifier does not resolve on this endpoint.
179
179
  */
180
180
  post: operations["postV1AccountIdUsersUserIdEndorseSkill"];
181
181
  delete?: never;
@@ -439,7 +439,7 @@ interface paths {
439
439
  put?: never;
440
440
  /**
441
441
  * Invite connections to follow a company page
442
- * @description Invites one or more of the connected account's 1st-degree connections to follow a company page it administers with the invite-to-follow entitlement. Pass the AC… member ids from an invitable-followers read. Returns one outcome per invitee, in request order, for an all-valid request. If any invitee id is invalid, the whole request is rejected (404), with no partial success. Re-inviting an already-invited member is a safe no-op (the same invitation id, never a duplicate). Only identifiers transit. Nothing is stored.
442
+ * @description Invites one or more of the connected account's 1st-degree connections to follow a company page it administers with the invite-to-follow entitlement. Pass the AC... member ids from an invitable-followers read. Returns one outcome per invitee, in request order, for an all-valid request. If any invitee id is invalid, the whole request is rejected (404), with no partial success. Re-inviting an already-invited member is a safe no-op (the same invitation id, never a duplicate). Only identifiers transit. Nothing is stored.
443
443
  */
444
444
  post: operations["postV1AccountIdCompaniesIdentifierFollowInvite"];
445
445
  delete?: never;
@@ -543,7 +543,7 @@ interface paths {
543
543
  put?: never;
544
544
  /**
545
545
  * Reply as the company page
546
- * @description Sends a message into an existing company-inbox conversation, as the page. chat_id is the conversation id from GET /v1/{account_id}/companies/{identifier}/chats, the same 2-… id this group's chat reads return, passed verbatim. The connected account must administer the page. Reply-only: a page can never start a new conversation, only answer an existing one. Send application/json with text, base64 attachments (max 5 MiB per file), or both; at least one of text or attachments is required. Message content passes through to the platform and is never stored. The response's sent_as field names the acting identity that was actually used.
546
+ * @description Sends a message into an existing company-inbox conversation, as the page. chat_id is the conversation id from GET /v1/{account_id}/companies/{identifier}/chats, the same 2-... id this group's chat reads return, passed verbatim. The connected account must administer the page. Reply-only: a page can never start a new conversation, only answer an existing one. Send application/json with text, base64 attachments (max 5 MiB per file), or both; at least one of text or attachments is required. Message content passes through to the platform and is never stored. The response's sent_as field names the acting identity that was actually used.
547
547
  */
548
548
  post: operations["postV1AccountIdCompaniesIdentifierChatsChatIdMessages"];
549
549
  delete?: never;
@@ -1021,7 +1021,7 @@ interface paths {
1021
1021
  };
1022
1022
  /**
1023
1023
  * List inboxes
1024
- * @description Returns the account's personal inbox plus, when the company product is attached, one entry per company page × folder (id like 'COMPANY_83734124_PRIMARY'). Company inboxes carry reply_only:true; company pages can only reply to existing conversations, never start one. company_id is resolved by correlating the page name against the account's managed pages; an uncorrelatable page returns company_id:null, never a fabricated id. When no company inbox exists, hint names the Company Pages reconnect requirement instead of returning silently empty.
1024
+ * @description Returns the account's personal inbox plus, when the company product is attached, one entry per company page x folder (id like 'COMPANY_83734124_PRIMARY'). Company inboxes carry reply_only:true; company pages can only reply to existing conversations, never start one. company_id is resolved by correlating the page name against the account's managed pages; an uncorrelatable page returns company_id:null, never a fabricated id. When no company inbox exists, hint names the Company Pages reconnect requirement instead of returning silently empty.
1025
1025
  */
1026
1026
  get: operations["getV1AccountIdInboxes"];
1027
1027
  put?: never;
@@ -1041,7 +1041,7 @@ interface paths {
1041
1041
  };
1042
1042
  /**
1043
1043
  * List an inbox's conversations
1044
- * @description Returns a paginated list of an inbox's conversations, newest-activity-first. Each chat's id is send-ready: pass it directly to the send-message endpoint to reply; a company inbox's chat id (e.g. 'COMPANY_83734124_2-…') replies AS THE PAGE, no separate parameter needed. Works identically for personal (CLASSIC_) inboxes. Company pages are reply-only (reply_only:true on the inbox, from GET /inboxes); they cannot start a new conversation. A malformed inbox_id returns 400 INVALID_REQUEST; a well-formed id for a mailbox this account does not administer returns 403 RESOURCE_ACCESS_RESTRICTED (no existence disclosure); there is no 404 for this endpoint.
1044
+ * @description Returns a paginated list of an inbox's conversations, newest-activity-first. Each chat's id is send-ready: pass it directly to the send-message endpoint to reply; a company inbox's chat id (e.g. 'COMPANY_83734124_2-...') replies AS THE PAGE, no separate parameter needed. Works identically for personal (CLASSIC_) inboxes. Company pages are reply-only (reply_only:true on the inbox, from GET /inboxes); they cannot start a new conversation. A malformed inbox_id returns 400 INVALID_REQUEST; a well-formed id for a mailbox this account does not administer returns 403 RESOURCE_ACCESS_RESTRICTED (no existence disclosure); there is no 404 for this endpoint.
1045
1045
  */
1046
1046
  get: operations["getV1AccountIdInboxesInboxIdChats"];
1047
1047
  put?: never;
@@ -1727,7 +1727,7 @@ interface paths {
1727
1727
  put?: never;
1728
1728
  /**
1729
1729
  * Start a chat (Recruiter)
1730
- * @description Send an opening InMail-style message to one or more Recruiter member IDs (AE… format). subject and signature are REQUIRED for Recruiter (InMail-based messaging). Accepts optional base64-encoded file / voice / video attachments (application/json only; multipart is not supported). Recruiter PRO: optionally schedule a follow-up. Requires a Recruiter seat.
1730
+ * @description Send an opening InMail-style message to one or more Recruiter member IDs (AE... format). subject and signature are REQUIRED for Recruiter (InMail-based messaging). Accepts optional base64-encoded file / voice / video attachments (application/json only; multipart is not supported). Recruiter PRO: optionally schedule a follow-up. Requires a Recruiter seat.
1731
1731
  */
1732
1732
  post: operations["postV1AccountIdRecruiterChats"];
1733
1733
  delete?: never;
@@ -1851,7 +1851,7 @@ interface paths {
1851
1851
  put?: never;
1852
1852
  /**
1853
1853
  * Search a project's talent pool
1854
- * @description Search a Recruiter project's talent pool. A POST body carries the required channel_id (the project's own RECRUITER_SEARCH talent-pool channel, read it off talent_pool.channels[] of GET …/recruiter/projects/{project_id}) plus the (all-optional) people-search filter set. Pagination is driven by the limit (1-100) and cursor query params. Requires a Recruiter seat.
1854
+ * @description Search a Recruiter project's talent pool. A POST body carries the required channel_id (the project's own RECRUITER_SEARCH talent-pool channel, read it off talent_pool.channels[] of GET .../recruiter/projects/{project_id}) plus the (all-optional) people-search filter set. Pagination is driven by the limit (1-100) and cursor query params. Requires a Recruiter seat.
1855
1855
  */
1856
1856
  post: operations["postV1AccountIdRecruiterProjectsProjectIdTalentPoolSearch"];
1857
1857
  delete?: never;
@@ -1999,7 +1999,7 @@ interface paths {
1999
1999
  put?: never;
2000
2000
  /**
2001
2001
  * Publish a job posting
2002
- * @description REAL MONEY: PROMOTED and PROMOTED_PLUS spend on the connected account's LinkedIn payment method. Providing budget IS the explicit opt-in to spend, there is no separate confirm flag. FREE requires free-posting eligibility (check GET …/budget's free.eligible first). bypass_email_verification skips the on-behalf-of-company posting eligibility check (replaces the retired publish-verification checkpoint, there is no separate checkpoint-solve step). Requires a Recruiter seat.
2002
+ * @description REAL MONEY: PROMOTED and PROMOTED_PLUS spend on the connected account's LinkedIn payment method. Providing budget IS the explicit opt-in to spend, there is no separate confirm flag. FREE requires free-posting eligibility (check GET .../budget's free.eligible first). bypass_email_verification skips the on-behalf-of-company posting eligibility check (replaces the retired publish-verification checkpoint, there is no separate checkpoint-solve step). Requires a Recruiter seat.
2003
2003
  */
2004
2004
  post: operations["postV1AccountIdRecruiterProjectsProjectIdJobsJobIdPublish"];
2005
2005
  delete?: never;
@@ -2059,7 +2059,7 @@ interface paths {
2059
2059
  put?: never;
2060
2060
  /**
2061
2061
  * List applicants in a project's talent pool
2062
- * @description List applicants in a Recruiter project's talent pool (POST-as-list; the body carries filters, no state mutates). The channel_id (a JOB_POSTING talent-pool channel) is REQUIRED, read it off talent_pool.channels[] of GET …/recruiter/projects/{project_id}. Requires a Recruiter seat.
2062
+ * @description List applicants in a Recruiter project's talent pool (POST-as-list; the body carries filters, no state mutates). The channel_id (a JOB_POSTING talent-pool channel) is REQUIRED, read it off talent_pool.channels[] of GET .../recruiter/projects/{project_id}. Requires a Recruiter seat.
2063
2063
  */
2064
2064
  post: operations["postV1AccountIdRecruiterProjectsProjectIdTalentPoolApplicants"];
2065
2065
  delete?: never;
@@ -2077,7 +2077,7 @@ interface paths {
2077
2077
  };
2078
2078
  /**
2079
2079
  * Get one talent-pool applicant
2080
- * @description Retrieve full detail for a single talent-pool applicant, the profile is GUARANTEED full (includes PII emails/phone_numbers). Unknown applicant_id or project_id → 404 RESOURCE_NOT_FOUND. Requires a Recruiter seat.
2080
+ * @description Retrieve full detail for a single talent-pool applicant, the profile is GUARANTEED full (includes PII emails/phone_numbers). Unknown applicant_id or project_id -> 404 RESOURCE_NOT_FOUND. Requires a Recruiter seat.
2081
2081
  */
2082
2082
  get: operations["getV1AccountIdRecruiterProjectsProjectIdTalentPoolApplicantsApplicantId"];
2083
2083
  put?: never;
@@ -2097,7 +2097,7 @@ interface paths {
2097
2097
  };
2098
2098
  /**
2099
2099
  * Download an applicant's résumé
2100
- * @description Stream the résumé file for a talent-pool applicant as raw bytes. Curviate never caches, stores, or logs the résumé body. Gated by has_resume on the applicant detail. An applicant with no résumé on file → 404 RESOURCE_NOT_FOUND; a résumé still generating upstream → 503 (retry shortly). Requires a Recruiter seat.
2100
+ * @description Stream the résumé file for a talent-pool applicant as raw bytes. Curviate never caches, stores, or logs the résumé body. Gated by has_resume on the applicant detail. An applicant with no résumé on file -> 404 RESOURCE_NOT_FOUND; a résumé still generating upstream -> 503 (retry shortly). Requires a Recruiter seat.
2101
2101
  */
2102
2102
  get: operations["getV1AccountIdRecruiterProjectsProjectIdTalentPoolApplicantsApplicantIdResume"];
2103
2103
  put?: never;
@@ -2119,7 +2119,7 @@ interface paths {
2119
2119
  put?: never;
2120
2120
  /**
2121
2121
  * Start a chat (Sales Navigator)
2122
- * @description Send an opening InMail-style message to one or more Sales Navigator members (ACw… IDs). subject is REQUIRED for Sales Navigator (InMail-based messaging). Accepts optional base64-encoded file / voice / video attachments (application/json only; multipart is not supported). Requires a Sales Navigator seat.
2122
+ * @description Send an opening InMail-style message to one or more Sales Navigator members (ACw... IDs). subject is REQUIRED for Sales Navigator (InMail-based messaging). Accepts optional base64-encoded file / voice / video attachments (application/json only; multipart is not supported). Requires a Sales Navigator seat.
2123
2123
  */
2124
2124
  post: operations["postV1AccountIdSalesNavigatorChats"];
2125
2125
  delete?: never;
@@ -2467,7 +2467,7 @@ interface paths {
2467
2467
  put?: never;
2468
2468
  /**
2469
2469
  * Poll a mobile-app-approval checkpoint
2470
- * @description Poll the pending mobile-app-approval challenge for an account and advance it. This is the completion driver for mobile_app_approval (and the in-app arm of otp_or_mobile_app_approval): call it repeatedly until the account is active. Returns object:"account" + status:"active" once approved; object:"checkpoint" + status:"pending" while still waiting; status:"checkpoint_required" (with challenge_type) when the approval chained to a new challenge (e.g. approval → 2FA), switch to POST /v1/auth/checkpoint/solve for the new type; status:"expired"/"failed" on timeout/failure. A code-based checkpoint polled here returns 422 directing you to POST /v1/auth/checkpoint/solve instead. `account_id` (in the body) identifies the mid-flight connect.
2470
+ * @description Poll the pending mobile-app-approval challenge for an account and advance it. This is the completion driver for mobile_app_approval (and the in-app arm of otp_or_mobile_app_approval): call it repeatedly until the account is active. Returns object:"account" + status:"active" once approved; object:"checkpoint" + status:"pending" while still waiting; status:"checkpoint_required" (with challenge_type) when the approval chained to a new challenge (e.g. approval -> 2FA), switch to POST /v1/auth/checkpoint/solve for the new type; status:"expired"/"failed" on timeout/failure. A code-based checkpoint polled here returns 422 directing you to POST /v1/auth/checkpoint/solve instead. `account_id` (in the body) identifies the mid-flight connect.
2471
2471
  */
2472
2472
  post: operations["postV1AuthCheckpointPoll"];
2473
2473
  delete?: never;
@@ -2485,7 +2485,7 @@ interface paths {
2485
2485
  };
2486
2486
  /**
2487
2487
  * Get a connect session's status
2488
- * @description Return the current status of a credential connect session, keyed by its account id (acc_…, from auth/intent or a checkpoint response). status is one of checkpoint_required / done / expired / failed; checkpoint_required carries challenge_type. account_id is present once status is done. Poll until status leaves checkpoint_required.
2488
+ * @description Return the current status of a credential connect session, keyed by its account id (acc_..., from auth/intent or a checkpoint response). status is one of checkpoint_required / done / expired / failed; checkpoint_required carries challenge_type. account_id is present once status is done. Poll until status leaves checkpoint_required.
2489
2489
  */
2490
2490
  get: operations["getV1AuthSessionsSessionId"];
2491
2491
  put?: never;
@@ -2540,6 +2540,26 @@ interface paths {
2540
2540
  patch?: never;
2541
2541
  trace?: never;
2542
2542
  };
2543
+ "/v1/webhooks/{id}/test": {
2544
+ parameters: {
2545
+ query?: never;
2546
+ header?: never;
2547
+ path?: never;
2548
+ cookie?: never;
2549
+ };
2550
+ get?: never;
2551
+ put?: never;
2552
+ /**
2553
+ * Send a test delivery
2554
+ * @description Queues a synthetic delivery to this webhook so you can confirm your endpoint really receives and verifies deliveries, without waiting for a real event. It travels the normal path: the same signature construction, the same custom headers, the same delivery record, the same retry schedule. The event name is always webhook.test, which is not in the event catalogue and cannot be subscribed to, so it can never be mistaken for a real event. The payload carries no LinkedIn content. Match data.test_id in what arrives against the test_id in this response.
2555
+ */
2556
+ post: operations["postV1WebhooksIdTest"];
2557
+ delete?: never;
2558
+ options?: never;
2559
+ head?: never;
2560
+ patch?: never;
2561
+ trace?: never;
2562
+ };
2543
2563
  "/v1/webhooks/{id}": {
2544
2564
  parameters: {
2545
2565
  query?: never;
@@ -2620,10 +2640,10 @@ interface components {
2620
2640
  /** @description Present when something about this response is true but not visible in it. On a search, an entry names a filter value we could not check before sending it, or reports that some of the people on the page were not disclosed to the connected account, so an unexpected result count is explicable rather than silent. Branch on each entry's code, never on its message. */
2621
2641
  notices?: {
2622
2642
  /**
2623
- * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on however large total_count is.
2643
+ * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on, even when more pages follow. PAGE_TRUNCATED: this page is short because the search stopped fetching upstream pages, not because the results ran out; follow cursor, and treat only a null cursor as the end.
2624
2644
  * @enum {string}
2625
2645
  */
2626
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
2646
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
2627
2647
  /** @description One sentence explaining the condition and how to resolve it. */
2628
2648
  message: string;
2629
2649
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -2655,7 +2675,7 @@ interface operations {
2655
2675
  };
2656
2676
  header?: never;
2657
2677
  path: {
2658
- /** @description The account ID (`acc_…`) to use for the request. */
2678
+ /** @description The account ID (`acc_...`) to use for the request. */
2659
2679
  account_id: string;
2660
2680
  /** @description "me" for the caller's own account, or another LinkedIn user's public identifier, member ID, or profile URL. Note on the skills section: a skill's `endorsement_id` (the value needed to endorse that skill) is returned only for users you are eligible to endorse; i.e. your 1st-degree connections. For users outside your network, and on your own profile, the skills section still lists each skill (name, endorsement_count, endorsed, insights) but omits `endorsement_id`. This depends on the connection, not on the identifier form used to look the user up. */
2661
2681
  user_id: string;
@@ -2765,38 +2785,397 @@ interface operations {
2765
2785
  } & {
2766
2786
  [key: string]: unknown;
2767
2787
  })[];
2768
- /** @description Work experience entries. Present only when requested via linkedin_sections. */
2769
- experience?: {
2788
+ /** @description Work experience entries, most recent first. Present only when linkedin_experience is requested via linkedin_sections. An entry with no ended_on is the member's current role. */
2789
+ experience?: ({
2790
+ /** @description Identifier of this work-experience entry. Not a company identifier. */
2791
+ id?: string;
2792
+ /** @description The employer. An object, not a name string. */
2793
+ company?: {
2794
+ /** @description The organization's platform identifier, when known. */
2795
+ id?: string | null;
2796
+ /** @description The organization's name. */
2797
+ name?: string;
2798
+ /** @description The organization's public URL slug, when known. */
2799
+ public_identifier?: string;
2800
+ /** @description The organization's logo URL. */
2801
+ picture_url?: string;
2802
+ /** @description Full LinkedIn URL for the organization. */
2803
+ profile_url?: string;
2804
+ /** @description The organization's industry labels. */
2805
+ industries?: string[];
2806
+ } & {
2807
+ [key: string]: unknown;
2808
+ };
2809
+ /** @description Job title held. This is the title field; there is no 'position' or 'title' key. */
2810
+ job_title?: string;
2811
+ /** @description Date the role started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value uses day 01, so read the month and year and ignore the day. */
2812
+ started_on?: string;
2813
+ /** @description Date the role ended. Absent while the role is ongoing, so an absent value means current, not unknown. Formatted MM/DD/YYYY, month first, and the day is a derived offset rather than a real date: observed values are the first of the end month plus 29 days, which stays inside the end month for a 30 or 31 day month but pushes a February end into the following March. Subtract 29 days before reading the month and year, otherwise a February end reads as March and overstates the tenure by a month. */
2814
+ ended_on?: string;
2815
+ /** @description Where the role was based, as written on the profile. */
2816
+ location?: string;
2817
+ /** @description The member's own description of the role. Passes through verbatim, never stored. */
2818
+ description?: string;
2819
+ /** @description Employment arrangement, e.g. PERMANENT, PERMANENT_PART_TIME, CONTRACT, CONTRACT_PART_TIME, FREELANCE, SELF_EMPLOYED, INTERNSHIP, APPRENTICESHIP, TEMPORARY, VOLUNTEERING. Not present on every entry. */
2820
+ employment_type?: string;
2821
+ /** @description Working arrangement: ON_SITE, HYBRID, or REMOTE. Not present on every entry. */
2822
+ workplace_type?: string;
2823
+ /** @description Skills the member associated with this role. */
2824
+ skills?: string[];
2825
+ /** @description A short summary line of the associated skills. */
2826
+ skills_preview?: string;
2827
+ } & {
2770
2828
  [key: string]: unknown;
2771
- }[];
2772
- /** @description Education entries. Present only when requested via linkedin_sections. */
2773
- education?: {
2829
+ })[];
2830
+ /** @description Education entries. Present only when linkedin_education is requested via linkedin_sections. */
2831
+ education?: ({
2832
+ /** @description Identifier of this education entry. */
2833
+ id?: string;
2834
+ /** @description The institution. An object, not a name string. */
2835
+ school?: {
2836
+ /** @description The organization's platform identifier, when known. */
2837
+ id?: string | null;
2838
+ /** @description The organization's name. */
2839
+ name?: string;
2840
+ /** @description The organization's public URL slug, when known. */
2841
+ public_identifier?: string;
2842
+ /** @description The organization's logo URL. */
2843
+ picture_url?: string;
2844
+ /** @description Full LinkedIn URL for the organization. */
2845
+ profile_url?: string;
2846
+ /** @description The organization's industry labels. */
2847
+ industries?: string[];
2848
+ } & {
2849
+ [key: string]: unknown;
2850
+ };
2851
+ /** @description Name of the degree or qualification. */
2852
+ degree?: string;
2853
+ /** @description Subjects studied. Plural and always an array, even for a single subject. */
2854
+ fields_of_study?: string[];
2855
+ /** @description Grade or academic level reached. */
2856
+ grade?: string;
2857
+ /** @description Activities carried out during the studies. */
2858
+ activities?: string;
2859
+ /** @description The member's own description of the studies. Passes through verbatim, never stored. */
2860
+ description?: string;
2861
+ /** @description Date the studies started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value uses day 01, so read the month and year and ignore the day. */
2862
+ started_on?: string;
2863
+ /** @description Date the studies ended. Absent while the entry is ongoing, so an absent value means current, not unknown. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on this response: a work-experience end date carries a 29 day offset that can push the value into the following month, while a certification's expiry date uses day 01. Confirm against an entry whose real dates you know before deriving a month from the day here. */
2864
+ ended_on?: string;
2865
+ /** @description Skills the member associated with the studies. */
2866
+ skills?: string[];
2867
+ /** @description A short summary line of the associated skills. */
2868
+ skills_preview?: string;
2869
+ } & {
2774
2870
  [key: string]: unknown;
2775
- }[];
2776
- /** @description Languages entries. Present only when requested via linkedin_sections. */
2777
- languages?: {
2871
+ })[];
2872
+ /** @description Language entries. Present only when linkedin_languages is requested via linkedin_sections. */
2873
+ languages?: ({
2874
+ /** @description Name of the language. */
2875
+ language?: string;
2876
+ /** @description Stated fluency: ELEMENTARY, LIMITED_WORKING, PROFESSIONAL_WORKING, FULL_PROFESSIONAL, or NATIVE_OR_BILINGUAL. */
2877
+ proficiency?: string;
2878
+ } & {
2778
2879
  [key: string]: unknown;
2779
- }[];
2780
- /** @description Certification entries. Present only when requested via linkedin_sections. */
2781
- certifications?: {
2880
+ })[];
2881
+ /** @description Certification entries. Present only when linkedin_certifications is requested via linkedin_sections. */
2882
+ certifications?: ({
2883
+ /** @description Name of the certification. This is the name field; there is no 'name' key. */
2884
+ title?: string;
2885
+ /** @description The issuing body. An object, not a name string. */
2886
+ organization?: {
2887
+ /** @description The organization's platform identifier, when known. */
2888
+ id?: string | null;
2889
+ /** @description The organization's name. */
2890
+ name?: string;
2891
+ /** @description The organization's public URL slug, when known. */
2892
+ public_identifier?: string;
2893
+ /** @description The organization's logo URL. */
2894
+ picture_url?: string;
2895
+ /** @description Full LinkedIn URL for the organization. */
2896
+ profile_url?: string;
2897
+ /** @description The organization's industry labels. */
2898
+ industries?: string[];
2899
+ } & {
2900
+ [key: string]: unknown;
2901
+ };
2902
+ /** @description Date the certification was issued. Formatted MM/DD/YYYY, month first. The platform records month and year only. */
2903
+ issued_on?: string;
2904
+ /** @description Date the certification expires. Absent when it does not expire. Formatted MM/DD/YYYY, month first. The platform records month and year only. */
2905
+ expires_on?: string;
2906
+ /** @description License or credential identifier. */
2907
+ license?: string;
2908
+ /** @description Public URL for the certification. */
2909
+ url?: string;
2910
+ /** @description Skills the member associated with the certification. */
2911
+ skills?: string[];
2912
+ /** @description A short summary line of the associated skills. */
2913
+ skills_preview?: string;
2914
+ } & {
2782
2915
  [key: string]: unknown;
2783
- }[];
2784
- /** @description Volunteering entries. Present only when requested via linkedin_sections. */
2785
- volunteer_experience?: {
2916
+ })[];
2917
+ /** @description Volunteering entries. Present only when linkedin_volunteer_experience is requested via linkedin_sections. */
2918
+ volunteer_experience?: ({
2919
+ /** @description The organization volunteered for. An object, not a name string. */
2920
+ organization?: {
2921
+ /** @description The organization's platform identifier, when known. */
2922
+ id?: string | null;
2923
+ /** @description The organization's name. */
2924
+ name?: string;
2925
+ /** @description The organization's public URL slug, when known. */
2926
+ public_identifier?: string;
2927
+ /** @description The organization's logo URL. */
2928
+ picture_url?: string;
2929
+ /** @description Full LinkedIn URL for the organization. */
2930
+ profile_url?: string;
2931
+ /** @description The organization's industry labels. */
2932
+ industries?: string[];
2933
+ } & {
2934
+ [key: string]: unknown;
2935
+ };
2936
+ /** @description Role held while volunteering. */
2937
+ role?: string;
2938
+ /** @description The cause supported, as categorised by the platform. */
2939
+ cause?: string;
2940
+ /** @description The member's own description of the work. Passes through verbatim, never stored. */
2941
+ description?: string;
2942
+ /** @description Date the work started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value uses day 01, so read the month and year and ignore the day. */
2943
+ started_on?: string;
2944
+ /** @description Date the work ended. Absent while the entry is ongoing, so an absent value means current, not unknown. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on this response: a work-experience end date carries a 29 day offset that can push the value into the following month, while a certification's expiry date uses day 01. Confirm against an entry whose real dates you know before deriving a month from the day here. */
2945
+ ended_on?: string;
2946
+ } & {
2786
2947
  [key: string]: unknown;
2787
- }[];
2788
- /** @description Project entries. Present only when requested via linkedin_sections. */
2789
- projects?: {
2948
+ })[];
2949
+ /** @description Project entries. Present only when linkedin_projects is requested via linkedin_sections. */
2950
+ projects?: ({
2951
+ /** @description Name of the project. */
2952
+ name?: string;
2953
+ /** @description The member's own description of the project. Passes through verbatim, never stored. */
2954
+ description?: string;
2955
+ /** @description Other members credited on the project. */
2956
+ contributors?: ({
2957
+ /** @description The member's opaque identifier. */
2958
+ id?: string;
2959
+ /** @description Object discriminator for the embedded member. */
2960
+ object?: string;
2961
+ /** @description Profile type (e.g. individual). */
2962
+ type?: string;
2963
+ /** @description The member's display name. */
2964
+ display_name?: string;
2965
+ /** @description First name. */
2966
+ first_name?: string;
2967
+ /** @description Last name. */
2968
+ last_name?: string;
2969
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
2970
+ public_identifier?: string;
2971
+ /** @description Full LinkedIn profile URL. */
2972
+ profile_url?: string;
2973
+ /** @description Profile picture URL. */
2974
+ public_picture_url?: string;
2975
+ /** @description The member's professional headline. */
2976
+ description?: string;
2977
+ } & {
2978
+ [key: string]: unknown;
2979
+ })[];
2980
+ /** @description Skills the member associated with the project. */
2981
+ skills?: string[];
2982
+ /** @description A short summary line of the associated skills. */
2983
+ skills_preview?: string;
2984
+ /** @description Date the project started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value uses day 01, so read the month and year and ignore the day. */
2985
+ started_on?: string;
2986
+ /** @description Date the project ended. Absent while the entry is ongoing, so an absent value means current, not unknown. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on this response: a work-experience end date carries a 29 day offset that can push the value into the following month, while a certification's expiry date uses day 01. Confirm against an entry whose real dates you know before deriving a month from the day here. */
2987
+ ended_on?: string;
2988
+ } & {
2790
2989
  [key: string]: unknown;
2791
- }[];
2792
- /** @description Recommendations received/given. Present only when requested via linkedin_sections. */
2990
+ })[];
2991
+ /** @description Recommendations written about and by this member. An object with two arrays, not an array. Present only when linkedin_recommendations is requested via linkedin_sections. */
2793
2992
  recommendations?: {
2993
+ /** @description Recommendations written about this member. */
2994
+ received?: ({
2995
+ /** @description The recommendation text. Passes through verbatim, never stored. */
2996
+ text?: string;
2997
+ /** @description How the two members worked together, as shown on the profile. */
2998
+ caption?: string;
2999
+ /** @description When the recommendation was written. */
3000
+ created_on?: string;
3001
+ /** @description The other member involved. May be null when the platform withholds the identity. */
3002
+ user?: {
3003
+ /** @description The member's opaque identifier. */
3004
+ id?: string;
3005
+ /** @description Object discriminator for the embedded member. */
3006
+ object?: string;
3007
+ /** @description Profile type (e.g. individual). */
3008
+ type?: string;
3009
+ /** @description The member's display name. */
3010
+ display_name?: string;
3011
+ /** @description First name. */
3012
+ first_name?: string;
3013
+ /** @description Last name. */
3014
+ last_name?: string;
3015
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
3016
+ public_identifier?: string;
3017
+ /** @description Full LinkedIn profile URL. */
3018
+ profile_url?: string;
3019
+ /** @description Profile picture URL. */
3020
+ public_picture_url?: string;
3021
+ /** @description The member's professional headline. */
3022
+ description?: string;
3023
+ } & {
3024
+ [key: string]: unknown;
3025
+ };
3026
+ } & {
3027
+ [key: string]: unknown;
3028
+ })[];
3029
+ /** @description Recommendations this member wrote for others. */
3030
+ given?: ({
3031
+ /** @description The recommendation text. Passes through verbatim, never stored. */
3032
+ text?: string;
3033
+ /** @description How the two members worked together, as shown on the profile. */
3034
+ caption?: string;
3035
+ /** @description When the recommendation was written. */
3036
+ created_on?: string;
3037
+ /** @description The other member involved. May be null when the platform withholds the identity. */
3038
+ user?: {
3039
+ /** @description The member's opaque identifier. */
3040
+ id?: string;
3041
+ /** @description Object discriminator for the embedded member. */
3042
+ object?: string;
3043
+ /** @description Profile type (e.g. individual). */
3044
+ type?: string;
3045
+ /** @description The member's display name. */
3046
+ display_name?: string;
3047
+ /** @description First name. */
3048
+ first_name?: string;
3049
+ /** @description Last name. */
3050
+ last_name?: string;
3051
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
3052
+ public_identifier?: string;
3053
+ /** @description Full LinkedIn profile URL. */
3054
+ profile_url?: string;
3055
+ /** @description Profile picture URL. */
3056
+ public_picture_url?: string;
3057
+ /** @description The member's professional headline. */
3058
+ description?: string;
3059
+ } & {
3060
+ [key: string]: unknown;
3061
+ };
3062
+ } & {
3063
+ [key: string]: unknown;
3064
+ })[];
3065
+ } & {
2794
3066
  [key: string]: unknown;
2795
3067
  };
2796
- /** @description Interest entries. Present only when requested via linkedin_sections. */
3068
+ /** @description What this member follows, grouped by kind. An object, not an array. Present only when linkedin_interests is requested via linkedin_sections. */
2797
3069
  interests?: {
3070
+ /** @description Followed LinkedIn Top Voices. */
3071
+ top_voices?: ({
3072
+ /** @description The member's opaque identifier. */
3073
+ id?: string;
3074
+ /** @description Object discriminator for the embedded member. */
3075
+ object?: string;
3076
+ /** @description Profile type (e.g. individual). */
3077
+ type?: string;
3078
+ /** @description The member's display name. */
3079
+ display_name?: string;
3080
+ /** @description First name. */
3081
+ first_name?: string;
3082
+ /** @description Last name. */
3083
+ last_name?: string;
3084
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
3085
+ public_identifier?: string;
3086
+ /** @description Full LinkedIn profile URL. */
3087
+ profile_url?: string;
3088
+ /** @description Profile picture URL. */
3089
+ public_picture_url?: string;
3090
+ /** @description The member's professional headline. */
3091
+ description?: string;
3092
+ /** @description Follow-relationship detail for this member. */
3093
+ specifics?: {
3094
+ /** @description Whether this member is followed. */
3095
+ is_following?: boolean;
3096
+ /** @description How many members follow them. */
3097
+ followers_count?: number;
3098
+ } & {
3099
+ [key: string]: unknown;
3100
+ };
3101
+ } & {
3102
+ [key: string]: unknown;
3103
+ })[];
3104
+ /** @description Followed companies. */
3105
+ companies?: ({
3106
+ /** @description Object discriminator for the followed company. */
3107
+ object?: string;
3108
+ /** @description The company's platform identifier. */
3109
+ id?: string;
3110
+ /** @description The company's name. */
3111
+ name?: string;
3112
+ /** @description Full LinkedIn URL for the company. */
3113
+ profile_url?: string;
3114
+ /** @description The company's logo URL. */
3115
+ public_picture_url?: string;
3116
+ /** @description How many members follow the company. */
3117
+ followers_count?: number;
3118
+ /** @description Whether this member follows the company. */
3119
+ is_following?: boolean;
3120
+ } & {
3121
+ [key: string]: unknown;
3122
+ })[];
3123
+ /** @description Followed schools. */
3124
+ schools?: ({
3125
+ /** @description The school's platform identifier. */
3126
+ id?: string;
3127
+ /** @description The school's name. */
3128
+ name?: string;
3129
+ /** @description Object discriminator for the followed school. */
3130
+ object?: string;
3131
+ /** @description Full LinkedIn URL for the school. */
3132
+ profile_url?: string;
3133
+ /** @description The school's logo URL. */
3134
+ public_picture_url?: string;
3135
+ /** @description How many members follow the school. */
3136
+ followers_count?: number;
3137
+ /** @description Whether this member follows the school. */
3138
+ is_following?: boolean;
3139
+ } & {
3140
+ [key: string]: unknown;
3141
+ })[];
3142
+ /** @description Followed newsletters. */
3143
+ newsletters?: ({
3144
+ /** @description The newsletter's platform identifier. */
3145
+ id?: string;
3146
+ /** @description The newsletter's title. */
3147
+ title?: string;
3148
+ /** @description The newsletter's description. Passes through verbatim, never stored. */
3149
+ description?: string;
3150
+ /** @description Full LinkedIn URL for the newsletter. */
3151
+ url?: string;
3152
+ /** @description How often the newsletter publishes. */
3153
+ posting_frequency?: string;
3154
+ /** @description The newsletter's cover image URL. */
3155
+ public_picture_url?: string;
3156
+ /** @description Whether this member subscribes to the newsletter. */
3157
+ is_subscribed?: boolean;
3158
+ } & {
3159
+ [key: string]: unknown;
3160
+ })[];
3161
+ /** @description Groups joined. */
3162
+ groups?: ({
3163
+ /** @description The group's platform identifier. */
3164
+ id?: string;
3165
+ /** @description The group's name. */
3166
+ name?: string;
3167
+ /** @description Full LinkedIn URL for the group. */
3168
+ url?: string;
3169
+ /** @description The group's picture URL. */
3170
+ public_picture_url?: string;
3171
+ /** @description Whether this member belongs to the group. */
3172
+ is_member?: boolean;
3173
+ } & {
3174
+ [key: string]: unknown;
3175
+ })[];
3176
+ } & {
2798
3177
  [key: string]: unknown;
2799
- }[];
3178
+ };
2800
3179
  /** @description Section names that were requested but throttled by LinkedIn. */
2801
3180
  throttled_sections?: string[];
2802
3181
  };
@@ -2903,7 +3282,7 @@ interface operations {
2903
3282
  query?: never;
2904
3283
  header?: never;
2905
3284
  path: {
2906
- /** @description The account ID (`acc_…`) to use for the request. */
3285
+ /** @description The account ID (`acc_...`) to use for the request. */
2907
3286
  account_id: string;
2908
3287
  /** @description Use "me" for the caller's own account, this is the only supported target. */
2909
3288
  user_id: string;
@@ -3232,7 +3611,7 @@ interface operations {
3232
3611
  };
3233
3612
  header?: never;
3234
3613
  path: {
3235
- /** @description The account ID (`acc_…`) to use for the request. */
3614
+ /** @description The account ID (`acc_...`) to use for the request. */
3236
3615
  account_id: string;
3237
3616
  };
3238
3617
  cookie?: never;
@@ -3346,9 +3725,9 @@ interface operations {
3346
3725
  query?: never;
3347
3726
  header?: never;
3348
3727
  path: {
3349
- /** @description The account ID (`acc_…`) performing the endorsement. */
3728
+ /** @description The account ID (`acc_...`) performing the endorsement. */
3350
3729
  account_id: string;
3351
- /** @description The LinkedIn member ID (`ACo…` format) whose skill is being endorsed, a public identifier does not resolve on this endpoint. */
3730
+ /** @description The LinkedIn member ID (`ACo...` format) whose skill is being endorsed, a public identifier does not resolve on this endpoint. */
3352
3731
  user_id: string;
3353
3732
  };
3354
3733
  cookie?: never;
@@ -3531,17 +3910,17 @@ interface operations {
3531
3910
  follower_count?: number | null;
3532
3911
  /** @description Visitors in the past month. 0 is a real value. */
3533
3912
  visitor_count?: number | null;
3534
- /** @description Page-type enum: COMPANY | SHOWCASE | … . */
3913
+ /** @description Page-type enum: COMPANY | SHOWCASE | ... . */
3535
3914
  page_type?: string | null;
3536
3915
  /** @description null for own admin pages (follow-state not meaningful). */
3537
3916
  is_following?: boolean | null;
3538
3917
  /** @description Always true; this is the administered set. */
3539
3918
  is_admin: boolean;
3540
- /** @description The follow-invite gate. true → the account may invite connections to follow this page. */
3919
+ /** @description The follow-invite gate. true -> the account may invite connections to follow this page. */
3541
3920
  can_invite_to_follow: boolean;
3542
3921
  /** @description Canonical page URL (falls back to `/company/<id>/` when absent but id parsed). */
3543
3922
  url?: string | null;
3544
- /** @description Admin / paid-media roles: ADMINISTRATOR | DIRECT_SPONSORED_CONTENT_POSTER | … . Often empty. */
3923
+ /** @description Admin / paid-media roles: ADMINISTRATOR | DIRECT_SPONSORED_CONTENT_POSTER | ... . Often empty. */
3545
3924
  roles?: string[];
3546
3925
  /** @description The full set of granted permission keys: the machine-readable action matrix for routing. */
3547
3926
  capabilities: string[];
@@ -3716,12 +4095,12 @@ interface operations {
3716
4095
  cancel_url: string | null;
3717
4096
  /** @description External LinkedIn-owned URL to switch/upgrade this plan. */
3718
4097
  switch_url: string | null;
3719
- /** @description This plan's full action map (action key → external URL). Open-ended; observed keys: manage_subscription, cancel_subscription, switch_plans. */
4098
+ /** @description This plan's full action map (action key -> external URL). Open-ended; observed keys: manage_subscription, cancel_subscription, switch_plans. */
3720
4099
  actions: {
3721
4100
  [key: string]: string;
3722
4101
  };
3723
4102
  }[];
3724
- /** @description The primary plan's action map (action key → external URL); {} for a free account. */
4103
+ /** @description The primary plan's action map (action key -> external URL); {} for a free account. */
3725
4104
  actions: {
3726
4105
  [key: string]: string;
3727
4106
  };
@@ -3964,7 +4343,7 @@ interface operations {
3964
4343
  };
3965
4344
  requestBody?: never;
3966
4345
  responses: {
3967
- /** @description A page of the account's recent profile viewers, each classified by disclosure fidelity. A free account is capped at semi-anonymous fidelity (an in-band 200, never a 403). Empty account → items:[], cursor:null. */
4346
+ /** @description A page of the account's recent profile viewers, each classified by disclosure fidelity. A free account is capped at semi-anonymous fidelity (an in-band 200, never a 403). Empty account -> items:[], cursor:null. */
3968
4347
  200: {
3969
4348
  headers: {
3970
4349
  "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
@@ -4237,7 +4616,7 @@ interface operations {
4237
4616
  };
4238
4617
  header?: never;
4239
4618
  path: {
4240
- /** @description The account ID (`acc_…`) to use for the request. */
4619
+ /** @description The account ID (`acc_...`) to use for the request. */
4241
4620
  account_id: string;
4242
4621
  /** @description "me" for the caller's own account, or another LinkedIn user's identifier. */
4243
4622
  user_id: string;
@@ -4390,7 +4769,7 @@ interface operations {
4390
4769
  };
4391
4770
  header?: never;
4392
4771
  path: {
4393
- /** @description The account ID (`acc_…`) to use for the request. */
4772
+ /** @description The account ID (`acc_...`) to use for the request. */
4394
4773
  account_id: string;
4395
4774
  /** @description Must be "me". LinkedIn does not allow listing who another user follows. */
4396
4775
  user_id: string;
@@ -4538,9 +4917,9 @@ interface operations {
4538
4917
  query?: never;
4539
4918
  header?: never;
4540
4919
  path: {
4541
- /** @description The account ID (`acc_…`) to follow from. */
4920
+ /** @description The account ID (`acc_...`) to follow from. */
4542
4921
  account_id: string;
4543
- /** @description The LinkedIn member ID (`ACo…` format) to follow, a public identifier does not resolve on this endpoint. */
4922
+ /** @description The LinkedIn member ID (`ACo...` format) to follow, a public identifier does not resolve on this endpoint. */
4544
4923
  user_id: string;
4545
4924
  };
4546
4925
  cookie?: never;
@@ -4695,9 +5074,9 @@ interface operations {
4695
5074
  query?: never;
4696
5075
  header?: never;
4697
5076
  path: {
4698
- /** @description The account ID (`acc_…`) to unfollow from. */
5077
+ /** @description The account ID (`acc_...`) to unfollow from. */
4699
5078
  account_id: string;
4700
- /** @description The LinkedIn member ID (`ACo…` format) to unfollow, a public identifier does not resolve on this endpoint. */
5079
+ /** @description The LinkedIn member ID (`ACo...` format) to unfollow, a public identifier does not resolve on this endpoint. */
4701
5080
  user_id: string;
4702
5081
  };
4703
5082
  cookie?: never;
@@ -5049,7 +5428,7 @@ interface operations {
5049
5428
  object: "company_employee_list";
5050
5429
  /** @description People who currently work at the company. */
5051
5430
  items: {
5052
- /** @description Opaque LinkedIn member URN for this person (e.g. ACoAA…). */
5431
+ /** @description Opaque LinkedIn member URN for this person (e.g. ACoAA...). */
5053
5432
  id: string;
5054
5433
  /** @description Numeric LinkedIn member id, distinct from id. Present when available. */
5055
5434
  member_id?: string;
@@ -5077,24 +5456,24 @@ interface operations {
5077
5456
  /** @description true if the account is verified. Present when available. */
5078
5457
  is_verified?: boolean;
5079
5458
  /**
5080
- * @description Whether this result names someone you can act on. Always present, on both values. full: the result carries a resolvable identity, so you can read the profile and reach the person. hidden: LinkedIn did not disclose this person to the connected account, so the result carries no public_identifier and no member_id, its name is a placeholder rather than a real one, and reading it back returns 403. The cause is the connected LinkedIn account's own subscription level, which decides which profiles it is allowed to identify; it is not an error in your request. A page can be entirely hidden while total_count still reports a large number, so count the full results rather than the total, and see notices[] for a page-level summary.
5459
+ * @description Whether this result names someone you can act on. Always present, on both values. full: the result carries a resolvable identity, so you can read the profile and reach the person. hidden: LinkedIn did not disclose this person to the connected account, so the result carries no public_identifier and no member_id, its name is a placeholder rather than a real one, and reading it back returns 403. The cause is the connected LinkedIn account's own subscription level, which decides which profiles it is allowed to identify; it is not an error in your request. A page can be entirely hidden, so count the full results rather than the size of the page, and see notices[] for a page-level summary.
5081
5460
  * @enum {string}
5082
5461
  */
5083
5462
  visibility: "full" | "hidden";
5084
5463
  }[];
5085
5464
  paging: {
5086
- /** @description Total number of matching employees across all pages. */
5087
- total_count: number;
5465
+ /** @description Total number of matching employees across all pages, or null when the platform does not report one. Count the items rather than relying on this. */
5466
+ total_count: number | null;
5088
5467
  };
5089
5468
  /** @description Opaque cursor for the next page, or null when there are no more results. */
5090
5469
  cursor: string | null;
5091
5470
  /** @description Present only when there is something to report about this page, for example that some of these employees were not disclosed to the connected account and cannot be read back. Absent when there is nothing to report. */
5092
5471
  notices?: {
5093
5472
  /**
5094
- * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on however large total_count is. Branch on this rather than on message.
5473
+ * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on, even when more pages follow. PAGE_TRUNCATED: this page is short because the search stopped fetching upstream pages, not because the results ran out; follow cursor, and treat only a null cursor as the end. Branch on this rather than on message.
5095
5474
  * @enum {string}
5096
5475
  */
5097
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
5476
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
5098
5477
  /** @description One sentence explaining the condition and how to resolve it. */
5099
5478
  message: string;
5100
5479
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -5276,8 +5655,8 @@ interface operations {
5276
5655
  repost_count: number;
5277
5656
  }[];
5278
5657
  paging: {
5279
- /** @description Total number of matching posts across all pages. */
5280
- total_count: number;
5658
+ /** @description Total number of matching posts across all pages, or null when the platform does not report one. Count the items rather than relying on this. */
5659
+ total_count: number | null;
5281
5660
  };
5282
5661
  /** @description Opaque cursor for the next page, or null when there are no more results. */
5283
5662
  cursor: string | null;
@@ -5455,8 +5834,8 @@ interface operations {
5455
5834
  };
5456
5835
  }[];
5457
5836
  paging: {
5458
- /** @description Total number of matching job postings across all pages. */
5459
- total_count: number;
5837
+ /** @description Total number of matching job postings across all pages, or null when the platform does not report one. Count the items rather than relying on this. */
5838
+ total_count: number | null;
5460
5839
  };
5461
5840
  /** @description Opaque cursor for the next page, or null when there are no more results. */
5462
5841
  cursor: string | null;
@@ -5573,7 +5952,7 @@ interface operations {
5573
5952
  requestBody: {
5574
5953
  content: {
5575
5954
  "application/json": {
5576
- /** @description The AC… member ids to invite to follow the page. Each is the id field of an invitable-followers read. Required, 1 to 50 per request. */
5955
+ /** @description The AC... member ids to invite to follow the page. Each is the id field of an invitable-followers read. Required, 1 to 50 per request. */
5577
5956
  invitee_ids: string[];
5578
5957
  };
5579
5958
  };
@@ -6026,6 +6405,8 @@ interface operations {
6026
6405
  limit?: number;
6027
6406
  /** @description Opaque pagination cursor from a prior response's cursor. Omit for the first page. */
6028
6407
  cursor?: string;
6408
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
6409
+ expand?: string;
6029
6410
  };
6030
6411
  header?: never;
6031
6412
  path: {
@@ -6059,7 +6440,7 @@ interface operations {
6059
6440
  * @enum {string}
6060
6441
  */
6061
6442
  object: "company_chat";
6062
- /** @description The conversation id (2-… form): the key for retrieve-chat and get-messages. */
6443
+ /** @description The conversation id (2-... form): the key for retrieve-chat and get-messages. */
6063
6444
  id: string;
6064
6445
  /** @description Group vs 1:1 conversation. */
6065
6446
  is_group_chat: boolean;
@@ -6078,8 +6459,10 @@ interface operations {
6078
6459
  kind: "member";
6079
6460
  /** @description Member headline (content pass-through, never stored). */
6080
6461
  headline?: string | null;
6081
- /** @description Canonical member profile URL. */
6082
- profile_url: string;
6462
+ /** @description Canonical member profile URL, or null when the platform surfaces no public profile for this person. */
6463
+ profile_url: string | null;
6464
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
6465
+ public_identifier?: string | null;
6083
6466
  }[];
6084
6467
  /** @description Unread message count (0 = read). */
6085
6468
  unread_count: number;
@@ -6097,6 +6480,20 @@ interface operations {
6097
6480
  }[];
6098
6481
  /** @description Opaque cursor for the next page, or null at end-of-list. */
6099
6482
  cursor: string | null;
6483
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
6484
+ notices?: {
6485
+ /**
6486
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
6487
+ * @enum {string}
6488
+ */
6489
+ code: "EXPANSION_LIMIT_REACHED";
6490
+ /** @description One sentence explaining the condition and how to resolve it. */
6491
+ message: string;
6492
+ /** @description The request field the notice is about, here expand. */
6493
+ field?: string;
6494
+ /** @description The expansion the notice is about, here public_identifier. */
6495
+ value?: string;
6496
+ }[];
6100
6497
  };
6101
6498
  };
6102
6499
  };
@@ -6197,14 +6594,17 @@ interface operations {
6197
6594
  };
6198
6595
  getV1AccountIdCompaniesIdentifierChatsChatId: {
6199
6596
  parameters: {
6200
- query?: never;
6597
+ query?: {
6598
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
6599
+ expand?: string;
6600
+ };
6201
6601
  header?: never;
6202
6602
  path: {
6203
6603
  /** @description The connected LinkedIn account, which must administer the page. */
6204
6604
  account_id: string;
6205
6605
  /** @description The company's numeric id (e.g. 112013061), the id field of GET /v1/{account_id}/companies/{identifier} or a POST /v1/{account_id}/search/companies result. A public handle or URN is not accepted here; pass the numeric id. */
6206
6606
  identifier: string;
6207
- /** @description The conversation id in the "2-…" form, the id field of a chats list or search result. Pass it verbatim. */
6607
+ /** @description The conversation id in the "2-..." form, the id field of a chats list or search result. Pass it verbatim. */
6208
6608
  chat_id: string;
6209
6609
  };
6210
6610
  cookie?: never;
@@ -6225,7 +6625,7 @@ interface operations {
6225
6625
  * @enum {string}
6226
6626
  */
6227
6627
  object: "company_chat";
6228
- /** @description The conversation id (2-… form): the key for retrieve-chat and get-messages. */
6628
+ /** @description The conversation id (2-... form): the key for retrieve-chat and get-messages. */
6229
6629
  id: string;
6230
6630
  /** @description Group vs 1:1 conversation. */
6231
6631
  is_group_chat: boolean;
@@ -6244,8 +6644,10 @@ interface operations {
6244
6644
  kind: "member";
6245
6645
  /** @description Member headline (content pass-through, never stored). */
6246
6646
  headline?: string | null;
6247
- /** @description Canonical member profile URL. */
6248
- profile_url: string;
6647
+ /** @description Canonical member profile URL, or null when the platform surfaces no public profile for this person. */
6648
+ profile_url: string | null;
6649
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
6650
+ public_identifier?: string | null;
6249
6651
  }[];
6250
6652
  /** @description Unread message count (0 = read). */
6251
6653
  unread_count: number;
@@ -6260,6 +6662,20 @@ interface operations {
6260
6662
  /** @description Message body (content pass-through, never stored). */
6261
6663
  text?: string | null;
6262
6664
  } | null;
6665
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
6666
+ notices?: {
6667
+ /**
6668
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
6669
+ * @enum {string}
6670
+ */
6671
+ code: "EXPANSION_LIMIT_REACHED";
6672
+ /** @description One sentence explaining the condition and how to resolve it. */
6673
+ message: string;
6674
+ /** @description The request field the notice is about, here expand. */
6675
+ field?: string;
6676
+ /** @description The expansion the notice is about, here public_identifier. */
6677
+ value?: string;
6678
+ }[];
6263
6679
  };
6264
6680
  };
6265
6681
  };
@@ -6365,6 +6781,8 @@ interface operations {
6365
6781
  limit?: number;
6366
6782
  /** @description Opaque pagination cursor from a prior response's cursor. Omit for the first page. */
6367
6783
  cursor?: string;
6784
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
6785
+ expand?: string;
6368
6786
  };
6369
6787
  header?: never;
6370
6788
  path: {
@@ -6372,7 +6790,7 @@ interface operations {
6372
6790
  account_id: string;
6373
6791
  /** @description The company's numeric id (e.g. 112013061), the id field of GET /v1/{account_id}/companies/{identifier} or a POST /v1/{account_id}/search/companies result. A public handle or URN is not accepted here; pass the numeric id. */
6374
6792
  identifier: string;
6375
- /** @description The conversation id in the "2-…" form, the id field of a chats list or search result. Pass it verbatim. */
6793
+ /** @description The conversation id in the "2-..." form, the id field of a chats list or search result. Pass it verbatim. */
6376
6794
  chat_id: string;
6377
6795
  };
6378
6796
  cookie?: never;
@@ -6400,15 +6818,17 @@ interface operations {
6400
6818
  * @enum {string}
6401
6819
  */
6402
6820
  object: "company_chat_message";
6403
- /** @description The message id (2-… form). */
6821
+ /** @description The message id (2-... form). */
6404
6822
  id: string;
6405
- /** @description The parent conversation id (2-… form). */
6823
+ /** @description The parent conversation id (2-... form). */
6406
6824
  conversation_id: string;
6407
6825
  sender: {
6408
6826
  /** @description Sender's member id. */
6409
6827
  id: string;
6410
6828
  /** @description Sender display name (content pass-through, never stored). */
6411
6829
  name: string | null;
6830
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
6831
+ public_identifier?: string | null;
6412
6832
  };
6413
6833
  /** @description Epoch-ms delivery time; also the newest-first pagination anchor. */
6414
6834
  sent_at: number;
@@ -6417,6 +6837,20 @@ interface operations {
6417
6837
  }[];
6418
6838
  /** @description Opaque cursor for the next page, or null at end-of-list. */
6419
6839
  cursor: string | null;
6840
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
6841
+ notices?: {
6842
+ /**
6843
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
6844
+ * @enum {string}
6845
+ */
6846
+ code: "EXPANSION_LIMIT_REACHED";
6847
+ /** @description One sentence explaining the condition and how to resolve it. */
6848
+ message: string;
6849
+ /** @description The request field the notice is about, here expand. */
6850
+ field?: string;
6851
+ /** @description The expansion the notice is about, here public_identifier. */
6852
+ value?: string;
6853
+ }[];
6420
6854
  };
6421
6855
  };
6422
6856
  };
@@ -6524,7 +6958,7 @@ interface operations {
6524
6958
  account_id: string;
6525
6959
  /** @description The company's numeric id (e.g. 112013061), the id field of GET /v1/{account_id}/companies/{identifier} or a POST /v1/{account_id}/search/companies result. A public handle or URN is not accepted here; pass the numeric id. */
6526
6960
  identifier: string;
6527
- /** @description The conversation id in the "2-…" form, the id field of a chats list or search result. Pass it verbatim. */
6961
+ /** @description The conversation id in the "2-..." form, the id field of a chats list or search result. Pass it verbatim. */
6528
6962
  chat_id: string;
6529
6963
  };
6530
6964
  cookie?: never;
@@ -6580,7 +7014,7 @@ interface operations {
6580
7014
  };
6581
7015
  };
6582
7016
  };
6583
- /** @description Empty body or neither text nor attachment supplied, a non-numeric identifier, or a malformed chat_id (not a conversation id in the 2-… form). */
7017
+ /** @description Empty body or neither text nor attachment supplied, a non-numeric identifier, or a malformed chat_id (not a conversation id in the 2-... form). */
6584
7018
  400: {
6585
7019
  headers: {
6586
7020
  [name: string]: unknown;
@@ -6695,16 +7129,19 @@ interface operations {
6695
7129
  };
6696
7130
  getV1AccountIdCompaniesIdentifierChatsChatIdMessagesMessageId: {
6697
7131
  parameters: {
6698
- query?: never;
7132
+ query?: {
7133
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
7134
+ expand?: string;
7135
+ };
6699
7136
  header?: never;
6700
7137
  path: {
6701
7138
  /** @description The connected LinkedIn account, which must administer the page. */
6702
7139
  account_id: string;
6703
7140
  /** @description The company's numeric id (e.g. 112013061), the id field of GET /v1/{account_id}/companies/{identifier} or a POST /v1/{account_id}/search/companies result. A public handle or URN is not accepted here; pass the numeric id. */
6704
7141
  identifier: string;
6705
- /** @description The conversation id in the "2-…" form, the id field of a chats list or search result. Pass it verbatim. */
7142
+ /** @description The conversation id in the "2-..." form, the id field of a chats list or search result. Pass it verbatim. */
6706
7143
  chat_id: string;
6707
- /** @description The message id in the "2-…" form, the id field of a messages list result. Always resolved scoped to its chat_id. */
7144
+ /** @description The message id in the "2-..." form, the id field of a messages list result. Always resolved scoped to its chat_id. */
6708
7145
  message_id: string;
6709
7146
  };
6710
7147
  cookie?: never;
@@ -6725,20 +7162,36 @@ interface operations {
6725
7162
  * @enum {string}
6726
7163
  */
6727
7164
  object: "company_chat_message";
6728
- /** @description The message id (2-… form). */
7165
+ /** @description The message id (2-... form). */
6729
7166
  id: string;
6730
- /** @description The parent conversation id (2-… form). */
7167
+ /** @description The parent conversation id (2-... form). */
6731
7168
  conversation_id: string;
6732
7169
  sender: {
6733
7170
  /** @description Sender's member id. */
6734
7171
  id: string;
6735
7172
  /** @description Sender display name (content pass-through, never stored). */
6736
7173
  name: string | null;
7174
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
7175
+ public_identifier?: string | null;
6737
7176
  };
6738
7177
  /** @description Epoch-ms delivery time; also the newest-first pagination anchor. */
6739
7178
  sent_at: number;
6740
7179
  /** @description Message body (content pass-through, never stored). */
6741
7180
  text?: string | null;
7181
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
7182
+ notices?: {
7183
+ /**
7184
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
7185
+ * @enum {string}
7186
+ */
7187
+ code: "EXPANSION_LIMIT_REACHED";
7188
+ /** @description One sentence explaining the condition and how to resolve it. */
7189
+ message: string;
7190
+ /** @description The request field the notice is about, here expand. */
7191
+ field?: string;
7192
+ /** @description The expansion the notice is about, here public_identifier. */
7193
+ value?: string;
7194
+ }[];
6742
7195
  };
6743
7196
  };
6744
7197
  };
@@ -6850,6 +7303,8 @@ interface operations {
6850
7303
  limit?: number;
6851
7304
  /** @description Opaque pagination cursor from a prior response's cursor. Omit for the first page. */
6852
7305
  cursor?: string;
7306
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
7307
+ expand?: string;
6853
7308
  };
6854
7309
  header?: never;
6855
7310
  path: {
@@ -6883,7 +7338,7 @@ interface operations {
6883
7338
  * @enum {string}
6884
7339
  */
6885
7340
  object: "company_chat";
6886
- /** @description The conversation id (2-… form): the key for retrieve-chat and get-messages. */
7341
+ /** @description The conversation id (2-... form): the key for retrieve-chat and get-messages. */
6887
7342
  id: string;
6888
7343
  /** @description Group vs 1:1 conversation. */
6889
7344
  is_group_chat: boolean;
@@ -6902,8 +7357,10 @@ interface operations {
6902
7357
  kind: "member";
6903
7358
  /** @description Member headline (content pass-through, never stored). */
6904
7359
  headline?: string | null;
6905
- /** @description Canonical member profile URL. */
6906
- profile_url: string;
7360
+ /** @description Canonical member profile URL, or null when the platform surfaces no public profile for this person. */
7361
+ profile_url: string | null;
7362
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
7363
+ public_identifier?: string | null;
6907
7364
  }[];
6908
7365
  /** @description Unread message count (0 = read). */
6909
7366
  unread_count: number;
@@ -6926,6 +7383,20 @@ interface operations {
6926
7383
  * @enum {boolean}
6927
7384
  */
6928
7385
  filter_effective?: true;
7386
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
7387
+ notices?: {
7388
+ /**
7389
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
7390
+ * @enum {string}
7391
+ */
7392
+ code: "EXPANSION_LIMIT_REACHED";
7393
+ /** @description One sentence explaining the condition and how to resolve it. */
7394
+ message: string;
7395
+ /** @description The request field the notice is about, here expand. */
7396
+ field?: string;
7397
+ /** @description The expansion the notice is about, here public_identifier. */
7398
+ value?: string;
7399
+ }[];
6929
7400
  };
6930
7401
  };
6931
7402
  };
@@ -7743,7 +8214,7 @@ interface operations {
7743
8214
  object: "people_search_result";
7744
8215
  /** @description People search result items. */
7745
8216
  items: {
7746
- /** @description Opaque LinkedIn member URN for this person (e.g. ACoAA…). */
8217
+ /** @description Opaque LinkedIn member URN for this person (e.g. ACoAA...). */
7747
8218
  id: string;
7748
8219
  /** @description Numeric LinkedIn member id, distinct from id. Present when available. */
7749
8220
  member_id?: string;
@@ -7771,14 +8242,14 @@ interface operations {
7771
8242
  /** @description true if the account is verified. Present when available. */
7772
8243
  is_verified?: boolean;
7773
8244
  /**
7774
- * @description Whether this result names someone you can act on. Always present, on both values. full: the result carries a resolvable identity, so you can read the profile and reach the person. hidden: LinkedIn did not disclose this person to the connected account, so the result carries no public_identifier and no member_id, its name is a placeholder rather than a real one, and reading it back returns 403. The cause is the connected LinkedIn account's own subscription level, which decides which profiles it is allowed to identify; it is not an error in your request. A page can be entirely hidden while total_count still reports a large number, so count the full results rather than the total, and see notices[] for a page-level summary.
8245
+ * @description Whether this result names someone you can act on. Always present, on both values. full: the result carries a resolvable identity, so you can read the profile and reach the person. hidden: LinkedIn did not disclose this person to the connected account, so the result carries no public_identifier and no member_id, its name is a placeholder rather than a real one, and reading it back returns 403. The cause is the connected LinkedIn account's own subscription level, which decides which profiles it is allowed to identify; it is not an error in your request. A page can be entirely hidden, so count the full results rather than the size of the page, and see notices[] for a page-level summary.
7775
8246
  * @enum {string}
7776
8247
  */
7777
8248
  visibility: "full" | "hidden";
7778
8249
  }[];
7779
8250
  /** @description Paging metadata. */
7780
8251
  paging: {
7781
- /** @description Total matching result count. Large counts (people/companies/from-url) are a ≥1000 ceiling, not an exact total. */
8252
+ /** @description Always null on people search. LinkedIn does not report how many people match, so there is no total to page toward; walk the pages with cursor until it comes back null. A short or empty page is not the end: only a null cursor is. */
7782
8253
  total_count: number | null;
7783
8254
  };
7784
8255
  /** @description Opaque next-page cursor; null on the last page. */
@@ -7786,10 +8257,10 @@ interface operations {
7786
8257
  /** @description Present only when there is something to report about this page. Each entry names a condition that is true of the response but not visible in it, so a result set is never misleading by omission. Absent when there is nothing to report. */
7787
8258
  notices?: {
7788
8259
  /**
7789
- * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on however large total_count is. Branch on this rather than on message.
8260
+ * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on, even when more pages follow. PAGE_TRUNCATED: this page is short because the search stopped fetching upstream pages, not because the results ran out; follow cursor, and treat only a null cursor as the end. Branch on this rather than on message.
7790
8261
  * @enum {string}
7791
8262
  */
7792
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
8263
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
7793
8264
  /** @description One sentence explaining the condition and how to resolve it. */
7794
8265
  message: string;
7795
8266
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -7968,7 +8439,7 @@ interface operations {
7968
8439
  }[];
7969
8440
  /** @description Paging metadata. */
7970
8441
  paging: {
7971
- /** @description Total matching result count. Large counts are a ≥1000 ceiling, not an exact total. */
8442
+ /** @description Total matching result count. Large counts are a >=1000 ceiling, not an exact total. */
7972
8443
  total_count: number | null;
7973
8444
  };
7974
8445
  /** @description Opaque next-page cursor; null on the last page. */
@@ -7976,10 +8447,10 @@ interface operations {
7976
8447
  /** @description Present only when there is something to report about this page. Each entry names a condition that is true of the response but not visible in it, so a result set is never misleading by omission. Absent when there is nothing to report. */
7977
8448
  notices?: {
7978
8449
  /**
7979
- * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on however large total_count is. Branch on this rather than on message.
8450
+ * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on, even when more pages follow. PAGE_TRUNCATED: this page is short because the search stopped fetching upstream pages, not because the results ran out; follow cursor, and treat only a null cursor as the end. Branch on this rather than on message.
7980
8451
  * @enum {string}
7981
8452
  */
7982
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
8453
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
7983
8454
  /** @description One sentence explaining the condition and how to resolve it. */
7984
8455
  message: string;
7985
8456
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -8212,10 +8683,10 @@ interface operations {
8212
8683
  /** @description Present only when there is something to report about this page. Each entry names a condition that is true of the response but not visible in it, so a result set is never misleading by omission. Absent when there is nothing to report. */
8213
8684
  notices?: {
8214
8685
  /**
8215
- * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on however large total_count is. Branch on this rather than on message.
8686
+ * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on, even when more pages follow. PAGE_TRUNCATED: this page is short because the search stopped fetching upstream pages, not because the results ran out; follow cursor, and treat only a null cursor as the end. Branch on this rather than on message.
8216
8687
  * @enum {string}
8217
8688
  */
8218
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
8689
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
8219
8690
  /** @description One sentence explaining the condition and how to resolve it. */
8220
8691
  message: string;
8221
8692
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -8467,10 +8938,10 @@ interface operations {
8467
8938
  /** @description Present only when there is something to report about this page. Each entry names a condition that is true of the response but not visible in it, so a result set is never misleading by omission. Absent when there is nothing to report. */
8468
8939
  notices?: {
8469
8940
  /**
8470
- * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on however large total_count is. Branch on this rather than on message.
8941
+ * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on, even when more pages follow. PAGE_TRUNCATED: this page is short because the search stopped fetching upstream pages, not because the results ran out; follow cursor, and treat only a null cursor as the end. Branch on this rather than on message.
8471
8942
  * @enum {string}
8472
8943
  */
8473
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
8944
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
8474
8945
  /** @description One sentence explaining the condition and how to resolve it. */
8475
8946
  message: string;
8476
8947
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -8611,7 +9082,7 @@ interface operations {
8611
9082
  items: ({
8612
9083
  /** @enum {string} */
8613
9084
  object: "people_search_result";
8614
- /** @description Opaque LinkedIn member URN for this person (e.g. ACoAA…). */
9085
+ /** @description Opaque LinkedIn member URN for this person (e.g. ACoAA...). */
8615
9086
  id: string;
8616
9087
  /** @description Numeric LinkedIn member id, distinct from id. Present when available. */
8617
9088
  member_id?: string;
@@ -8639,7 +9110,7 @@ interface operations {
8639
9110
  /** @description true if the account is verified. Present when available. */
8640
9111
  is_verified?: boolean;
8641
9112
  /**
8642
- * @description Whether this result names someone you can act on. Always present, on both values. full: the result carries a resolvable identity, so you can read the profile and reach the person. hidden: LinkedIn did not disclose this person to the connected account, so the result carries no public_identifier and no member_id, its name is a placeholder rather than a real one, and reading it back returns 403. The cause is the connected LinkedIn account's own subscription level, which decides which profiles it is allowed to identify; it is not an error in your request. A page can be entirely hidden while total_count still reports a large number, so count the full results rather than the total, and see notices[] for a page-level summary.
9113
+ * @description Whether this result names someone you can act on. Always present, on both values. full: the result carries a resolvable identity, so you can read the profile and reach the person. hidden: LinkedIn did not disclose this person to the connected account, so the result carries no public_identifier and no member_id, its name is a placeholder rather than a real one, and reading it back returns 403. The cause is the connected LinkedIn account's own subscription level, which decides which profiles it is allowed to identify; it is not an error in your request. A page can be entirely hidden, so count the full results rather than the size of the page, and see notices[] for a page-level summary.
8643
9114
  * @enum {string}
8644
9115
  */
8645
9116
  visibility: "full" | "hidden";
@@ -8753,7 +9224,7 @@ interface operations {
8753
9224
  })[];
8754
9225
  /** @description Paging metadata. */
8755
9226
  paging: {
8756
- /** @description Total matching result count. Large counts are a ≥1000 ceiling, not an exact total. */
9227
+ /** @description Total matching result count. Always null when the pasted URL is a people search, because LinkedIn does not report a total for those; page with cursor instead. For company, post, and job URLs a large count is a >=1000 ceiling, not an exact total. */
8757
9228
  total_count: number | null;
8758
9229
  };
8759
9230
  /** @description Opaque next-page cursor; null on the last page. */
@@ -9045,7 +9516,7 @@ interface operations {
9045
9516
  * @enum {string}
9046
9517
  */
9047
9518
  object: "service_provider";
9048
- /** @description The member id (ACoAAA…), the key for connect/message/enrich. */
9519
+ /** @description The member id (ACoAAA...), the key for connect/message/enrich. */
9049
9520
  id: string | null;
9050
9521
  /** @description Display name. */
9051
9522
  name: string | null;
@@ -9071,7 +9542,7 @@ interface operations {
9071
9542
  }[];
9072
9543
  /** @description Paging metadata. */
9073
9544
  paging: {
9074
- /** @description Total matching result count. */
9545
+ /** @description Always null. Service-provider search runs on the people index, and LinkedIn does not report how many people match, so walk the pages with cursor until it comes back null. */
9075
9546
  total_count: number | null;
9076
9547
  };
9077
9548
  /** @description Opaque next-page cursor; null on the last page. */
@@ -9079,10 +9550,10 @@ interface operations {
9079
9550
  /** @description Present only when there is something to report about this page. Each entry names a condition that is true of the response but not visible in it, so a result set is never misleading by omission. Absent when there is nothing to report. */
9080
9551
  notices?: {
9081
9552
  /**
9082
- * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on however large total_count is. Branch on this rather than on message.
9553
+ * @description FILTER_VALUE_UNRESOLVED: the value matched no known filter option, so it was sent on as an id we could not check. FILTER_VALUE_UNCHECKED: the value already looked like an id, so it was never looked up, and this page came back empty. SOME_RESULTS_HIDDEN: some people on this page were not disclosed to the connected account, so those entries cannot be read back. ALL_RESULTS_HIDDEN: none of the people on this page were disclosed, so the page yielded nothing you can act on, even when more pages follow. PAGE_TRUNCATED: this page is short because the search stopped fetching upstream pages, not because the results ran out; follow cursor, and treat only a null cursor as the end. Branch on this rather than on message.
9083
9554
  * @enum {string}
9084
9555
  */
9085
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
9556
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
9086
9557
  /** @description One sentence explaining the condition and how to resolve it. */
9087
9558
  message: string;
9088
9559
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -9336,10 +9807,12 @@ interface operations {
9336
9807
  limit?: number;
9337
9808
  /** @description An opaque cursor for pagination. Pass the `cursor` from the preceding response to fetch the next page. */
9338
9809
  cursor?: string;
9810
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
9811
+ expand?: string;
9339
9812
  };
9340
9813
  header?: never;
9341
9814
  path: {
9342
- /** @description The account ID (`acc_…`) whose chats to list. */
9815
+ /** @description The account ID (`acc_...`) whose chats to list. */
9343
9816
  account_id: string;
9344
9817
  };
9345
9818
  cookie?: never;
@@ -9448,6 +9921,22 @@ interface operations {
9448
9921
  reaction_count?: number;
9449
9922
  /** @description The platform this message originates from. */
9450
9923
  provider?: string;
9924
+ /** @description The sender's profile, when the platform returned one alongside the message. sender_id always carries the identifier; this object carries the rest of what is known about that person. */
9925
+ sender?: {
9926
+ /** @description Identifier of the counterpart. */
9927
+ id?: string;
9928
+ /** @description individual | organization. */
9929
+ type?: string;
9930
+ display_name?: string;
9931
+ profile_url?: string;
9932
+ public_picture_url?: string;
9933
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
9934
+ public_identifier?: string | null;
9935
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
9936
+ specifics?: {
9937
+ [key: string]: unknown;
9938
+ };
9939
+ };
9451
9940
  };
9452
9941
  /** @description The 1:1 counterpart's profile. */
9453
9942
  user?: {
@@ -9458,10 +9947,26 @@ interface operations {
9458
9947
  display_name?: string;
9459
9948
  profile_url?: string;
9460
9949
  public_picture_url?: string;
9950
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
9951
+ public_identifier?: string | null;
9461
9952
  };
9462
9953
  }[];
9463
9954
  /** @description Next-page cursor; follow until items is empty (presence is not a has-more guarantee). */
9464
9955
  cursor?: string | null;
9956
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
9957
+ notices?: {
9958
+ /**
9959
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
9960
+ * @enum {string}
9961
+ */
9962
+ code: "EXPANSION_LIMIT_REACHED";
9963
+ /** @description One sentence explaining the condition and how to resolve it. */
9964
+ message: string;
9965
+ /** @description The request field the notice is about, here expand. */
9966
+ field?: string;
9967
+ /** @description The expansion the notice is about, here public_identifier. */
9968
+ value?: string;
9969
+ }[];
9465
9970
  };
9466
9971
  };
9467
9972
  };
@@ -9556,7 +10061,7 @@ interface operations {
9556
10061
  query?: never;
9557
10062
  header?: never;
9558
10063
  path: {
9559
- /** @description The account ID (`acc_…`) to start the chat from. */
10064
+ /** @description The account ID (`acc_...`) to start the chat from. */
9560
10065
  account_id: string;
9561
10066
  };
9562
10067
  cookie?: never;
@@ -9564,11 +10069,11 @@ interface operations {
9564
10069
  requestBody: {
9565
10070
  content: {
9566
10071
  "application/json": {
9567
- /** @description LinkedIn member provider IDs for the chat recipients (≥ 1, e.g. ACo…). */
10072
+ /** @description LinkedIn member provider IDs for the chat recipients (>= 1, e.g. ACo...). */
9568
10073
  attendees_ids: string[];
9569
10074
  /** @description Opening message text (1-8000 chars). */
9570
10075
  text: string;
9571
- /** @description Optional conversation name / subject line (≤ 200 chars). */
10076
+ /** @description Optional conversation name / subject line (<= 200 chars). */
9572
10077
  subject?: string;
9573
10078
  /** @description Optional file attachments (base64-encoded). */
9574
10079
  attachments?: {
@@ -9721,10 +10226,13 @@ interface operations {
9721
10226
  };
9722
10227
  getV1AccountIdChatsChatId: {
9723
10228
  parameters: {
9724
- query?: never;
10229
+ query?: {
10230
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
10231
+ expand?: string;
10232
+ };
9725
10233
  header?: never;
9726
10234
  path: {
9727
- /** @description The account ID (`acc_…`) that owns the chat. */
10235
+ /** @description The account ID (`acc_...`) that owns the chat. */
9728
10236
  account_id: string;
9729
10237
  /** @description The unique identifier of the chat to retrieve. */
9730
10238
  chat_id: string;
@@ -9829,6 +10337,22 @@ interface operations {
9829
10337
  reaction_count?: number;
9830
10338
  /** @description The platform this message originates from. */
9831
10339
  provider?: string;
10340
+ /** @description The sender's profile, when the platform returned one alongside the message. sender_id always carries the identifier; this object carries the rest of what is known about that person. */
10341
+ sender?: {
10342
+ /** @description Identifier of the counterpart. */
10343
+ id?: string;
10344
+ /** @description individual | organization. */
10345
+ type?: string;
10346
+ display_name?: string;
10347
+ profile_url?: string;
10348
+ public_picture_url?: string;
10349
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
10350
+ public_identifier?: string | null;
10351
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
10352
+ specifics?: {
10353
+ [key: string]: unknown;
10354
+ };
10355
+ };
9832
10356
  };
9833
10357
  /** @description The 1:1 counterpart's profile. */
9834
10358
  user?: {
@@ -9839,7 +10363,23 @@ interface operations {
9839
10363
  display_name?: string;
9840
10364
  profile_url?: string;
9841
10365
  public_picture_url?: string;
10366
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
10367
+ public_identifier?: string | null;
9842
10368
  };
10369
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
10370
+ notices?: {
10371
+ /**
10372
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
10373
+ * @enum {string}
10374
+ */
10375
+ code: "EXPANSION_LIMIT_REACHED";
10376
+ /** @description One sentence explaining the condition and how to resolve it. */
10377
+ message: string;
10378
+ /** @description The request field the notice is about, here expand. */
10379
+ field?: string;
10380
+ /** @description The expansion the notice is about, here public_identifier. */
10381
+ value?: string;
10382
+ }[];
9843
10383
  };
9844
10384
  };
9845
10385
  };
@@ -9916,7 +10456,7 @@ interface operations {
9916
10456
  query?: never;
9917
10457
  header?: never;
9918
10458
  path: {
9919
- /** @description The account ID (`acc_…`) that owns the chat. */
10459
+ /** @description The account ID (`acc_...`) that owns the chat. */
9920
10460
  account_id: string;
9921
10461
  /** @description The unique identifier of the chat to update. */
9922
10462
  chat_id: string;
@@ -10043,10 +10583,12 @@ interface operations {
10043
10583
  limit?: number;
10044
10584
  /** @description An opaque cursor for pagination. Pass the `cursor` from the preceding response to fetch the next page. */
10045
10585
  cursor?: string;
10586
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
10587
+ expand?: string;
10046
10588
  };
10047
10589
  header?: never;
10048
10590
  path: {
10049
- /** @description The account ID (`acc_…`) that owns the chat. */
10591
+ /** @description The account ID (`acc_...`) that owns the chat. */
10050
10592
  account_id: string;
10051
10593
  /** @description The unique identifier of the chat to list messages from. */
10052
10594
  chat_id: string;
@@ -10118,9 +10660,39 @@ interface operations {
10118
10660
  reaction_count?: number;
10119
10661
  /** @description The platform this message originates from. */
10120
10662
  provider?: string;
10663
+ /** @description The sender's profile, when the platform returned one alongside the message. sender_id always carries the identifier; this object carries the rest of what is known about that person. */
10664
+ sender?: {
10665
+ /** @description Identifier of the counterpart. */
10666
+ id?: string;
10667
+ /** @description individual | organization. */
10668
+ type?: string;
10669
+ display_name?: string;
10670
+ profile_url?: string;
10671
+ public_picture_url?: string;
10672
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
10673
+ public_identifier?: string | null;
10674
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
10675
+ specifics?: {
10676
+ [key: string]: unknown;
10677
+ };
10678
+ };
10121
10679
  }[];
10122
10680
  /** @description Next-page cursor; follow until items is empty. */
10123
10681
  cursor?: string | null;
10682
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
10683
+ notices?: {
10684
+ /**
10685
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
10686
+ * @enum {string}
10687
+ */
10688
+ code: "EXPANSION_LIMIT_REACHED";
10689
+ /** @description One sentence explaining the condition and how to resolve it. */
10690
+ message: string;
10691
+ /** @description The request field the notice is about, here expand. */
10692
+ field?: string;
10693
+ /** @description The expansion the notice is about, here public_identifier. */
10694
+ value?: string;
10695
+ }[];
10124
10696
  };
10125
10697
  };
10126
10698
  };
@@ -10206,7 +10778,7 @@ interface operations {
10206
10778
  query?: never;
10207
10779
  header?: never;
10208
10780
  path: {
10209
- /** @description The account ID (`acc_…`) that owns the chat. */
10781
+ /** @description The account ID (`acc_...`) that owns the chat. */
10210
10782
  account_id: string;
10211
10783
  /** @description The unique identifier of the chat to send the message to. A COMPANY_ chat id (e.g. 'COMPANY_83734124_2-YTQ3ODU3Njgt', from the inboxes endpoints) sends this message as that company page instead of the connected member. */
10212
10784
  chat_id: string;
@@ -10233,7 +10805,7 @@ interface operations {
10233
10805
  };
10234
10806
  };
10235
10807
  responses: {
10236
- /** @description Message sent. Returns the new message_id and sent_as, the acting identity. Reply as a company page simply by sending into one of its chat ids (from GET /v1/{account_id}/inboxes/{inbox_id}/chats): a COMPANY_ chat id (e.g. `COMPANY_83734124_2-…`) sends AS THE PAGE and echoes sent_as:{kind:'company',company_id,name} (company_id is null when the page could not be correlated to a managed page). Any other chat id sends as the connected member and echoes sent_as:{kind:'personal'}. Never infer the acting identity from the message's sender field, only from sent_as. */
10808
+ /** @description Message sent. Returns the new message_id and sent_as, the acting identity. Reply as a company page simply by sending into one of its chat ids (from GET /v1/{account_id}/inboxes/{inbox_id}/chats): a COMPANY_ chat id (e.g. `COMPANY_83734124_2-...`) sends AS THE PAGE and echoes sent_as:{kind:'company',company_id,name} (company_id is null when the page could not be correlated to a managed page). Any other chat id sends as the connected member and echoes sent_as:{kind:'personal'}. Never infer the acting identity from the message's sender field, only from sent_as. */
10237
10809
  201: {
10238
10810
  headers: {
10239
10811
  "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
@@ -10370,10 +10942,13 @@ interface operations {
10370
10942
  };
10371
10943
  getV1AccountIdChatsChatIdMessagesMessageId: {
10372
10944
  parameters: {
10373
- query?: never;
10945
+ query?: {
10946
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
10947
+ expand?: string;
10948
+ };
10374
10949
  header?: never;
10375
10950
  path: {
10376
- /** @description The account ID (`acc_…`) that owns the chat. */
10951
+ /** @description The account ID (`acc_...`) that owns the chat. */
10377
10952
  account_id: string;
10378
10953
  /** @description The unique identifier of the chat that contains the message. */
10379
10954
  chat_id: string;
@@ -10441,6 +11016,36 @@ interface operations {
10441
11016
  reaction_count?: number;
10442
11017
  /** @description The platform this message originates from. */
10443
11018
  provider?: string;
11019
+ /** @description The sender's profile, when the platform returned one alongside the message. sender_id always carries the identifier; this object carries the rest of what is known about that person. */
11020
+ sender?: {
11021
+ /** @description Identifier of the counterpart. */
11022
+ id?: string;
11023
+ /** @description individual | organization. */
11024
+ type?: string;
11025
+ display_name?: string;
11026
+ profile_url?: string;
11027
+ public_picture_url?: string;
11028
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
11029
+ public_identifier?: string | null;
11030
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
11031
+ specifics?: {
11032
+ [key: string]: unknown;
11033
+ };
11034
+ };
11035
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
11036
+ notices?: {
11037
+ /**
11038
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
11039
+ * @enum {string}
11040
+ */
11041
+ code: "EXPANSION_LIMIT_REACHED";
11042
+ /** @description One sentence explaining the condition and how to resolve it. */
11043
+ message: string;
11044
+ /** @description The request field the notice is about, here expand. */
11045
+ field?: string;
11046
+ /** @description The expansion the notice is about, here public_identifier. */
11047
+ value?: string;
11048
+ }[];
10444
11049
  };
10445
11050
  };
10446
11051
  };
@@ -10517,7 +11122,7 @@ interface operations {
10517
11122
  query?: never;
10518
11123
  header?: never;
10519
11124
  path: {
10520
- /** @description The account ID (`acc_…`) that owns the chat. */
11125
+ /** @description The account ID (`acc_...`) that owns the chat. */
10521
11126
  account_id: string;
10522
11127
  /** @description The unique identifier of the chat that contains the message. */
10523
11128
  chat_id: string;
@@ -10629,7 +11234,7 @@ interface operations {
10629
11234
  query?: never;
10630
11235
  header?: never;
10631
11236
  path: {
10632
- /** @description The account ID (`acc_…`) that owns the chat. */
11237
+ /** @description The account ID (`acc_...`) that owns the chat. */
10633
11238
  account_id: string;
10634
11239
  /** @description The unique identifier of the chat that contains the message. */
10635
11240
  chat_id: string;
@@ -10757,7 +11362,7 @@ interface operations {
10757
11362
  query?: never;
10758
11363
  header?: never;
10759
11364
  path: {
10760
- /** @description The account ID (`acc_…`) that owns the chat. */
11365
+ /** @description The account ID (`acc_...`) that owns the chat. */
10761
11366
  account_id: string;
10762
11367
  /** @description The unique identifier of the chat that contains the message. */
10763
11368
  chat_id: string;
@@ -10769,7 +11374,7 @@ interface operations {
10769
11374
  requestBody: {
10770
11375
  content: {
10771
11376
  "application/json": {
10772
- /** @description Native emoji reaction value (e.g. 👍). Must be a valid LinkedIn reaction emoji. */
11377
+ /** @description Native emoji reaction value (e.g. a thumbs-up emoji). Must be a valid LinkedIn reaction emoji. */
10773
11378
  reaction: string;
10774
11379
  };
10775
11380
  };
@@ -10878,7 +11483,7 @@ interface operations {
10878
11483
  query?: never;
10879
11484
  header?: never;
10880
11485
  path: {
10881
- /** @description The account ID (`acc_…`) that owns the chat. */
11486
+ /** @description The account ID (`acc_...`) that owns the chat. */
10882
11487
  account_id: string;
10883
11488
  /** @description The unique identifier of the chat that contains the message. */
10884
11489
  chat_id: string;
@@ -10988,10 +11593,12 @@ interface operations {
10988
11593
  limit?: number;
10989
11594
  /** @description Opaque pagination cursor returned from a previous response; wraps a zero-based item offset. */
10990
11595
  cursor?: string;
11596
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
11597
+ expand?: string;
10991
11598
  };
10992
11599
  header?: never;
10993
11600
  path: {
10994
- /** @description The account ID (`acc_…`) whose inbox to search. */
11601
+ /** @description The account ID (`acc_...`) whose inbox to search. */
10995
11602
  account_id: string;
10996
11603
  };
10997
11604
  cookie?: never;
@@ -11069,6 +11676,20 @@ interface operations {
11069
11676
  }[];
11070
11677
  /** @description Opaque next-page cursor; null on the last page. */
11071
11678
  cursor?: string | null;
11679
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
11680
+ notices?: {
11681
+ /**
11682
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
11683
+ * @enum {string}
11684
+ */
11685
+ code: "EXPANSION_LIMIT_REACHED";
11686
+ /** @description One sentence explaining the condition and how to resolve it. */
11687
+ message: string;
11688
+ /** @description The request field the notice is about, here expand. */
11689
+ field?: string;
11690
+ /** @description The expansion the notice is about, here public_identifier. */
11691
+ value?: string;
11692
+ }[];
11072
11693
  };
11073
11694
  };
11074
11695
  };
@@ -11163,7 +11784,7 @@ interface operations {
11163
11784
  query?: never;
11164
11785
  header?: never;
11165
11786
  path: {
11166
- /** @description The account ID (`acc_…`) to send the InMail from. */
11787
+ /** @description The account ID (`acc_...`) to send the InMail from. */
11167
11788
  account_id: string;
11168
11789
  };
11169
11790
  cookie?: never;
@@ -11171,7 +11792,7 @@ interface operations {
11171
11792
  requestBody: {
11172
11793
  content: {
11173
11794
  "application/json": {
11174
- /** @description LinkedIn member URN (`urn:li:member:<id>`) or member provider id (`ACo…`). */
11795
+ /** @description LinkedIn member URN (`urn:li:member:<id>`) or member provider id (`ACo...`). */
11175
11796
  recipient_urn: string;
11176
11797
  /** @description InMail subject line (1-200 chars). */
11177
11798
  subject: string;
@@ -11307,7 +11928,7 @@ interface operations {
11307
11928
  };
11308
11929
  header?: never;
11309
11930
  path: {
11310
- /** @description The account ID (`acc_…`) whose inboxes to list. */
11931
+ /** @description The account ID (`acc_...`) whose inboxes to list. */
11311
11932
  account_id: string;
11312
11933
  };
11313
11934
  cookie?: never;
@@ -11432,10 +12053,12 @@ interface operations {
11432
12053
  limit?: number;
11433
12054
  /** @description An opaque cursor for pagination. Pass the `cursor` from the preceding response to fetch the next page. */
11434
12055
  cursor?: string;
12056
+ /** @description Additional response fields to resolve, comma-separated in a single value (for example expand=public_identifier). Accepted values: public_identifier. When requested, the field is present on every user object in the response, carrying either a value or null. Omit for the base fields only. Pass the parameter once; repeating it drops values. At most 25 people per request need an extra lookup to resolve; anyone beyond that carries null, so ask for a smaller page to resolve them all. */
12057
+ expand?: string;
11435
12058
  };
11436
12059
  header?: never;
11437
12060
  path: {
11438
- /** @description The account ID (`acc_…`) whose inbox to list. */
12061
+ /** @description The account ID (`acc_...`) whose inbox to list. */
11439
12062
  account_id: string;
11440
12063
  /** @description The inbox ID (e.g. 'CLASSIC_PRIMARY' or 'COMPANY_83734124_PRIMARY') from GET /inboxes. */
11441
12064
  inbox_id: string;
@@ -11546,6 +12169,22 @@ interface operations {
11546
12169
  reaction_count?: number;
11547
12170
  /** @description The platform this message originates from. */
11548
12171
  provider?: string;
12172
+ /** @description The sender's profile, when the platform returned one alongside the message. sender_id always carries the identifier; this object carries the rest of what is known about that person. */
12173
+ sender?: {
12174
+ /** @description Identifier of the counterpart. */
12175
+ id?: string;
12176
+ /** @description individual | organization. */
12177
+ type?: string;
12178
+ display_name?: string;
12179
+ profile_url?: string;
12180
+ public_picture_url?: string;
12181
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
12182
+ public_identifier?: string | null;
12183
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
12184
+ specifics?: {
12185
+ [key: string]: unknown;
12186
+ };
12187
+ };
11549
12188
  };
11550
12189
  /** @description The 1:1 counterpart's profile. */
11551
12190
  user?: {
@@ -11556,10 +12195,26 @@ interface operations {
11556
12195
  display_name?: string;
11557
12196
  profile_url?: string;
11558
12197
  public_picture_url?: string;
12198
+ /** @description The vanity slug from the profile URL, for example jane-smith. Present only when the request asks for it with expand=public_identifier, and then always present, carrying the slug or null when the platform surfaces none for this person. */
12199
+ public_identifier?: string | null;
11559
12200
  };
11560
12201
  }[];
11561
12202
  /** @description Next-page cursor. Follow until items is empty. */
11562
12203
  cursor?: string | null;
12204
+ /** @description Present only when expand=public_identifier was asked for and this page held more people needing a profile lookup than one request performs. Absent whenever there is nothing to report, so a response that resolved everyone carries no such key. Branch on each entry's code, never on its message. */
12205
+ notices?: {
12206
+ /**
12207
+ * @description EXPANSION_LIMIT_REACHED: more people on this page needed a profile lookup than one request performs, so the ones past the budget carry public_identifier null without ever having been looked up. Their null therefore does not mean the person has no public profile. Ask for a smaller page to resolve everyone.
12208
+ * @enum {string}
12209
+ */
12210
+ code: "EXPANSION_LIMIT_REACHED";
12211
+ /** @description One sentence explaining the condition and how to resolve it. */
12212
+ message: string;
12213
+ /** @description The request field the notice is about, here expand. */
12214
+ field?: string;
12215
+ /** @description The expansion the notice is about, here public_identifier. */
12216
+ value?: string;
12217
+ }[];
11563
12218
  };
11564
12219
  };
11565
12220
  };
@@ -11685,7 +12340,7 @@ interface operations {
11685
12340
  /** @description The post's author. On `sort=recent` only `name` resolves (`type` is `other`, the rest null). */
11686
12341
  author: {
11687
12342
  /**
11688
- * @description Person → individual; company/showcase/sponsored → organization; unresolved (every recent author) → other.
12343
+ * @description Person -> individual; company/showcase/sponsored -> organization; unresolved (every recent author) -> other.
11689
12344
  * @enum {string}
11690
12345
  */
11691
12346
  type: "individual" | "organization" | "other";
@@ -11695,7 +12350,7 @@ interface operations {
11695
12350
  headline: string | null;
11696
12351
  /** @description Relative time label as rendered ("6d", "1w") or "Promoted" for sponsored posts. Locale-dependent. null on recent. */
11697
12352
  posted_ago: string | null;
11698
- /** @description Obfuscated member id (ACoAA…), set for person authors (relevant). */
12353
+ /** @description Obfuscated member id (ACoAA...), set for person authors (relevant). */
11699
12354
  member_id: string | null;
11700
12355
  /** @description Numeric member id, the strongest durable cross-action join key. Person authors (relevant). */
11701
12356
  numeric_id: string | null;
@@ -11993,7 +12648,7 @@ interface operations {
11993
12648
  path: {
11994
12649
  /** @description The connected LinkedIn account whose notifications to read or act on. */
11995
12650
  account_id: string;
11996
- /** @description The card urn to delete, the `card_urn` field of a GET /v1/{account_id}/notifications item (urn:li:fsd_notificationCard:…). Pass the card urn, NOT object_urn (which targets the wrong notification). Percent-encode it into the path. This cannot be undone. */
12651
+ /** @description The card urn to delete, the `card_urn` field of a GET /v1/{account_id}/notifications item (urn:li:fsd_notificationCard:...). Pass the card urn, NOT object_urn (which targets the wrong notification). Percent-encode it into the path. This cannot be undone. */
11997
12652
  card_urn: string;
11998
12653
  };
11999
12654
  cookie?: never;
@@ -12224,7 +12879,7 @@ interface operations {
12224
12879
  };
12225
12880
  header?: never;
12226
12881
  path: {
12227
- /** @description The account ID (`acc_…`) to use for the request. */
12882
+ /** @description The account ID (`acc_...`) to use for the request. */
12228
12883
  account_id: string;
12229
12884
  /** @description "me" for the caller's own account, or another LinkedIn user's public identifier, member ID, or profile URL. */
12230
12885
  user_id: string;
@@ -12304,10 +12959,14 @@ interface operations {
12304
12959
  /** @description File size in bytes, when known. */
12305
12960
  file_size?: number;
12306
12961
  }[];
12307
- /** @description The post this comment was made on. */
12962
+ /** @description The post this comment was made on. Use `urn` to tell whether you have already commented on a given post; `id` varies with the surface that returned it, `urn` does not. */
12308
12963
  parent_post?: {
12309
- /** @description The post's identifier. */
12964
+ /** @description The post's identifier as returned on this surface. Use this value, not `urn`, on sub-resource operations such as commenting. */
12310
12965
  id?: string;
12966
+ /** @description Stable identifier for the parent post, in `urn:li:activity:ID` or `urn:li:ugcPost:ID` form. Compare it against a post's own `urn` to join a comment to its parent, including posts whose identity is a ugcPost. Also accepted as the post_id path param on get-post. null when the post carries no resolvable identity, and two nulls are not a match: treat null as unknown, never as equal. */
12967
+ urn?: string | null;
12968
+ /** @description ISO-8601 UTC datetime the parent post was created, or null if unavailable. This is the post's own creation time, not the time of the comment. */
12969
+ created_at?: string | null;
12311
12970
  /**
12312
12971
  * @description Response type discriminator.
12313
12972
  * @enum {string}
@@ -12409,9 +13068,9 @@ interface operations {
12409
13068
  };
12410
13069
  header?: never;
12411
13070
  path: {
12412
- /** @description The account ID (`acc_…`) to use for the request. */
13071
+ /** @description The account ID (`acc_...`) to use for the request. */
12413
13072
  account_id: string;
12414
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13073
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
12415
13074
  post_id: string;
12416
13075
  };
12417
13076
  cookie?: never;
@@ -12577,9 +13236,9 @@ interface operations {
12577
13236
  query?: never;
12578
13237
  header?: never;
12579
13238
  path: {
12580
- /** @description The account ID (`acc_…`) to comment as. */
13239
+ /** @description The account ID (`acc_...`) to comment as. */
12581
13240
  account_id: string;
12582
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13241
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
12583
13242
  post_id: string;
12584
13243
  };
12585
13244
  cookie?: never;
@@ -12780,9 +13439,9 @@ interface operations {
12780
13439
  query?: never;
12781
13440
  header?: never;
12782
13441
  path: {
12783
- /** @description The account ID (`acc_…`) to reply as. */
13442
+ /** @description The account ID (`acc_...`) to reply as. */
12784
13443
  account_id: string;
12785
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13444
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
12786
13445
  post_id: string;
12787
13446
  /** @description The parent comment's `id` (a bare numeric string), as returned by comment_on_post / list_comment_replies. */
12788
13447
  comment_id: string;
@@ -12985,9 +13644,9 @@ interface operations {
12985
13644
  query?: never;
12986
13645
  header?: never;
12987
13646
  path: {
12988
- /** @description The account ID (`acc_…`) that authored the comment. */
13647
+ /** @description The account ID (`acc_...`) that authored the comment. */
12989
13648
  account_id: string;
12990
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13649
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
12991
13650
  post_id: string;
12992
13651
  /** @description The comment's `id` (a bare numeric string), as returned by comment_on_post / list_comment_replies. */
12993
13652
  comment_id: string;
@@ -13098,9 +13757,9 @@ interface operations {
13098
13757
  query?: never;
13099
13758
  header?: never;
13100
13759
  path: {
13101
- /** @description The account ID (`acc_…`) that authored the comment. */
13760
+ /** @description The account ID (`acc_...`) that authored the comment. */
13102
13761
  account_id: string;
13103
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13762
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13104
13763
  post_id: string;
13105
13764
  /** @description The comment's `id` (a bare numeric string), as returned by comment_on_post / list_comment_replies. */
13106
13765
  comment_id: string;
@@ -13279,9 +13938,9 @@ interface operations {
13279
13938
  };
13280
13939
  header?: never;
13281
13940
  path: {
13282
- /** @description The account ID (`acc_…`) to use for the request. */
13941
+ /** @description The account ID (`acc_...`) to use for the request. */
13283
13942
  account_id: string;
13284
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13943
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13285
13944
  post_id: string;
13286
13945
  /** @description The parent comment's `id` (a bare numeric string), as returned by comment_on_post / list_comment_replies. */
13287
13946
  comment_id: string;
@@ -13456,9 +14115,9 @@ interface operations {
13456
14115
  };
13457
14116
  header?: never;
13458
14117
  path: {
13459
- /** @description The account ID (`acc_…`) to use for the request. */
14118
+ /** @description The account ID (`acc_...`) to use for the request. */
13460
14119
  account_id: string;
13461
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
14120
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13462
14121
  post_id: string;
13463
14122
  /** @description The comment's `id` (a bare numeric string), as returned by comment_on_post / list_comment_replies. */
13464
14123
  comment_id: string;
@@ -13594,9 +14253,9 @@ interface operations {
13594
14253
  query?: never;
13595
14254
  header?: never;
13596
14255
  path: {
13597
- /** @description The account ID (`acc_…`) to react from. */
14256
+ /** @description The account ID (`acc_...`) to react from. */
13598
14257
  account_id: string;
13599
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
14258
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13600
14259
  post_id: string;
13601
14260
  /** @description The comment's `id` (a bare numeric string), as returned by comment_on_post / list_comment_replies. */
13602
14261
  comment_id: string;
@@ -13732,9 +14391,9 @@ interface operations {
13732
14391
  query?: never;
13733
14392
  header?: never;
13734
14393
  path: {
13735
- /** @description The account ID (`acc_…`) whose reaction to remove. */
14394
+ /** @description The account ID (`acc_...`) whose reaction to remove. */
13736
14395
  account_id: string;
13737
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
14396
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
13738
14397
  post_id: string;
13739
14398
  /** @description The comment's `id` (a bare numeric string), as returned by comment_on_post / list_comment_replies. */
13740
14399
  comment_id: string;
@@ -13868,7 +14527,7 @@ interface operations {
13868
14527
  query?: never;
13869
14528
  header?: never;
13870
14529
  path: {
13871
- /** @description The account ID (`acc_…`) to act on behalf of. */
14530
+ /** @description The account ID (`acc_...`) to act on behalf of. */
13872
14531
  account_id: string;
13873
14532
  };
13874
14533
  cookie?: never;
@@ -13898,7 +14557,7 @@ interface operations {
13898
14557
  * @enum {string}
13899
14558
  */
13900
14559
  object: "invitation_sent";
13901
- /** @description Direction-prefixed connect-request id (SENT_…). */
14560
+ /** @description Direction-prefixed connect-request id (SENT_...). */
13902
14561
  id: string;
13903
14562
  /**
13904
14563
  * @description Outcome status.
@@ -14035,7 +14694,7 @@ interface operations {
14035
14694
  };
14036
14695
  header?: never;
14037
14696
  path: {
14038
- /** @description The account ID (`acc_…`) to list sent connect-requests for. */
14697
+ /** @description The account ID (`acc_...`) to list sent connect-requests for. */
14039
14698
  account_id: string;
14040
14699
  };
14041
14700
  cookie?: never;
@@ -14063,7 +14722,7 @@ interface operations {
14063
14722
  * @enum {string}
14064
14723
  */
14065
14724
  object: "invitation_sent";
14066
- /** @description Direction-prefixed connect-request id (SENT_…). */
14725
+ /** @description Direction-prefixed connect-request id (SENT_...). */
14067
14726
  id: string;
14068
14727
  /** @description ISO-8601 UTC datetime the connect-request was created. Optional, omitted when the platform does not return it. */
14069
14728
  created_at?: string;
@@ -14189,7 +14848,7 @@ interface operations {
14189
14848
  };
14190
14849
  header?: never;
14191
14850
  path: {
14192
- /** @description The account ID (`acc_…`) to list received connect-requests for. */
14851
+ /** @description The account ID (`acc_...`) to list received connect-requests for. */
14193
14852
  account_id: string;
14194
14853
  };
14195
14854
  cookie?: never;
@@ -14217,7 +14876,7 @@ interface operations {
14217
14876
  * @enum {string}
14218
14877
  */
14219
14878
  object: "invitation_received";
14220
- /** @description Direction-prefixed connect-request id (RECEIVED_…). */
14879
+ /** @description Direction-prefixed connect-request id (RECEIVED_...). */
14221
14880
  id: string;
14222
14881
  /** @description ISO-8601 UTC datetime the connect-request was created. Optional, omitted when the platform does not return it. */
14223
14882
  created_at?: string;
@@ -14342,7 +15001,7 @@ interface operations {
14342
15001
  query?: never;
14343
15002
  header?: never;
14344
15003
  path: {
14345
- /** @description The account ID (`acc_…`) to act on behalf of. */
15004
+ /** @description The account ID (`acc_...`) to act on behalf of. */
14346
15005
  account_id: string;
14347
15006
  /** @description The received connect-request's id (from GET .../invites/received items[].id). */
14348
15007
  invitation_id: string;
@@ -14457,7 +15116,7 @@ interface operations {
14457
15116
  query?: never;
14458
15117
  header?: never;
14459
15118
  path: {
14460
- /** @description The account ID (`acc_…`) to act on behalf of. */
15119
+ /** @description The account ID (`acc_...`) to act on behalf of. */
14461
15120
  account_id: string;
14462
15121
  /** @description The received connect-request's id (from GET .../invites/received items[].id). */
14463
15122
  invitation_id: string;
@@ -14572,7 +15231,7 @@ interface operations {
14572
15231
  query?: never;
14573
15232
  header?: never;
14574
15233
  path: {
14575
- /** @description The account ID (`acc_…`) to act on behalf of. */
15234
+ /** @description The account ID (`acc_...`) to act on behalf of. */
14576
15235
  account_id: string;
14577
15236
  /** @description The sent connect-request's id to withdraw. */
14578
15237
  invitation_id: string;
@@ -16531,7 +17190,7 @@ interface operations {
16531
17190
  query?: never;
16532
17191
  header?: never;
16533
17192
  path: {
16534
- /** @description The account ID (`acc_…`) to use for the request. */
17193
+ /** @description The account ID (`acc_...`) to use for the request. */
16535
17194
  account_id: string;
16536
17195
  /** @description The post's `id`, as returned by get-post / list-posts. Full LinkedIn share URLs are also accepted (e.g. `https://www.linkedin.com/posts/someone_title-activity-7332661864792854528-Qh99/` or `https://www.linkedin.com/feed/update/urn:li:activity:7332661864792854528-slug`). Bare numeric ids and URN forms are also accepted: `7332661864792854528`, `urn:li:activity:N`, `urn:li:ugcPost:N`, `urn:li:share:N`. */
16537
17196
  post_id: string;
@@ -16554,15 +17213,17 @@ interface operations {
16554
17213
  * @enum {string}
16555
17214
  */
16556
17215
  object?: "post";
16557
- /** @description The post's own identifier, use this value as the post_id path param on sub-resource endpoints. */
17216
+ /** @description The post's own identifier as returned on this surface, use this value as the post_id path param on sub-resource endpoints. Its exact value can differ between two responses about the same post, so compare `urn` rather than `id` when you need to tell whether two responses describe one post. */
16558
17217
  id?: string;
17218
+ /** @description Stable identifier for the post itself, in `urn:li:activity:ID` or `urn:li:ugcPost:ID` form. Unlike `id`, this value is the same however you reached the post, so compare it to decide whether two responses describe the same post; a comment's `parent_post.urn` joins to it directly. For a repost it names the post being reshared, so reshares of one post share a `urn` while each keeps its own `created_at`. It is also accepted as the post_id path param on get-post; sub-resource operations still need the opaque `id`. null when the post carries no resolvable identity, and two nulls are not a match: treat null as unknown, never as equal. */
17219
+ urn?: string | null;
16559
17220
  /** @description Shareable URL for the post. */
16560
17221
  share_url?: string | null;
16561
17222
  /** @description Post title, or null if not set. */
16562
17223
  title?: string | null;
16563
17224
  /** @description Full post text (content pass-through, never stored). */
16564
17225
  text?: string | null;
16565
- /** @description ISO-8601 UTC datetime the post was created, or null if unavailable. */
17226
+ /** @description ISO-8601 UTC datetime this post was created, or null if unavailable. Derived from the post's own identity, so it does not change with the route you used to reach it. For a repost this is when the repost was made, not when the post it reshares was, so it is safe to sort by recency. */
16566
17227
  created_at?: string | null;
16567
17228
  /** @description Total comment count, or null when the platform hides it. */
16568
17229
  comment_count?: number | null;
@@ -16706,7 +17367,7 @@ interface operations {
16706
17367
  query?: never;
16707
17368
  header?: never;
16708
17369
  path: {
16709
- /** @description The account ID (`acc_…`) that owns the post. */
17370
+ /** @description The account ID (`acc_...`) that owns the post. */
16710
17371
  account_id: string;
16711
17372
  /** @description The post's `id`, as returned by get-post / list-posts. Full LinkedIn share URLs are also accepted (e.g. `https://www.linkedin.com/posts/someone_title-activity-7332661864792854528-Qh99/` or `https://www.linkedin.com/feed/update/urn:li:activity:7332661864792854528-slug`). Bare numeric ids and URN forms are also accepted: `7332661864792854528`, `urn:li:activity:N`, `urn:li:ugcPost:N`, `urn:li:share:N`. */
16712
17373
  post_id: string;
@@ -16817,7 +17478,7 @@ interface operations {
16817
17478
  query?: never;
16818
17479
  header?: never;
16819
17480
  path: {
16820
- /** @description The account ID (`acc_…`) to post as. */
17481
+ /** @description The account ID (`acc_...`) to post as. */
16821
17482
  account_id: string;
16822
17483
  };
16823
17484
  cookie?: never;
@@ -16987,7 +17648,7 @@ interface operations {
16987
17648
  };
16988
17649
  header?: never;
16989
17650
  path: {
16990
- /** @description The account ID (`acc_…`) to use for the request. */
17651
+ /** @description The account ID (`acc_...`) to use for the request. */
16991
17652
  account_id: string;
16992
17653
  /** @description "me" for the caller's own account, or another LinkedIn user's public identifier, member ID, or profile URL. */
16993
17654
  user_id: string;
@@ -17017,15 +17678,17 @@ interface operations {
17017
17678
  * @enum {string}
17018
17679
  */
17019
17680
  object?: "post";
17020
- /** @description The post's own identifier, use this value as the post_id path param on sub-resource endpoints. */
17681
+ /** @description The post's own identifier as returned on this surface, use this value as the post_id path param on sub-resource endpoints. Its exact value can differ between two responses about the same post, so compare `urn` rather than `id` when you need to tell whether two responses describe one post. */
17021
17682
  id?: string;
17683
+ /** @description Stable identifier for the post itself, in `urn:li:activity:ID` or `urn:li:ugcPost:ID` form. Unlike `id`, this value is the same however you reached the post, so compare it to decide whether two responses describe the same post; a comment's `parent_post.urn` joins to it directly. For a repost it names the post being reshared, so reshares of one post share a `urn` while each keeps its own `created_at`. It is also accepted as the post_id path param on get-post; sub-resource operations still need the opaque `id`. null when the post carries no resolvable identity, and two nulls are not a match: treat null as unknown, never as equal. */
17684
+ urn?: string | null;
17022
17685
  /** @description Shareable URL for the post. */
17023
17686
  share_url?: string | null;
17024
17687
  /** @description Post title, or null if not set. */
17025
17688
  title?: string | null;
17026
17689
  /** @description Full post text (content pass-through, never stored). */
17027
17690
  text?: string | null;
17028
- /** @description ISO-8601 UTC datetime the post was created, or null if unavailable. */
17691
+ /** @description ISO-8601 UTC datetime this post was created, or null if unavailable. Derived from the post's own identity, so it does not change with the route you used to reach it. For a repost this is when the repost was made, not when the post it reshares was, so it is safe to sort by recency. */
17029
17692
  created_at?: string | null;
17030
17693
  /** @description Total comment count, or null when the platform hides it. */
17031
17694
  comment_count?: number | null;
@@ -17177,9 +17840,9 @@ interface operations {
17177
17840
  };
17178
17841
  header?: never;
17179
17842
  path: {
17180
- /** @description The account ID (`acc_…`) to use for the request. */
17843
+ /** @description The account ID (`acc_...`) to use for the request. */
17181
17844
  account_id: string;
17182
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
17845
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
17183
17846
  post_id: string;
17184
17847
  };
17185
17848
  cookie?: never;
@@ -17320,9 +17983,9 @@ interface operations {
17320
17983
  query?: never;
17321
17984
  header?: never;
17322
17985
  path: {
17323
- /** @description The account ID (`acc_…`) to react from. */
17986
+ /** @description The account ID (`acc_...`) to react from. */
17324
17987
  account_id: string;
17325
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
17988
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
17326
17989
  post_id: string;
17327
17990
  };
17328
17991
  cookie?: never;
@@ -17454,9 +18117,9 @@ interface operations {
17454
18117
  query?: never;
17455
18118
  header?: never;
17456
18119
  path: {
17457
- /** @description The account ID (`acc_…`) whose reaction to remove. */
18120
+ /** @description The account ID (`acc_...`) whose reaction to remove. */
17458
18121
  account_id: string;
17459
- /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:…`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
18122
+ /** @description The post's `id` exactly as returned by get-post / list-posts (the opaque id form). Other id forms (bare numeric, `urn:li:...`, share URLs) are not accepted on this operation; fetch the post first and use its `id` verbatim. */
17460
18123
  post_id: string;
17461
18124
  };
17462
18125
  cookie?: never;
@@ -17591,7 +18254,7 @@ interface operations {
17591
18254
  };
17592
18255
  header?: never;
17593
18256
  path: {
17594
- /** @description The account ID (`acc_…`) to use for the request. */
18257
+ /** @description The account ID (`acc_...`) to use for the request. */
17595
18258
  account_id: string;
17596
18259
  /** @description "me" for the caller's own account, or another LinkedIn user's public identifier, member ID, or profile URL. */
17597
18260
  user_id: string;
@@ -17630,8 +18293,20 @@ interface operations {
17630
18293
  is_sender?: boolean;
17631
18294
  /** @description The user who made the reaction. */
17632
18295
  sender?: Record<string, never>;
17633
- /** @description The post this reaction was made on (full Post or a lighter preview). */
17634
- parent_post?: Record<string, never>;
18296
+ /** @description The post this reaction was made on (full Post or a lighter preview). Its `urn` is the stable identifier for that post, so compare it against a post's own `urn` to tell whether you already reacted to it. */
18297
+ parent_post?: {
18298
+ /**
18299
+ * @description Response type discriminator.
18300
+ * @enum {string}
18301
+ */
18302
+ object?: "post";
18303
+ /** @description The post's identifier as returned on this surface. Use this value, not `urn`, on sub-resource operations. */
18304
+ id?: string;
18305
+ /** @description Stable identifier for the parent post, in `urn:li:activity:ID` or `urn:li:ugcPost:ID` form. Also accepted as the post_id path param on get-post. null when the post carries no resolvable identity, and two nulls are not a match: treat null as unknown, never as equal. */
18306
+ urn?: string | null;
18307
+ /** @description ISO-8601 UTC datetime the parent post was created, or null if unavailable. This is the post's own creation time, not the time of the reaction. */
18308
+ created_at?: string | null;
18309
+ };
17635
18310
  }[];
17636
18311
  /** @description Next-page cursor; null on the last page. */
17637
18312
  cursor?: string | null;
@@ -17725,7 +18400,7 @@ interface operations {
17725
18400
  };
17726
18401
  header?: never;
17727
18402
  path: {
17728
- /** @description The account ID (`acc_…`) whose OWN saved posts to list. */
18403
+ /** @description The account ID (`acc_...`) whose OWN saved posts to list. */
17729
18404
  account_id: string;
17730
18405
  };
17731
18406
  cookie?: never;
@@ -17885,7 +18560,7 @@ interface operations {
17885
18560
  query?: never;
17886
18561
  header?: never;
17887
18562
  path: {
17888
- /** @description The account ID (`acc_…`) that performs the save. */
18563
+ /** @description The account ID (`acc_...`) that performs the save. */
17889
18564
  account_id: string;
17890
18565
  };
17891
18566
  cookie?: never;
@@ -18011,7 +18686,7 @@ interface operations {
18011
18686
  query?: never;
18012
18687
  header?: never;
18013
18688
  path: {
18014
- /** @description The account ID (`acc_…`) that performs the unsave. */
18689
+ /** @description The account ID (`acc_...`) that performs the unsave. */
18015
18690
  account_id: string;
18016
18691
  /** @description The post to unsave. Accepts `urn:li:activity:<id>` or a bare numeric `<id>`. */
18017
18692
  post_id: string;
@@ -18135,7 +18810,7 @@ interface operations {
18135
18810
  };
18136
18811
  header?: never;
18137
18812
  path: {
18138
- /** @description The account ID (`acc_…`) whose Recruiter seat resolves the profile view. */
18813
+ /** @description The account ID (`acc_...`) whose Recruiter seat resolves the profile view. */
18139
18814
  account_id: string;
18140
18815
  /** @description The target profile: 'me', a public identifier, or a member ID. */
18141
18816
  user_id: string;
@@ -18365,7 +19040,7 @@ interface operations {
18365
19040
  query?: never;
18366
19041
  header?: never;
18367
19042
  path: {
18368
- /** @description The account ID (`acc_…`) whose Recruiter seat starts the chat. */
19043
+ /** @description The account ID (`acc_...`) whose Recruiter seat starts the chat. */
18369
19044
  account_id: string;
18370
19045
  };
18371
19046
  cookie?: never;
@@ -18373,11 +19048,11 @@ interface operations {
18373
19048
  requestBody: {
18374
19049
  content: {
18375
19050
  "application/json": {
18376
- /** @description One or more Recruiter member IDs (AE… format) to include in the chat. */
19051
+ /** @description One or more Recruiter member IDs (AE... format) to include in the chat. */
18377
19052
  attendees_ids: string[];
18378
19053
  /** @description Opening message text (1-8000 chars). Passed to the platform and discarded; never stored or logged. */
18379
19054
  text: string;
18380
- /** @description Subject line; REQUIRED for Recruiter (InMail-based messaging), unlike the classic surface (≤ 200 chars). */
19055
+ /** @description Subject line; REQUIRED for Recruiter (InMail-based messaging), unlike the classic surface (<= 200 chars). */
18381
19056
  subject: string;
18382
19057
  /** @description Sender signature; REQUIRED for Recruiter. Not stored or logged. */
18383
19058
  signature: string;
@@ -18605,7 +19280,7 @@ interface operations {
18605
19280
  };
18606
19281
  header?: never;
18607
19282
  path: {
18608
- /** @description The account ID (`acc_…`) whose Recruiter seat performs the search. */
19283
+ /** @description The account ID (`acc_...`) whose Recruiter seat performs the search. */
18609
19284
  account_id: string;
18610
19285
  };
18611
19286
  cookie?: never;
@@ -18899,7 +19574,7 @@ interface operations {
18899
19574
  };
18900
19575
  header?: never;
18901
19576
  path: {
18902
- /** @description The account ID (`acc_…`) whose Recruiter seat resolves the parameters. */
19577
+ /** @description The account ID (`acc_...`) whose Recruiter seat resolves the parameters. */
18903
19578
  account_id: string;
18904
19579
  };
18905
19580
  cookie?: never;
@@ -19088,7 +19763,7 @@ interface operations {
19088
19763
  };
19089
19764
  header?: never;
19090
19765
  path: {
19091
- /** @description The account ID (`acc_…`) whose Recruiter seat lists the projects. */
19766
+ /** @description The account ID (`acc_...`) whose Recruiter seat lists the projects. */
19092
19767
  account_id: string;
19093
19768
  };
19094
19769
  cookie?: never;
@@ -19301,9 +19976,9 @@ interface operations {
19301
19976
  query?: never;
19302
19977
  header?: never;
19303
19978
  path: {
19304
- /** @description The account ID (`acc_…`) whose Recruiter seat resolves the project. */
19979
+ /** @description The account ID (`acc_...`) whose Recruiter seat resolves the project. */
19305
19980
  account_id: string;
19306
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
19981
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
19307
19982
  project_id: string;
19308
19983
  };
19309
19984
  cookie?: never;
@@ -19504,9 +20179,9 @@ interface operations {
19504
20179
  query?: never;
19505
20180
  header?: never;
19506
20181
  path: {
19507
- /** @description The account ID (`acc_…`) whose Recruiter seat edits the project. */
20182
+ /** @description The account ID (`acc_...`) whose Recruiter seat edits the project. */
19508
20183
  account_id: string;
19509
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
20184
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
19510
20185
  project_id: string;
19511
20186
  };
19512
20187
  cookie?: never;
@@ -19666,9 +20341,9 @@ interface operations {
19666
20341
  };
19667
20342
  header?: never;
19668
20343
  path: {
19669
- /** @description The account ID (`acc_…`) whose Recruiter seat lists the pipeline. */
20344
+ /** @description The account ID (`acc_...`) whose Recruiter seat lists the pipeline. */
19670
20345
  account_id: string;
19671
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
20346
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
19672
20347
  project_id: string;
19673
20348
  };
19674
20349
  cookie?: never;
@@ -19910,9 +20585,9 @@ interface operations {
19910
20585
  };
19911
20586
  header?: never;
19912
20587
  path: {
19913
- /** @description The account ID (`acc_…`) whose Recruiter seat performs the search. */
20588
+ /** @description The account ID (`acc_...`) whose Recruiter seat performs the search. */
19914
20589
  account_id: string;
19915
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
20590
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
19916
20591
  project_id: string;
19917
20592
  };
19918
20593
  cookie?: never;
@@ -20208,7 +20883,7 @@ interface operations {
20208
20883
  };
20209
20884
  header?: never;
20210
20885
  path: {
20211
- /** @description The account ID (`acc_…`) whose Recruiter seat performs the search. */
20886
+ /** @description The account ID (`acc_...`) whose Recruiter seat performs the search. */
20212
20887
  account_id: string;
20213
20888
  };
20214
20889
  cookie?: never;
@@ -20535,9 +21210,9 @@ interface operations {
20535
21210
  query?: never;
20536
21211
  header?: never;
20537
21212
  path: {
20538
- /** @description The account ID (`acc_…`) whose Recruiter seat resolves the job posting. */
21213
+ /** @description The account ID (`acc_...`) whose Recruiter seat resolves the job posting. */
20539
21214
  account_id: string;
20540
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
21215
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
20541
21216
  project_id: string;
20542
21217
  };
20543
21218
  cookie?: never;
@@ -20705,9 +21380,9 @@ interface operations {
20705
21380
  query?: never;
20706
21381
  header?: never;
20707
21382
  path: {
20708
- /** @description The account ID (`acc_…`) whose Recruiter seat creates the draft. */
21383
+ /** @description The account ID (`acc_...`) whose Recruiter seat creates the draft. */
20709
21384
  account_id: string;
20710
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
21385
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
20711
21386
  project_id: string;
20712
21387
  };
20713
21388
  cookie?: never;
@@ -20912,11 +21587,11 @@ interface operations {
20912
21587
  query?: never;
20913
21588
  header?: never;
20914
21589
  path: {
20915
- /** @description The account ID (`acc_…`) whose Recruiter seat resolves the budget. */
21590
+ /** @description The account ID (`acc_...`) whose Recruiter seat resolves the budget. */
20916
21591
  account_id: string;
20917
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
21592
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
20918
21593
  project_id: string;
20919
- /** @description The job posting ID. Obtain it from GET …/recruiter/projects/{project_id}/jobs. */
21594
+ /** @description The job posting ID. Obtain it from GET .../recruiter/projects/{project_id}/jobs. */
20920
21595
  job_id: string;
20921
21596
  };
20922
21597
  cookie?: never;
@@ -21074,7 +21749,7 @@ interface operations {
21074
21749
  };
21075
21750
  header?: never;
21076
21751
  path: {
21077
- /** @description The account ID (`acc_…`) whose Recruiter seat lists the job postings. */
21752
+ /** @description The account ID (`acc_...`) whose Recruiter seat lists the job postings. */
21078
21753
  account_id: string;
21079
21754
  };
21080
21755
  cookie?: never;
@@ -21221,7 +21896,7 @@ interface operations {
21221
21896
  query?: never;
21222
21897
  header?: never;
21223
21898
  path: {
21224
- /** @description The account ID (`acc_…`) whose Recruiter seat creates the draft. */
21899
+ /** @description The account ID (`acc_...`) whose Recruiter seat creates the draft. */
21225
21900
  account_id: string;
21226
21901
  };
21227
21902
  cookie?: never;
@@ -21428,9 +22103,9 @@ interface operations {
21428
22103
  query?: never;
21429
22104
  header?: never;
21430
22105
  path: {
21431
- /** @description The account ID (`acc_…`) whose Recruiter seat resolves the job posting. */
22106
+ /** @description The account ID (`acc_...`) whose Recruiter seat resolves the job posting. */
21432
22107
  account_id: string;
21433
- /** @description The job posting ID. Obtain it from data[].id of GET …/recruiter/jobs. */
22108
+ /** @description The job posting ID. Obtain it from data[].id of GET .../recruiter/jobs. */
21434
22109
  job_id: string;
21435
22110
  };
21436
22111
  cookie?: never;
@@ -21598,11 +22273,11 @@ interface operations {
21598
22273
  query?: never;
21599
22274
  header?: never;
21600
22275
  path: {
21601
- /** @description The account ID (`acc_…`) whose Recruiter seat edits the posting. */
22276
+ /** @description The account ID (`acc_...`) whose Recruiter seat edits the posting. */
21602
22277
  account_id: string;
21603
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
22278
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
21604
22279
  project_id: string;
21605
- /** @description The job posting ID. Obtain it from GET …/recruiter/projects/{project_id}/jobs. */
22280
+ /** @description The job posting ID. Obtain it from GET .../recruiter/projects/{project_id}/jobs. */
21606
22281
  job_id: string;
21607
22282
  };
21608
22283
  cookie?: never;
@@ -21805,11 +22480,11 @@ interface operations {
21805
22480
  query?: never;
21806
22481
  header?: never;
21807
22482
  path: {
21808
- /** @description The account ID (`acc_…`) whose Recruiter seat publishes the posting. */
22483
+ /** @description The account ID (`acc_...`) whose Recruiter seat publishes the posting. */
21809
22484
  account_id: string;
21810
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
22485
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
21811
22486
  project_id: string;
21812
- /** @description The job posting ID. Obtain it from GET …/recruiter/projects/{project_id}/jobs. */
22487
+ /** @description The job posting ID. Obtain it from GET .../recruiter/projects/{project_id}/jobs. */
21813
22488
  job_id: string;
21814
22489
  };
21815
22490
  cookie?: never;
@@ -21990,11 +22665,11 @@ interface operations {
21990
22665
  query?: never;
21991
22666
  header?: never;
21992
22667
  path: {
21993
- /** @description The account ID (`acc_…`) whose Recruiter seat closes the posting. */
22668
+ /** @description The account ID (`acc_...`) whose Recruiter seat closes the posting. */
21994
22669
  account_id: string;
21995
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
22670
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
21996
22671
  project_id: string;
21997
- /** @description The job posting ID. Obtain it from GET …/recruiter/projects/{project_id}/jobs. */
22672
+ /** @description The job posting ID. Obtain it from GET .../recruiter/projects/{project_id}/jobs. */
21998
22673
  job_id: string;
21999
22674
  };
22000
22675
  cookie?: never;
@@ -22118,9 +22793,9 @@ interface operations {
22118
22793
  query?: never;
22119
22794
  header?: never;
22120
22795
  path: {
22121
- /** @description The account ID (`acc_…`) whose Recruiter seat saves the candidate. */
22796
+ /** @description The account ID (`acc_...`) whose Recruiter seat saves the candidate. */
22122
22797
  account_id: string;
22123
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
22798
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
22124
22799
  project_id: string;
22125
22800
  };
22126
22801
  cookie?: never;
@@ -22258,9 +22933,9 @@ interface operations {
22258
22933
  };
22259
22934
  header?: never;
22260
22935
  path: {
22261
- /** @description The account ID (`acc_…`) whose Recruiter seat lists the applicants. */
22936
+ /** @description The account ID (`acc_...`) whose Recruiter seat lists the applicants. */
22262
22937
  account_id: string;
22263
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
22938
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
22264
22939
  project_id: string;
22265
22940
  };
22266
22941
  cookie?: never;
@@ -22401,7 +23076,7 @@ interface operations {
22401
23076
  id: string;
22402
23077
  /** @description ISO-8601 timestamp when the application was submitted. */
22403
23078
  applied_at: string;
22404
- /** @description Whether the applicant has a downloadable résumé. Gates GET …/resume. */
23079
+ /** @description Whether the applicant has a downloadable résumé. Gates GET .../resume. */
22405
23080
  has_resume?: boolean;
22406
23081
  /** @description Screening-question responses. */
22407
23082
  screening_questions?: {
@@ -22575,9 +23250,9 @@ interface operations {
22575
23250
  query?: never;
22576
23251
  header?: never;
22577
23252
  path: {
22578
- /** @description The account ID (`acc_…`) whose Recruiter seat resolves the applicant. */
23253
+ /** @description The account ID (`acc_...`) whose Recruiter seat resolves the applicant. */
22579
23254
  account_id: string;
22580
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
23255
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
22581
23256
  project_id: string;
22582
23257
  /** @description The applicant ID, obtained from the list applicants endpoint's data[].id. */
22583
23258
  applicant_id: string;
@@ -22604,7 +23279,7 @@ interface operations {
22604
23279
  id: string;
22605
23280
  /** @description ISO-8601 timestamp when the application was submitted. */
22606
23281
  applied_at: string;
22607
- /** @description Whether the applicant has a downloadable résumé. Gates GET …/resume. */
23282
+ /** @description Whether the applicant has a downloadable résumé. Gates GET .../resume. */
22608
23283
  has_resume?: boolean;
22609
23284
  /** @description Screening-question responses. */
22610
23285
  screening_questions?: {
@@ -22773,9 +23448,9 @@ interface operations {
22773
23448
  query?: never;
22774
23449
  header?: never;
22775
23450
  path: {
22776
- /** @description The account ID (`acc_…`) whose Recruiter seat downloads the résumé. */
23451
+ /** @description The account ID (`acc_...`) whose Recruiter seat downloads the résumé. */
22777
23452
  account_id: string;
22778
- /** @description The project ID. Obtain it from data[].id of GET …/recruiter/projects. */
23453
+ /** @description The project ID. Obtain it from data[].id of GET .../recruiter/projects. */
22779
23454
  project_id: string;
22780
23455
  /** @description The applicant ID, obtained from the list applicants endpoint's data[].id. */
22781
23456
  applicant_id: string;
@@ -22895,7 +23570,7 @@ interface operations {
22895
23570
  query?: never;
22896
23571
  header?: never;
22897
23572
  path: {
22898
- /** @description The account ID (`acc_…`) whose Sales Navigator seat starts the chat. */
23573
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat starts the chat. */
22899
23574
  account_id: string;
22900
23575
  };
22901
23576
  cookie?: never;
@@ -22903,11 +23578,11 @@ interface operations {
22903
23578
  requestBody: {
22904
23579
  content: {
22905
23580
  "application/json": {
22906
- /** @description Sales Navigator member IDs for the chat recipients (≥ 1, e.g. ACw…). */
23581
+ /** @description Sales Navigator member IDs for the chat recipients (>= 1, e.g. ACw...). */
22907
23582
  attendees_ids: string[];
22908
23583
  /** @description Opening message text (1-8000 chars). Not stored or logged. */
22909
23584
  text: string;
22910
- /** @description Subject line; REQUIRED for Sales Navigator (InMail-based messaging), unlike the classic surface where it is optional (≤ 200 chars). Maps into the SN-only specifics branch. */
23585
+ /** @description Subject line; REQUIRED for Sales Navigator (InMail-based messaging), unlike the classic surface where it is optional (<= 200 chars). Maps into the SN-only specifics branch. */
22911
23586
  subject: string;
22912
23587
  /** @description Optional file / voice / video attachments (base64-encoded). */
22913
23588
  attachments?: {
@@ -23075,7 +23750,7 @@ interface operations {
23075
23750
  };
23076
23751
  header?: never;
23077
23752
  path: {
23078
- /** @description The account ID (`acc_…`) whose Sales Navigator seat resolves the profile view. */
23753
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat resolves the profile view. */
23079
23754
  account_id: string;
23080
23755
  /** @description The target profile's public LinkedIn identifier, 'me', or member ID. */
23081
23756
  identifier: string;
@@ -23098,7 +23773,7 @@ interface operations {
23098
23773
  * @enum {string}
23099
23774
  */
23100
23775
  object: "profile";
23101
- /** @description Opaque Sales Navigator identifier (ACw… format). */
23776
+ /** @description Opaque Sales Navigator identifier (ACw... format). */
23102
23777
  id: string;
23103
23778
  /**
23104
23779
  * @description Entity kind.
@@ -23277,7 +23952,7 @@ interface operations {
23277
23952
  };
23278
23953
  header?: never;
23279
23954
  path: {
23280
- /** @description The account ID (`acc_…`) whose Sales Navigator seat owns the lists. */
23955
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat owns the lists. */
23281
23956
  account_id: string;
23282
23957
  };
23283
23958
  cookie?: never;
@@ -23433,7 +24108,7 @@ interface operations {
23433
24108
  };
23434
24109
  header?: never;
23435
24110
  path: {
23436
- /** @description The account ID (`acc_…`) whose Sales Navigator seat owns the lists. */
24111
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat owns the lists. */
23437
24112
  account_id: string;
23438
24113
  };
23439
24114
  cookie?: never;
@@ -23589,7 +24264,7 @@ interface operations {
23589
24264
  };
23590
24265
  header?: never;
23591
24266
  path: {
23592
- /** @description The account ID (`acc_…`) whose Sales Navigator seat owns the list. */
24267
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat owns the list. */
23593
24268
  account_id: string;
23594
24269
  /** @description The account-list id (from GET .../sales-navigator/account-lists). */
23595
24270
  list_id: string;
@@ -23762,7 +24437,7 @@ interface operations {
23762
24437
  };
23763
24438
  header?: never;
23764
24439
  path: {
23765
- /** @description The account ID (`acc_…`) whose Sales Navigator seat owns the list. */
24440
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat owns the list. */
23766
24441
  account_id: string;
23767
24442
  /** @description The lead-list id (from GET .../sales-navigator/lead-lists). */
23768
24443
  list_id: string;
@@ -23928,7 +24603,7 @@ interface operations {
23928
24603
  query?: never;
23929
24604
  header?: never;
23930
24605
  path: {
23931
- /** @description The account ID (`acc_…`) whose Sales Navigator seat saves the account. */
24606
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat saves the account. */
23932
24607
  account_id: string;
23933
24608
  /** @description The target account-list id to save the company into. */
23934
24609
  list_id: string;
@@ -24065,7 +24740,7 @@ interface operations {
24065
24740
  query?: never;
24066
24741
  header?: never;
24067
24742
  path: {
24068
- /** @description The account ID (`acc_…`) whose Sales Navigator seat saves the lead. */
24743
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat saves the lead. */
24069
24744
  account_id: string;
24070
24745
  /** @description The target lead-list id to save the member into. */
24071
24746
  list_id: string;
@@ -24211,7 +24886,7 @@ interface operations {
24211
24886
  };
24212
24887
  header?: never;
24213
24888
  path: {
24214
- /** @description The account ID (`acc_…`) whose Sales Navigator seat resolves the parameters. */
24889
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat resolves the parameters. */
24215
24890
  account_id: string;
24216
24891
  };
24217
24892
  cookie?: never;
@@ -24358,7 +25033,7 @@ interface operations {
24358
25033
  };
24359
25034
  header?: never;
24360
25035
  path: {
24361
- /** @description The account ID (`acc_…`) whose Sales Navigator seat performs the search. */
25036
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat performs the search. */
24362
25037
  account_id: string;
24363
25038
  };
24364
25039
  cookie?: never;
@@ -24537,7 +25212,7 @@ interface operations {
24537
25212
  * @enum {string}
24538
25213
  */
24539
25214
  object: "sn_people_search_result";
24540
- /** @description Opaque Sales Navigator member ID (ACw… format). */
25215
+ /** @description Opaque Sales Navigator member ID (ACw... format). */
24541
25216
  id: string;
24542
25217
  /** @description Numeric member ID, distinct from id. Present when available. */
24543
25218
  member_id?: string;
@@ -24742,7 +25417,7 @@ interface operations {
24742
25417
  };
24743
25418
  header?: never;
24744
25419
  path: {
24745
- /** @description The account ID (`acc_…`) whose Sales Navigator seat performs the search. */
25420
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat performs the search. */
24746
25421
  account_id: string;
24747
25422
  };
24748
25423
  cookie?: never;
@@ -25004,7 +25679,7 @@ interface operations {
25004
25679
  };
25005
25680
  header?: never;
25006
25681
  path: {
25007
- /** @description The account ID (`acc_…`) whose Sales Navigator seat performs the search. */
25682
+ /** @description The account ID (`acc_...`) whose Sales Navigator seat performs the search. */
25008
25683
  account_id: string;
25009
25684
  };
25010
25685
  cookie?: never;
@@ -25039,7 +25714,7 @@ interface operations {
25039
25714
  * @enum {string}
25040
25715
  */
25041
25716
  object: "sn_people_search_result";
25042
- /** @description Opaque Sales Navigator member ID (ACw… format). */
25717
+ /** @description Opaque Sales Navigator member ID (ACw... format). */
25043
25718
  id: string;
25044
25719
  /** @description Numeric member ID, distinct from id. Present when available. */
25045
25720
  member_id?: string;
@@ -25318,7 +25993,7 @@ interface operations {
25318
25993
  */
25319
25994
  object?: "account_list";
25320
25995
  items?: {
25321
- /** @description Curviate account id (acc_…). */
25996
+ /** @description Curviate account id (acc_...). */
25322
25997
  account_id?: string;
25323
25998
  /**
25324
25999
  * @description Stable status whitelist.
@@ -25407,7 +26082,7 @@ interface operations {
25407
26082
  query?: never;
25408
26083
  header?: never;
25409
26084
  path: {
25410
- /** @description The account ID (`acc_…`) of the account to retrieve. */
26085
+ /** @description The account ID (`acc_...`) of the account to retrieve. */
25411
26086
  account_id: string;
25412
26087
  };
25413
26088
  cookie?: never;
@@ -25444,13 +26119,13 @@ interface operations {
25444
26119
  requested_products?: ("classic" | "company" | "sales_navigator" | "recruiter")[] | null;
25445
26120
  /** @description ISO-8601 UTC creation timestamp of the underlying LinkedIn account, distinct from connected_at. Null until the first background enrichment lands. */
25446
26121
  substrate_created_at?: string | null;
25447
- /** @description Usage-safety recommendations for this account, one entry per tracked family (messages.daily, connection_requests.daily, profile_views.daily, inmail.daily, profile.endorse, account.per_minute). These are advisory only: Curviate never rejects a request because a daily recommendation is exceeded; only account.per_minute is a binding limit enforced with HTTP 429. */
26122
+ /** @description Capacity figures for this account, one entry per tracked family (messages.daily, connection_requests.daily, profile_views.daily, inmail.daily, profile.endorse, account.per_minute). These are advisory only: Curviate never rejects a request because a daily figure is exceeded; only account.per_minute is a binding limit enforced with HTTP 429. Every figure describes what the underlying platform will accept, not a safe sustained rate; pacing is the caller's responsibility. */
25448
26123
  quotas?: {
25449
26124
  /** @description Quota family (e.g. messages.daily, account.per_minute). */
25450
26125
  quota_name?: string;
25451
26126
  /** @description Remaining units in the current window. */
25452
26127
  remaining?: number;
25453
- /** @description Window capacity for this family. */
26128
+ /** @description Window capacity for this family. This is a substrate capacity ceiling, not a safe sustained rate; the caller owns its own pacing. */
25454
26129
  total?: number;
25455
26130
  /** @description ISO-8601 UTC time the current window resets. */
25456
26131
  reset_time?: string;
@@ -25527,7 +26202,7 @@ interface operations {
25527
26202
  query?: never;
25528
26203
  header?: never;
25529
26204
  path: {
25530
- /** @description The account ID (`acc_…`) of the account to disconnect. */
26205
+ /** @description The account ID (`acc_...`) of the account to disconnect. */
25531
26206
  account_id: string;
25532
26207
  };
25533
26208
  cookie?: never;
@@ -25627,7 +26302,7 @@ interface operations {
25627
26302
  query?: never;
25628
26303
  header?: never;
25629
26304
  path: {
25630
- /** @description The account ID (`acc_…`) of the account to update. */
26305
+ /** @description The account ID (`acc_...`) of the account to update. */
25631
26306
  account_id: string;
25632
26307
  };
25633
26308
  cookie?: never;
@@ -25635,7 +26310,7 @@ interface operations {
25635
26310
  requestBody: {
25636
26311
  content: {
25637
26312
  "application/json": {
25638
- /** @description Flat string→string map that replaces this account's custom-data store wholesale (unprovided keys are removed). */
26313
+ /** @description Flat string->string map that replaces this account's custom-data store wholesale (unprovided keys are removed). */
25639
26314
  metadata?: unknown;
25640
26315
  /** @description Custom-proxy egress config, or null to clear it (revert to automatic proxy protection). Omit to leave it unchanged. */
25641
26316
  proxy?: {
@@ -25873,7 +26548,7 @@ interface operations {
25873
26548
  * @description Deprecated, use seat_id (same value). Removed at the GA /v1 cutover.
25874
26549
  */
25875
26550
  attached_seat_id?: string | null;
25876
- /** @description Present and true only when this connect recovered an existing LinkedIn identity already present on the workspace (claiming it into your account) instead of connecting a brand-new one. Absent on a normal connect. The account's status reflects its real observed state, which may need a reconnect. */
26551
+ /** @description Present and true only when this connect reactivated an account you had previously disconnected, instead of opening a brand-new one. Absent on a normal connect. The account keeps its original id, and its status reflects its real observed state, which may need a reconnect. */
25877
26552
  recovered?: boolean;
25878
26553
  };
25879
26554
  };
@@ -26018,7 +26693,7 @@ interface operations {
26018
26693
  "application/json": {
26019
26694
  /** @description The account whose connect/reconnect is mid-flight (returned with the 202 checkpoint_required response). */
26020
26695
  account_id: string;
26021
- /** @description The OTP / 2FA verification code. Special value TRY_ANOTHER_WAY switches the challenge type (e.g. in-app → 2FA). */
26696
+ /** @description The OTP / 2FA verification code. Special value TRY_ANOTHER_WAY switches the challenge type (e.g. in-app -> 2FA). */
26022
26697
  code: string;
26023
26698
  };
26024
26699
  };
@@ -26048,7 +26723,7 @@ interface operations {
26048
26723
  * @description Deprecated, use seat_id (same value). Removed at the GA /v1 cutover.
26049
26724
  */
26050
26725
  attached_seat_id?: string | null;
26051
- /** @description Present and true only when this connect recovered an existing LinkedIn identity already present on the workspace (claiming it into your account) instead of connecting a brand-new one. Absent on a normal connect. The account's status reflects its real observed state, which may need a reconnect. */
26726
+ /** @description Present and true only when this connect reactivated an account you had previously disconnected, instead of opening a brand-new one. Absent on a normal connect. The account keeps its original id, and its status reflects its real observed state, which may need a reconnect. */
26052
26727
  recovered?: boolean;
26053
26728
  };
26054
26729
  };
@@ -26291,7 +26966,7 @@ interface operations {
26291
26966
  };
26292
26967
  };
26293
26968
  responses: {
26294
- /** @description The current state of the action-based (mobile-app-approval) challenge. object:"account" + status:"active" once approved (the account is now connected); object:"checkpoint" + status:"pending" while still waiting; status:"checkpoint_required" when the collect chained to a new challenge (e.g. approval → 2FA), switch to submitting the new challenge_type; status:"expired"/"failed" on timeout/failure. object:"account" + recovered:true means the approval resolved to a LinkedIn identity already present on the workspace, which was claimed into your account; its status is the identity's real observed state, so it may be reconnect_needed rather than active. */
26969
+ /** @description The current state of the action-based (mobile-app-approval) challenge. object:"account" + status:"active" once approved (the account is now connected); object:"checkpoint" + status:"pending" while still waiting; status:"checkpoint_required" when the collect chained to a new challenge (e.g. approval -> 2FA), switch to submitting the new challenge_type; status:"expired"/"failed" on timeout/failure. object:"account" + recovered:true means the approval reactivated an account you had previously disconnected, which keeps its original id; its status is that account's real observed state, so it may be reconnect_needed rather than active. */
26295
26970
  200: {
26296
26971
  headers: {
26297
26972
  "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
@@ -26307,7 +26982,7 @@ interface operations {
26307
26982
  object?: "account" | "checkpoint";
26308
26983
  /** @enum {string} */
26309
26984
  status?: "active" | "reconnect_needed" | "restricted" | "disconnected" | "pending" | "checkpoint_required" | "expired" | "failed";
26310
- /** @description Present and true only when this approval recovered an existing LinkedIn identity already present on the workspace (claiming it into your account) instead of connecting a brand-new one. Absent on a normal approval. The account's status reflects its real observed state, which may need a reconnect. */
26985
+ /** @description Present and true only when this approval reactivated an account you had previously disconnected, instead of opening a brand-new one. Absent on a normal approval. The account keeps its original id, and its status reflects its real observed state, which may need a reconnect. */
26311
26986
  recovered?: boolean;
26312
26987
  /** @description Present on status:"active" (the connected account) and status:"checkpoint_required" (the account whose next challenge is pending). */
26313
26988
  account_id?: string;
@@ -26421,14 +27096,14 @@ interface operations {
26421
27096
  query?: never;
26422
27097
  header?: never;
26423
27098
  path: {
26424
- /** @description The credential account id (acc_…) returned by auth/intent or a checkpoint response, the handle for the in-progress connect. */
27099
+ /** @description The credential account id (acc_...) returned by auth/intent or a checkpoint response, the handle for the in-progress connect. */
26425
27100
  session_id: string;
26426
27101
  };
26427
27102
  cookie?: never;
26428
27103
  };
26429
27104
  requestBody?: never;
26430
27105
  responses: {
26431
- /** @description The current status of a credential connect session (acc_… id from auth/intent or a checkpoint response). Poll until status leaves checkpoint_required. account_id is present only once status is done. checkpoint_required carries challenge_type, the challenge still pending. failed carries no reason payload. */
27106
+ /** @description The current status of a credential connect session (acc_... id from auth/intent or a checkpoint response). Poll until status leaves checkpoint_required. account_id is present only once status is done. checkpoint_required carries challenge_type, the challenge still pending. failed carries no reason payload. */
26432
27107
  200: {
26433
27108
  headers: {
26434
27109
  "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
@@ -26442,14 +27117,14 @@ interface operations {
26442
27117
  * @enum {string}
26443
27118
  */
26444
27119
  object?: "auth_session";
26445
- /** @description The account id polled (acc_…). */
27120
+ /** @description The account id polled (acc_...). */
26446
27121
  session_id?: string;
26447
27122
  /**
26448
27123
  * @description Lifecycle status. checkpoint_required (a challenge is pending, carries challenge_type) / done (connected) / expired (timed out) / failed (terminal failure).
26449
27124
  * @enum {string}
26450
27125
  */
26451
27126
  status?: "checkpoint_required" | "done" | "expired" | "failed";
26452
- /** @description The connected account (acc_…); null until status is done. */
27127
+ /** @description The connected account (acc_...); null until status is done. */
26453
27128
  account_id?: string | null;
26454
27129
  /** @description The pending challenge type. Present in checkpoint_required. */
26455
27130
  challenge_type?: string;
@@ -26869,7 +27544,7 @@ interface operations {
26869
27544
  */
26870
27545
  tier?: "recruiter" | "sales_nav";
26871
27546
  /**
26872
- * @description Delivery timing. Omitted (equivalent to 'realtime') on every live-pushed event. 'no_longer_realtime' means no push exists for this event; 'not_realtime' means the event is polled, not pushed, and may lag the underlying LinkedIn event.
27547
+ * @description Delivery timing. Omitted (equivalent to 'realtime') on every live-pushed event. 'no_longer_realtime' means no push exists for this event; 'not_realtime' means delivery is not guaranteed sub-second and may lag the underlying LinkedIn event, typically because it is detected by a poll rather than pushed, though a given event's own reference article may document an additional immediate path.
26873
27548
  * @enum {string}
26874
27549
  */
26875
27550
  availability?: "realtime" | "no_longer_realtime" | "not_realtime";
@@ -26901,6 +27576,87 @@ interface operations {
26901
27576
  };
26902
27577
  };
26903
27578
  };
27579
+ postV1WebhooksIdTest: {
27580
+ parameters: {
27581
+ query?: never;
27582
+ header?: never;
27583
+ path: {
27584
+ /** @description Webhook id (wh_-prefixed ULID). */
27585
+ id: string;
27586
+ };
27587
+ cookie?: never;
27588
+ };
27589
+ requestBody?: never;
27590
+ responses: {
27591
+ /** @description The test delivery is queued. It travels the same path as a real delivery: the same signature, the same custom headers, the same delivery record, the same retry schedule. Wait for it to arrive at your endpoint, verify the signature, and match data.test_id to the test_id below. */
27592
+ 202: {
27593
+ headers: {
27594
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
27595
+ RateLimit: components["headers"]["RateLimit"];
27596
+ [name: string]: unknown;
27597
+ };
27598
+ content: {
27599
+ "application/json": {
27600
+ /**
27601
+ * @description Response type discriminator.
27602
+ * @enum {string}
27603
+ */
27604
+ object?: "webhook_test";
27605
+ /** @description The webhook the test delivery was queued for. */
27606
+ webhook_id?: string;
27607
+ /** @description Correlation id for this test delivery, echoed as data.test_id in the delivered payload. Match it to confirm that the delivery your receiver observed is the one you asked for. */
27608
+ test_id?: string;
27609
+ /**
27610
+ * @description Always webhook.test. This name is not part of the event catalogue and can never be subscribed to, so it can never be confused with a real event.
27611
+ * @enum {string}
27612
+ */
27613
+ event?: "webhook.test";
27614
+ /** @description When the test delivery was queued (ISO 8601). */
27615
+ queued_at?: string;
27616
+ };
27617
+ };
27618
+ };
27619
+ /** @description Malformed webhook id, or the webhook is disabled or targets no account, in which case nothing could be delivered. */
27620
+ 400: {
27621
+ headers: {
27622
+ [name: string]: unknown;
27623
+ };
27624
+ content: {
27625
+ "application/json": components["schemas"]["Error"];
27626
+ };
27627
+ };
27628
+ /** @description Missing or invalid API key. */
27629
+ 401: {
27630
+ headers: {
27631
+ [name: string]: unknown;
27632
+ };
27633
+ content: {
27634
+ "application/json": components["schemas"]["Error"];
27635
+ };
27636
+ };
27637
+ /** @description Webhook not found or not owned by this tenant. */
27638
+ 404: {
27639
+ headers: {
27640
+ [name: string]: unknown;
27641
+ };
27642
+ content: {
27643
+ "application/json": components["schemas"]["Error"];
27644
+ };
27645
+ };
27646
+ /** @description Too many test deliveries, either for this webhook or across your tenant's webhooks. Wait for the window to reset; the Retry-After header gives the number of seconds. */
27647
+ 429: {
27648
+ headers: {
27649
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
27650
+ RateLimit: components["headers"]["RateLimit"];
27651
+ "Retry-After": components["headers"]["Retry-After"];
27652
+ [name: string]: unknown;
27653
+ };
27654
+ content: {
27655
+ "application/json": components["schemas"]["Error"];
27656
+ };
27657
+ };
27658
+ };
27659
+ };
26904
27660
  getV1WebhooksId: {
26905
27661
  parameters: {
26906
27662
  query?: never;