@curviate/sdk 0.20.2 → 0.22.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.
@@ -2442,6 +2442,26 @@ export interface paths {
2442
2442
  patch?: never;
2443
2443
  trace?: never;
2444
2444
  };
2445
+ "/v1/webhooks/{id}/test": {
2446
+ parameters: {
2447
+ query?: never;
2448
+ header?: never;
2449
+ path?: never;
2450
+ cookie?: never;
2451
+ };
2452
+ get?: never;
2453
+ put?: never;
2454
+ /**
2455
+ * Send a test delivery
2456
+ * @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.
2457
+ */
2458
+ post: operations["postV1WebhooksIdTest"];
2459
+ delete?: never;
2460
+ options?: never;
2461
+ head?: never;
2462
+ patch?: never;
2463
+ trace?: never;
2464
+ };
2445
2465
  "/v1/webhooks/{id}": {
2446
2466
  parameters: {
2447
2467
  query?: never;
@@ -2523,10 +2543,10 @@ export interface components {
2523
2543
  /** @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. */
2524
2544
  notices?: {
2525
2545
  /**
2526
- * @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.
2546
+ * @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.
2527
2547
  * @enum {string}
2528
2548
  */
2529
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
2549
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
2530
2550
  /** @description One sentence explaining the condition and how to resolve it. */
2531
2551
  message: string;
2532
2552
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -2669,38 +2689,397 @@ export interface operations {
2669
2689
  } & {
2670
2690
  [key: string]: unknown;
2671
2691
  })[];
2672
- /** @description Work experience entries. Present only when requested via linkedin_sections. */
2673
- experience?: {
2692
+ /** @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. */
2693
+ experience?: ({
2694
+ /** @description Identifier of this work-experience entry. Not a company identifier. */
2695
+ id?: string;
2696
+ /** @description The employer. An object, not a name string. */
2697
+ company?: {
2698
+ /** @description The organization's platform identifier, when known. */
2699
+ id?: string | null;
2700
+ /** @description The organization's name. */
2701
+ name?: string;
2702
+ /** @description The organization's public URL slug, when known. */
2703
+ public_identifier?: string;
2704
+ /** @description The organization's logo URL. */
2705
+ picture_url?: string;
2706
+ /** @description Full LinkedIn URL for the organization. */
2707
+ profile_url?: string;
2708
+ /** @description The organization's industry labels. */
2709
+ industries?: string[];
2710
+ } & {
2711
+ [key: string]: unknown;
2712
+ };
2713
+ /** @description Job title held. This is the title field; there is no 'position' or 'title' key. */
2714
+ job_title?: string;
2715
+ /** @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. */
2716
+ started_on?: string;
2717
+ /** @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. */
2718
+ ended_on?: string;
2719
+ /** @description Where the role was based, as written on the profile. */
2720
+ location?: string;
2721
+ /** @description The member's own description of the role. Passes through verbatim, never stored. */
2722
+ description?: string;
2723
+ /** @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. */
2724
+ employment_type?: string;
2725
+ /** @description Working arrangement: ON_SITE, HYBRID, or REMOTE. Not present on every entry. */
2726
+ workplace_type?: string;
2727
+ /** @description Skills the member associated with this role. */
2728
+ skills?: string[];
2729
+ /** @description A short summary line of the associated skills. */
2730
+ skills_preview?: string;
2731
+ } & {
2674
2732
  [key: string]: unknown;
2675
- }[];
2676
- /** @description Education entries. Present only when requested via linkedin_sections. */
2677
- education?: {
2733
+ })[];
2734
+ /** @description Education entries. Present only when linkedin_education is requested via linkedin_sections. */
2735
+ education?: ({
2736
+ /** @description Identifier of this education entry. */
2737
+ id?: string;
2738
+ /** @description The institution. An object, not a name string. */
2739
+ school?: {
2740
+ /** @description The organization's platform identifier, when known. */
2741
+ id?: string | null;
2742
+ /** @description The organization's name. */
2743
+ name?: string;
2744
+ /** @description The organization's public URL slug, when known. */
2745
+ public_identifier?: string;
2746
+ /** @description The organization's logo URL. */
2747
+ picture_url?: string;
2748
+ /** @description Full LinkedIn URL for the organization. */
2749
+ profile_url?: string;
2750
+ /** @description The organization's industry labels. */
2751
+ industries?: string[];
2752
+ } & {
2753
+ [key: string]: unknown;
2754
+ };
2755
+ /** @description Name of the degree or qualification. */
2756
+ degree?: string;
2757
+ /** @description Subjects studied. Plural and always an array, even for a single subject. */
2758
+ fields_of_study?: string[];
2759
+ /** @description Grade or academic level reached. */
2760
+ grade?: string;
2761
+ /** @description Activities carried out during the studies. */
2762
+ activities?: string;
2763
+ /** @description The member's own description of the studies. Passes through verbatim, never stored. */
2764
+ description?: string;
2765
+ /** @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. */
2766
+ started_on?: string;
2767
+ /** @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. */
2768
+ ended_on?: string;
2769
+ /** @description Skills the member associated with the studies. */
2770
+ skills?: string[];
2771
+ /** @description A short summary line of the associated skills. */
2772
+ skills_preview?: string;
2773
+ } & {
2678
2774
  [key: string]: unknown;
2679
- }[];
2680
- /** @description Languages entries. Present only when requested via linkedin_sections. */
2681
- languages?: {
2775
+ })[];
2776
+ /** @description Language entries. Present only when linkedin_languages is requested via linkedin_sections. */
2777
+ languages?: ({
2778
+ /** @description Name of the language. */
2779
+ language?: string;
2780
+ /** @description Stated fluency: ELEMENTARY, LIMITED_WORKING, PROFESSIONAL_WORKING, FULL_PROFESSIONAL, or NATIVE_OR_BILINGUAL. */
2781
+ proficiency?: string;
2782
+ } & {
2682
2783
  [key: string]: unknown;
2683
- }[];
2684
- /** @description Certification entries. Present only when requested via linkedin_sections. */
2685
- certifications?: {
2784
+ })[];
2785
+ /** @description Certification entries. Present only when linkedin_certifications is requested via linkedin_sections. */
2786
+ certifications?: ({
2787
+ /** @description Name of the certification. This is the name field; there is no 'name' key. */
2788
+ title?: string;
2789
+ /** @description The issuing body. An object, not a name string. */
2790
+ organization?: {
2791
+ /** @description The organization's platform identifier, when known. */
2792
+ id?: string | null;
2793
+ /** @description The organization's name. */
2794
+ name?: string;
2795
+ /** @description The organization's public URL slug, when known. */
2796
+ public_identifier?: string;
2797
+ /** @description The organization's logo URL. */
2798
+ picture_url?: string;
2799
+ /** @description Full LinkedIn URL for the organization. */
2800
+ profile_url?: string;
2801
+ /** @description The organization's industry labels. */
2802
+ industries?: string[];
2803
+ } & {
2804
+ [key: string]: unknown;
2805
+ };
2806
+ /** @description Date the certification was issued. Formatted MM/DD/YYYY, month first. The platform records month and year only. */
2807
+ issued_on?: string;
2808
+ /** @description Date the certification expires. Absent when it does not expire. Formatted MM/DD/YYYY, month first. The platform records month and year only. */
2809
+ expires_on?: string;
2810
+ /** @description License or credential identifier. */
2811
+ license?: string;
2812
+ /** @description Public URL for the certification. */
2813
+ url?: string;
2814
+ /** @description Skills the member associated with the certification. */
2815
+ skills?: string[];
2816
+ /** @description A short summary line of the associated skills. */
2817
+ skills_preview?: string;
2818
+ } & {
2686
2819
  [key: string]: unknown;
2687
- }[];
2688
- /** @description Volunteering entries. Present only when requested via linkedin_sections. */
2689
- volunteer_experience?: {
2820
+ })[];
2821
+ /** @description Volunteering entries. Present only when linkedin_volunteer_experience is requested via linkedin_sections. */
2822
+ volunteer_experience?: ({
2823
+ /** @description The organization volunteered for. An object, not a name string. */
2824
+ organization?: {
2825
+ /** @description The organization's platform identifier, when known. */
2826
+ id?: string | null;
2827
+ /** @description The organization's name. */
2828
+ name?: string;
2829
+ /** @description The organization's public URL slug, when known. */
2830
+ public_identifier?: string;
2831
+ /** @description The organization's logo URL. */
2832
+ picture_url?: string;
2833
+ /** @description Full LinkedIn URL for the organization. */
2834
+ profile_url?: string;
2835
+ /** @description The organization's industry labels. */
2836
+ industries?: string[];
2837
+ } & {
2838
+ [key: string]: unknown;
2839
+ };
2840
+ /** @description Role held while volunteering. */
2841
+ role?: string;
2842
+ /** @description The cause supported, as categorised by the platform. */
2843
+ cause?: string;
2844
+ /** @description The member's own description of the work. Passes through verbatim, never stored. */
2845
+ description?: string;
2846
+ /** @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. */
2847
+ started_on?: string;
2848
+ /** @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. */
2849
+ ended_on?: string;
2850
+ } & {
2690
2851
  [key: string]: unknown;
2691
- }[];
2692
- /** @description Project entries. Present only when requested via linkedin_sections. */
2693
- projects?: {
2852
+ })[];
2853
+ /** @description Project entries. Present only when linkedin_projects is requested via linkedin_sections. */
2854
+ projects?: ({
2855
+ /** @description Name of the project. */
2856
+ name?: string;
2857
+ /** @description The member's own description of the project. Passes through verbatim, never stored. */
2858
+ description?: string;
2859
+ /** @description Other members credited on the project. */
2860
+ contributors?: ({
2861
+ /** @description The member's opaque identifier. */
2862
+ id?: string;
2863
+ /** @description Object discriminator for the embedded member. */
2864
+ object?: string;
2865
+ /** @description Profile type (e.g. individual). */
2866
+ type?: string;
2867
+ /** @description The member's display name. */
2868
+ display_name?: string;
2869
+ /** @description First name. */
2870
+ first_name?: string;
2871
+ /** @description Last name. */
2872
+ last_name?: string;
2873
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
2874
+ public_identifier?: string;
2875
+ /** @description Full LinkedIn profile URL. */
2876
+ profile_url?: string;
2877
+ /** @description Profile picture URL. */
2878
+ public_picture_url?: string;
2879
+ /** @description The member's professional headline. */
2880
+ description?: string;
2881
+ } & {
2882
+ [key: string]: unknown;
2883
+ })[];
2884
+ /** @description Skills the member associated with the project. */
2885
+ skills?: string[];
2886
+ /** @description A short summary line of the associated skills. */
2887
+ skills_preview?: string;
2888
+ /** @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. */
2889
+ started_on?: string;
2890
+ /** @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. */
2891
+ ended_on?: string;
2892
+ } & {
2694
2893
  [key: string]: unknown;
2695
- }[];
2696
- /** @description Recommendations received/given. Present only when requested via linkedin_sections. */
2894
+ })[];
2895
+ /** @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. */
2697
2896
  recommendations?: {
2897
+ /** @description Recommendations written about this member. */
2898
+ received?: ({
2899
+ /** @description The recommendation text. Passes through verbatim, never stored. */
2900
+ text?: string;
2901
+ /** @description How the two members worked together, as shown on the profile. */
2902
+ caption?: string;
2903
+ /** @description When the recommendation was written. */
2904
+ created_on?: string;
2905
+ /** @description The other member involved. May be null when the platform withholds the identity. */
2906
+ user?: {
2907
+ /** @description The member's opaque identifier. */
2908
+ id?: string;
2909
+ /** @description Object discriminator for the embedded member. */
2910
+ object?: string;
2911
+ /** @description Profile type (e.g. individual). */
2912
+ type?: string;
2913
+ /** @description The member's display name. */
2914
+ display_name?: string;
2915
+ /** @description First name. */
2916
+ first_name?: string;
2917
+ /** @description Last name. */
2918
+ last_name?: string;
2919
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
2920
+ public_identifier?: string;
2921
+ /** @description Full LinkedIn profile URL. */
2922
+ profile_url?: string;
2923
+ /** @description Profile picture URL. */
2924
+ public_picture_url?: string;
2925
+ /** @description The member's professional headline. */
2926
+ description?: string;
2927
+ } & {
2928
+ [key: string]: unknown;
2929
+ };
2930
+ } & {
2931
+ [key: string]: unknown;
2932
+ })[];
2933
+ /** @description Recommendations this member wrote for others. */
2934
+ given?: ({
2935
+ /** @description The recommendation text. Passes through verbatim, never stored. */
2936
+ text?: string;
2937
+ /** @description How the two members worked together, as shown on the profile. */
2938
+ caption?: string;
2939
+ /** @description When the recommendation was written. */
2940
+ created_on?: string;
2941
+ /** @description The other member involved. May be null when the platform withholds the identity. */
2942
+ user?: {
2943
+ /** @description The member's opaque identifier. */
2944
+ id?: string;
2945
+ /** @description Object discriminator for the embedded member. */
2946
+ object?: string;
2947
+ /** @description Profile type (e.g. individual). */
2948
+ type?: string;
2949
+ /** @description The member's display name. */
2950
+ display_name?: string;
2951
+ /** @description First name. */
2952
+ first_name?: string;
2953
+ /** @description Last name. */
2954
+ last_name?: string;
2955
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
2956
+ public_identifier?: string;
2957
+ /** @description Full LinkedIn profile URL. */
2958
+ profile_url?: string;
2959
+ /** @description Profile picture URL. */
2960
+ public_picture_url?: string;
2961
+ /** @description The member's professional headline. */
2962
+ description?: string;
2963
+ } & {
2964
+ [key: string]: unknown;
2965
+ };
2966
+ } & {
2967
+ [key: string]: unknown;
2968
+ })[];
2969
+ } & {
2698
2970
  [key: string]: unknown;
2699
2971
  };
2700
- /** @description Interest entries. Present only when requested via linkedin_sections. */
2972
+ /** @description What this member follows, grouped by kind. An object, not an array. Present only when linkedin_interests is requested via linkedin_sections. */
2701
2973
  interests?: {
2974
+ /** @description Followed LinkedIn Top Voices. */
2975
+ top_voices?: ({
2976
+ /** @description The member's opaque identifier. */
2977
+ id?: string;
2978
+ /** @description Object discriminator for the embedded member. */
2979
+ object?: string;
2980
+ /** @description Profile type (e.g. individual). */
2981
+ type?: string;
2982
+ /** @description The member's display name. */
2983
+ display_name?: string;
2984
+ /** @description First name. */
2985
+ first_name?: string;
2986
+ /** @description Last name. */
2987
+ last_name?: string;
2988
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
2989
+ public_identifier?: string;
2990
+ /** @description Full LinkedIn profile URL. */
2991
+ profile_url?: string;
2992
+ /** @description Profile picture URL. */
2993
+ public_picture_url?: string;
2994
+ /** @description The member's professional headline. */
2995
+ description?: string;
2996
+ /** @description Follow-relationship detail for this member. */
2997
+ specifics?: {
2998
+ /** @description Whether this member is followed. */
2999
+ is_following?: boolean;
3000
+ /** @description How many members follow them. */
3001
+ followers_count?: number;
3002
+ } & {
3003
+ [key: string]: unknown;
3004
+ };
3005
+ } & {
3006
+ [key: string]: unknown;
3007
+ })[];
3008
+ /** @description Followed companies. */
3009
+ companies?: ({
3010
+ /** @description Object discriminator for the followed company. */
3011
+ object?: string;
3012
+ /** @description The company's platform identifier. */
3013
+ id?: string;
3014
+ /** @description The company's name. */
3015
+ name?: string;
3016
+ /** @description Full LinkedIn URL for the company. */
3017
+ profile_url?: string;
3018
+ /** @description The company's logo URL. */
3019
+ public_picture_url?: string;
3020
+ /** @description How many members follow the company. */
3021
+ followers_count?: number;
3022
+ /** @description Whether this member follows the company. */
3023
+ is_following?: boolean;
3024
+ } & {
3025
+ [key: string]: unknown;
3026
+ })[];
3027
+ /** @description Followed schools. */
3028
+ schools?: ({
3029
+ /** @description The school's platform identifier. */
3030
+ id?: string;
3031
+ /** @description The school's name. */
3032
+ name?: string;
3033
+ /** @description Object discriminator for the followed school. */
3034
+ object?: string;
3035
+ /** @description Full LinkedIn URL for the school. */
3036
+ profile_url?: string;
3037
+ /** @description The school's logo URL. */
3038
+ public_picture_url?: string;
3039
+ /** @description How many members follow the school. */
3040
+ followers_count?: number;
3041
+ /** @description Whether this member follows the school. */
3042
+ is_following?: boolean;
3043
+ } & {
3044
+ [key: string]: unknown;
3045
+ })[];
3046
+ /** @description Followed newsletters. */
3047
+ newsletters?: ({
3048
+ /** @description The newsletter's platform identifier. */
3049
+ id?: string;
3050
+ /** @description The newsletter's title. */
3051
+ title?: string;
3052
+ /** @description The newsletter's description. Passes through verbatim, never stored. */
3053
+ description?: string;
3054
+ /** @description Full LinkedIn URL for the newsletter. */
3055
+ url?: string;
3056
+ /** @description How often the newsletter publishes. */
3057
+ posting_frequency?: string;
3058
+ /** @description The newsletter's cover image URL. */
3059
+ public_picture_url?: string;
3060
+ /** @description Whether this member subscribes to the newsletter. */
3061
+ is_subscribed?: boolean;
3062
+ } & {
3063
+ [key: string]: unknown;
3064
+ })[];
3065
+ /** @description Groups joined. */
3066
+ groups?: ({
3067
+ /** @description The group's platform identifier. */
3068
+ id?: string;
3069
+ /** @description The group's name. */
3070
+ name?: string;
3071
+ /** @description Full LinkedIn URL for the group. */
3072
+ url?: string;
3073
+ /** @description The group's picture URL. */
3074
+ public_picture_url?: string;
3075
+ /** @description Whether this member belongs to the group. */
3076
+ is_member?: boolean;
3077
+ } & {
3078
+ [key: string]: unknown;
3079
+ })[];
3080
+ } & {
2702
3081
  [key: string]: unknown;
2703
- }[];
3082
+ };
2704
3083
  /** @description Section names that were requested but throttled by LinkedIn. */
2705
3084
  throttled_sections?: string[];
2706
3085
  };
@@ -4981,24 +5360,24 @@ export interface operations {
4981
5360
  /** @description true if the account is verified. Present when available. */
4982
5361
  is_verified?: boolean;
4983
5362
  /**
4984
- * @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.
5363
+ * @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.
4985
5364
  * @enum {string}
4986
5365
  */
4987
5366
  visibility: "full" | "hidden";
4988
5367
  }[];
4989
5368
  paging: {
4990
- /** @description Total number of matching employees across all pages. */
4991
- total_count: number;
5369
+ /** @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. */
5370
+ total_count: number | null;
4992
5371
  };
4993
5372
  /** @description Opaque cursor for the next page, or null when there are no more results. */
4994
5373
  cursor: string | null;
4995
5374
  /** @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. */
4996
5375
  notices?: {
4997
5376
  /**
4998
- * @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.
5377
+ * @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.
4999
5378
  * @enum {string}
5000
5379
  */
5001
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
5380
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
5002
5381
  /** @description One sentence explaining the condition and how to resolve it. */
5003
5382
  message: string;
5004
5383
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -5180,8 +5559,8 @@ export interface operations {
5180
5559
  repost_count: number;
5181
5560
  }[];
5182
5561
  paging: {
5183
- /** @description Total number of matching posts across all pages. */
5184
- total_count: number;
5562
+ /** @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. */
5563
+ total_count: number | null;
5185
5564
  };
5186
5565
  /** @description Opaque cursor for the next page, or null when there are no more results. */
5187
5566
  cursor: string | null;
@@ -5359,8 +5738,8 @@ export interface operations {
5359
5738
  };
5360
5739
  }[];
5361
5740
  paging: {
5362
- /** @description Total number of matching job postings across all pages. */
5363
- total_count: number;
5741
+ /** @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. */
5742
+ total_count: number | null;
5364
5743
  };
5365
5744
  /** @description Opaque cursor for the next page, or null when there are no more results. */
5366
5745
  cursor: string | null;
@@ -5930,6 +6309,8 @@ export interface operations {
5930
6309
  limit?: number;
5931
6310
  /** @description Opaque pagination cursor from a prior response's cursor. Omit for the first page. */
5932
6311
  cursor?: string;
6312
+ /** @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. */
6313
+ expand?: string;
5933
6314
  };
5934
6315
  header?: never;
5935
6316
  path: {
@@ -5982,8 +6363,10 @@ export interface operations {
5982
6363
  kind: "member";
5983
6364
  /** @description Member headline (content pass-through, never stored). */
5984
6365
  headline?: string | null;
5985
- /** @description Canonical member profile URL. */
5986
- profile_url: string;
6366
+ /** @description Canonical member profile URL, or null when the platform surfaces no public profile for this person. */
6367
+ profile_url: string | null;
6368
+ /** @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. */
6369
+ public_identifier?: string | null;
5987
6370
  }[];
5988
6371
  /** @description Unread message count (0 = read). */
5989
6372
  unread_count: number;
@@ -6001,6 +6384,20 @@ export interface operations {
6001
6384
  }[];
6002
6385
  /** @description Opaque cursor for the next page, or null at end-of-list. */
6003
6386
  cursor: string | null;
6387
+ /** @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. */
6388
+ notices?: {
6389
+ /**
6390
+ * @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.
6391
+ * @enum {string}
6392
+ */
6393
+ code: "EXPANSION_LIMIT_REACHED";
6394
+ /** @description One sentence explaining the condition and how to resolve it. */
6395
+ message: string;
6396
+ /** @description The request field the notice is about, here expand. */
6397
+ field?: string;
6398
+ /** @description The expansion the notice is about, here public_identifier. */
6399
+ value?: string;
6400
+ }[];
6004
6401
  };
6005
6402
  };
6006
6403
  };
@@ -6101,7 +6498,10 @@ export interface operations {
6101
6498
  };
6102
6499
  getV1AccountIdCompaniesIdentifierChatsChatId: {
6103
6500
  parameters: {
6104
- query?: never;
6501
+ query?: {
6502
+ /** @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. */
6503
+ expand?: string;
6504
+ };
6105
6505
  header?: never;
6106
6506
  path: {
6107
6507
  /** @description The connected LinkedIn account, which must administer the page. */
@@ -6148,8 +6548,10 @@ export interface operations {
6148
6548
  kind: "member";
6149
6549
  /** @description Member headline (content pass-through, never stored). */
6150
6550
  headline?: string | null;
6151
- /** @description Canonical member profile URL. */
6152
- profile_url: string;
6551
+ /** @description Canonical member profile URL, or null when the platform surfaces no public profile for this person. */
6552
+ profile_url: string | null;
6553
+ /** @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. */
6554
+ public_identifier?: string | null;
6153
6555
  }[];
6154
6556
  /** @description Unread message count (0 = read). */
6155
6557
  unread_count: number;
@@ -6164,6 +6566,20 @@ export interface operations {
6164
6566
  /** @description Message body (content pass-through, never stored). */
6165
6567
  text?: string | null;
6166
6568
  } | null;
6569
+ /** @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. */
6570
+ notices?: {
6571
+ /**
6572
+ * @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.
6573
+ * @enum {string}
6574
+ */
6575
+ code: "EXPANSION_LIMIT_REACHED";
6576
+ /** @description One sentence explaining the condition and how to resolve it. */
6577
+ message: string;
6578
+ /** @description The request field the notice is about, here expand. */
6579
+ field?: string;
6580
+ /** @description The expansion the notice is about, here public_identifier. */
6581
+ value?: string;
6582
+ }[];
6167
6583
  };
6168
6584
  };
6169
6585
  };
@@ -6269,6 +6685,8 @@ export interface operations {
6269
6685
  limit?: number;
6270
6686
  /** @description Opaque pagination cursor from a prior response's cursor. Omit for the first page. */
6271
6687
  cursor?: string;
6688
+ /** @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. */
6689
+ expand?: string;
6272
6690
  };
6273
6691
  header?: never;
6274
6692
  path: {
@@ -6313,6 +6731,8 @@ export interface operations {
6313
6731
  id: string;
6314
6732
  /** @description Sender display name (content pass-through, never stored). */
6315
6733
  name: string | null;
6734
+ /** @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. */
6735
+ public_identifier?: string | null;
6316
6736
  };
6317
6737
  /** @description Epoch-ms delivery time; also the newest-first pagination anchor. */
6318
6738
  sent_at: number;
@@ -6321,10 +6741,24 @@ export interface operations {
6321
6741
  }[];
6322
6742
  /** @description Opaque cursor for the next page, or null at end-of-list. */
6323
6743
  cursor: string | null;
6744
+ /** @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. */
6745
+ notices?: {
6746
+ /**
6747
+ * @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.
6748
+ * @enum {string}
6749
+ */
6750
+ code: "EXPANSION_LIMIT_REACHED";
6751
+ /** @description One sentence explaining the condition and how to resolve it. */
6752
+ message: string;
6753
+ /** @description The request field the notice is about, here expand. */
6754
+ field?: string;
6755
+ /** @description The expansion the notice is about, here public_identifier. */
6756
+ value?: string;
6757
+ }[];
6324
6758
  };
6325
6759
  };
6326
6760
  };
6327
- /** @description A non-numeric identifier, or a malformed/empty chat_id. */
6761
+ /** @description A non-numeric identifier, a malformed/empty chat_id, or a malformed cursor. */
6328
6762
  400: {
6329
6763
  headers: {
6330
6764
  [name: string]: unknown;
@@ -6599,7 +7033,10 @@ export interface operations {
6599
7033
  };
6600
7034
  getV1AccountIdCompaniesIdentifierChatsChatIdMessagesMessageId: {
6601
7035
  parameters: {
6602
- query?: never;
7036
+ query?: {
7037
+ /** @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. */
7038
+ expand?: string;
7039
+ };
6603
7040
  header?: never;
6604
7041
  path: {
6605
7042
  /** @description The connected LinkedIn account, which must administer the page. */
@@ -6638,11 +7075,27 @@ export interface operations {
6638
7075
  id: string;
6639
7076
  /** @description Sender display name (content pass-through, never stored). */
6640
7077
  name: string | null;
7078
+ /** @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. */
7079
+ public_identifier?: string | null;
6641
7080
  };
6642
7081
  /** @description Epoch-ms delivery time; also the newest-first pagination anchor. */
6643
7082
  sent_at: number;
6644
7083
  /** @description Message body (content pass-through, never stored). */
6645
7084
  text?: string | null;
7085
+ /** @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. */
7086
+ notices?: {
7087
+ /**
7088
+ * @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.
7089
+ * @enum {string}
7090
+ */
7091
+ code: "EXPANSION_LIMIT_REACHED";
7092
+ /** @description One sentence explaining the condition and how to resolve it. */
7093
+ message: string;
7094
+ /** @description The request field the notice is about, here expand. */
7095
+ field?: string;
7096
+ /** @description The expansion the notice is about, here public_identifier. */
7097
+ value?: string;
7098
+ }[];
6646
7099
  };
6647
7100
  };
6648
7101
  };
@@ -6754,6 +7207,8 @@ export interface operations {
6754
7207
  limit?: number;
6755
7208
  /** @description Opaque pagination cursor from a prior response's cursor. Omit for the first page. */
6756
7209
  cursor?: string;
7210
+ /** @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. */
7211
+ expand?: string;
6757
7212
  };
6758
7213
  header?: never;
6759
7214
  path: {
@@ -6806,8 +7261,10 @@ export interface operations {
6806
7261
  kind: "member";
6807
7262
  /** @description Member headline (content pass-through, never stored). */
6808
7263
  headline?: string | null;
6809
- /** @description Canonical member profile URL. */
6810
- profile_url: string;
7264
+ /** @description Canonical member profile URL, or null when the platform surfaces no public profile for this person. */
7265
+ profile_url: string | null;
7266
+ /** @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. */
7267
+ public_identifier?: string | null;
6811
7268
  }[];
6812
7269
  /** @description Unread message count (0 = read). */
6813
7270
  unread_count: number;
@@ -6830,10 +7287,24 @@ export interface operations {
6830
7287
  * @enum {boolean}
6831
7288
  */
6832
7289
  filter_effective?: true;
7290
+ /** @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. */
7291
+ notices?: {
7292
+ /**
7293
+ * @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.
7294
+ * @enum {string}
7295
+ */
7296
+ code: "EXPANSION_LIMIT_REACHED";
7297
+ /** @description One sentence explaining the condition and how to resolve it. */
7298
+ message: string;
7299
+ /** @description The request field the notice is about, here expand. */
7300
+ field?: string;
7301
+ /** @description The expansion the notice is about, here public_identifier. */
7302
+ value?: string;
7303
+ }[];
6833
7304
  };
6834
7305
  };
6835
7306
  };
6836
- /** @description A non-numeric identifier; zero or more than one of query/topic/unread; or an unknown topic. */
7307
+ /** @description A non-numeric identifier; zero or more than one of query/topic/unread; an unknown topic; or a malformed cursor. */
6837
7308
  400: {
6838
7309
  headers: {
6839
7310
  [name: string]: unknown;
@@ -7675,14 +8146,14 @@ export interface operations {
7675
8146
  /** @description true if the account is verified. Present when available. */
7676
8147
  is_verified?: boolean;
7677
8148
  /**
7678
- * @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.
8149
+ * @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.
7679
8150
  * @enum {string}
7680
8151
  */
7681
8152
  visibility: "full" | "hidden";
7682
8153
  }[];
7683
8154
  /** @description Paging metadata. */
7684
8155
  paging: {
7685
- /** @description Total matching result count. Large counts (people/companies/from-url) are a >=1000 ceiling, not an exact total. */
8156
+ /** @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. */
7686
8157
  total_count: number | null;
7687
8158
  };
7688
8159
  /** @description Opaque next-page cursor; null on the last page. */
@@ -7690,10 +8161,10 @@ export interface operations {
7690
8161
  /** @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. */
7691
8162
  notices?: {
7692
8163
  /**
7693
- * @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.
8164
+ * @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.
7694
8165
  * @enum {string}
7695
8166
  */
7696
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
8167
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
7697
8168
  /** @description One sentence explaining the condition and how to resolve it. */
7698
8169
  message: string;
7699
8170
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -7704,7 +8175,7 @@ export interface operations {
7704
8175
  };
7705
8176
  };
7706
8177
  };
7707
- /** @description Invalid request body, missing or malformed filter, or limit outside the 1-50 range. A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
8178
+ /** @description Invalid request body, missing or malformed filter, malformed cursor, or limit outside the 1-50 range. A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
7708
8179
  400: {
7709
8180
  headers: {
7710
8181
  [name: string]: unknown;
@@ -7880,10 +8351,10 @@ export interface operations {
7880
8351
  /** @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. */
7881
8352
  notices?: {
7882
8353
  /**
7883
- * @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.
8354
+ * @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.
7884
8355
  * @enum {string}
7885
8356
  */
7886
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
8357
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
7887
8358
  /** @description One sentence explaining the condition and how to resolve it. */
7888
8359
  message: string;
7889
8360
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -7894,7 +8365,7 @@ export interface operations {
7894
8365
  };
7895
8366
  };
7896
8367
  };
7897
- /** @description Invalid request body, malformed filter, or limit outside the 2-50 range (companies require limit >= 2). A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
8368
+ /** @description Invalid request body, malformed filter, malformed cursor, or limit outside the 2-50 range (companies require limit >= 2). A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
7898
8369
  400: {
7899
8370
  headers: {
7900
8371
  [name: string]: unknown;
@@ -8116,10 +8587,10 @@ export interface operations {
8116
8587
  /** @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. */
8117
8588
  notices?: {
8118
8589
  /**
8119
- * @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.
8590
+ * @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.
8120
8591
  * @enum {string}
8121
8592
  */
8122
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
8593
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
8123
8594
  /** @description One sentence explaining the condition and how to resolve it. */
8124
8595
  message: string;
8125
8596
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -8130,7 +8601,7 @@ export interface operations {
8130
8601
  };
8131
8602
  };
8132
8603
  };
8133
- /** @description Invalid request body, malformed filter or invalid content_type. A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
8604
+ /** @description Invalid request body, malformed filter, malformed cursor, or invalid content_type. A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
8134
8605
  400: {
8135
8606
  headers: {
8136
8607
  [name: string]: unknown;
@@ -8371,10 +8842,10 @@ export interface operations {
8371
8842
  /** @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. */
8372
8843
  notices?: {
8373
8844
  /**
8374
- * @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.
8845
+ * @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.
8375
8846
  * @enum {string}
8376
8847
  */
8377
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
8848
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
8378
8849
  /** @description One sentence explaining the condition and how to resolve it. */
8379
8850
  message: string;
8380
8851
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -8385,7 +8856,7 @@ export interface operations {
8385
8856
  };
8386
8857
  };
8387
8858
  };
8388
- /** @description Invalid request body, malformed filter, invalid seniority value, non-numeric date_posted, or limit outside the 1-100 range. A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
8859
+ /** @description Invalid request body, malformed filter, malformed cursor, invalid seniority value, non-numeric date_posted, or limit outside the 1-100 range. A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
8389
8860
  400: {
8390
8861
  headers: {
8391
8862
  [name: string]: unknown;
@@ -8543,7 +9014,7 @@ export interface operations {
8543
9014
  /** @description true if the account is verified. Present when available. */
8544
9015
  is_verified?: boolean;
8545
9016
  /**
8546
- * @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.
9017
+ * @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.
8547
9018
  * @enum {string}
8548
9019
  */
8549
9020
  visibility: "full" | "hidden";
@@ -8657,7 +9128,7 @@ export interface operations {
8657
9128
  })[];
8658
9129
  /** @description Paging metadata. */
8659
9130
  paging: {
8660
- /** @description Total matching result count. Large counts are a >=1000 ceiling, not an exact total. */
9131
+ /** @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. */
8661
9132
  total_count: number | null;
8662
9133
  };
8663
9134
  /** @description Opaque next-page cursor; null on the last page. */
@@ -8665,7 +9136,7 @@ export interface operations {
8665
9136
  };
8666
9137
  };
8667
9138
  };
8668
- /** @description Missing or malformed url, or limit outside the 1-50 range. */
9139
+ /** @description Missing or malformed url, malformed cursor, or limit outside the 1-50 range. */
8669
9140
  400: {
8670
9141
  headers: {
8671
9142
  [name: string]: unknown;
@@ -8810,7 +9281,7 @@ export interface operations {
8810
9281
  };
8811
9282
  };
8812
9283
  };
8813
- /** @description Missing or empty account_id, or missing or empty keywords. */
9284
+ /** @description Missing or empty account_id, missing or empty keywords, or malformed cursor. */
8814
9285
  400: {
8815
9286
  headers: {
8816
9287
  [name: string]: unknown;
@@ -8975,7 +9446,7 @@ export interface operations {
8975
9446
  }[];
8976
9447
  /** @description Paging metadata. */
8977
9448
  paging: {
8978
- /** @description Total matching result count. */
9449
+ /** @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. */
8979
9450
  total_count: number | null;
8980
9451
  };
8981
9452
  /** @description Opaque next-page cursor; null on the last page. */
@@ -8983,10 +9454,10 @@ export interface operations {
8983
9454
  /** @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. */
8984
9455
  notices?: {
8985
9456
  /**
8986
- * @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.
9457
+ * @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.
8987
9458
  * @enum {string}
8988
9459
  */
8989
- code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN";
9460
+ code: "FILTER_VALUE_UNRESOLVED" | "FILTER_VALUE_UNCHECKED" | "SOME_RESULTS_HIDDEN" | "ALL_RESULTS_HIDDEN" | "PAGE_TRUNCATED";
8990
9461
  /** @description One sentence explaining the condition and how to resolve it. */
8991
9462
  message: string;
8992
9463
  /** @description The request field the notice is about, dotted for nested filters. */
@@ -8997,7 +9468,7 @@ export interface operations {
8997
9468
  };
8998
9469
  };
8999
9470
  };
9000
- /** @description Missing or empty account_id, or no filter supplied, at least one of keywords, service_category, or location is required. A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
9471
+ /** @description Missing or empty account_id, no filter supplied (at least one of keywords, service_category, or location is required), or malformed cursor. A filter value that matches no filter option is NOT rejected here: it is sent on as an id and reported in notices[] on the 200, because a value we cannot resolve by name may still be a valid id. */
9001
9472
  400: {
9002
9473
  headers: {
9003
9474
  [name: string]: unknown;
@@ -9137,7 +9608,7 @@ export interface operations {
9137
9608
  };
9138
9609
  };
9139
9610
  };
9140
- /** @description Missing or empty account_id or keywords, or an unsupported type. */
9611
+ /** @description Missing or empty account_id or keywords, an unsupported type, or malformed cursor. */
9141
9612
  400: {
9142
9613
  headers: {
9143
9614
  [name: string]: unknown;
@@ -9240,6 +9711,8 @@ export interface operations {
9240
9711
  limit?: number;
9241
9712
  /** @description An opaque cursor for pagination. Pass the `cursor` from the preceding response to fetch the next page. */
9242
9713
  cursor?: string;
9714
+ /** @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. */
9715
+ expand?: string;
9243
9716
  };
9244
9717
  header?: never;
9245
9718
  path: {
@@ -9352,6 +9825,22 @@ export interface operations {
9352
9825
  reaction_count?: number;
9353
9826
  /** @description The platform this message originates from. */
9354
9827
  provider?: string;
9828
+ /** @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. */
9829
+ sender?: {
9830
+ /** @description Identifier of the counterpart. */
9831
+ id?: string;
9832
+ /** @description individual | organization. */
9833
+ type?: string;
9834
+ display_name?: string;
9835
+ profile_url?: string;
9836
+ public_picture_url?: string;
9837
+ /** @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. */
9838
+ public_identifier?: string | null;
9839
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
9840
+ specifics?: {
9841
+ [key: string]: unknown;
9842
+ };
9843
+ };
9355
9844
  };
9356
9845
  /** @description The 1:1 counterpart's profile. */
9357
9846
  user?: {
@@ -9362,10 +9851,26 @@ export interface operations {
9362
9851
  display_name?: string;
9363
9852
  profile_url?: string;
9364
9853
  public_picture_url?: string;
9854
+ /** @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. */
9855
+ public_identifier?: string | null;
9365
9856
  };
9366
9857
  }[];
9367
9858
  /** @description Next-page cursor; follow until items is empty (presence is not a has-more guarantee). */
9368
9859
  cursor?: string | null;
9860
+ /** @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. */
9861
+ notices?: {
9862
+ /**
9863
+ * @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.
9864
+ * @enum {string}
9865
+ */
9866
+ code: "EXPANSION_LIMIT_REACHED";
9867
+ /** @description One sentence explaining the condition and how to resolve it. */
9868
+ message: string;
9869
+ /** @description The request field the notice is about, here expand. */
9870
+ field?: string;
9871
+ /** @description The expansion the notice is about, here public_identifier. */
9872
+ value?: string;
9873
+ }[];
9369
9874
  };
9370
9875
  };
9371
9876
  };
@@ -9625,7 +10130,10 @@ export interface operations {
9625
10130
  };
9626
10131
  getV1AccountIdChatsChatId: {
9627
10132
  parameters: {
9628
- query?: never;
10133
+ query?: {
10134
+ /** @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. */
10135
+ expand?: string;
10136
+ };
9629
10137
  header?: never;
9630
10138
  path: {
9631
10139
  /** @description The account ID (`acc_...`) that owns the chat. */
@@ -9733,6 +10241,22 @@ export interface operations {
9733
10241
  reaction_count?: number;
9734
10242
  /** @description The platform this message originates from. */
9735
10243
  provider?: string;
10244
+ /** @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. */
10245
+ sender?: {
10246
+ /** @description Identifier of the counterpart. */
10247
+ id?: string;
10248
+ /** @description individual | organization. */
10249
+ type?: string;
10250
+ display_name?: string;
10251
+ profile_url?: string;
10252
+ public_picture_url?: string;
10253
+ /** @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. */
10254
+ public_identifier?: string | null;
10255
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
10256
+ specifics?: {
10257
+ [key: string]: unknown;
10258
+ };
10259
+ };
9736
10260
  };
9737
10261
  /** @description The 1:1 counterpart's profile. */
9738
10262
  user?: {
@@ -9743,7 +10267,23 @@ export interface operations {
9743
10267
  display_name?: string;
9744
10268
  profile_url?: string;
9745
10269
  public_picture_url?: string;
10270
+ /** @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. */
10271
+ public_identifier?: string | null;
9746
10272
  };
10273
+ /** @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. */
10274
+ notices?: {
10275
+ /**
10276
+ * @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.
10277
+ * @enum {string}
10278
+ */
10279
+ code: "EXPANSION_LIMIT_REACHED";
10280
+ /** @description One sentence explaining the condition and how to resolve it. */
10281
+ message: string;
10282
+ /** @description The request field the notice is about, here expand. */
10283
+ field?: string;
10284
+ /** @description The expansion the notice is about, here public_identifier. */
10285
+ value?: string;
10286
+ }[];
9747
10287
  };
9748
10288
  };
9749
10289
  };
@@ -9947,6 +10487,8 @@ export interface operations {
9947
10487
  limit?: number;
9948
10488
  /** @description An opaque cursor for pagination. Pass the `cursor` from the preceding response to fetch the next page. */
9949
10489
  cursor?: string;
10490
+ /** @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. */
10491
+ expand?: string;
9950
10492
  };
9951
10493
  header?: never;
9952
10494
  path: {
@@ -10022,9 +10564,39 @@ export interface operations {
10022
10564
  reaction_count?: number;
10023
10565
  /** @description The platform this message originates from. */
10024
10566
  provider?: string;
10567
+ /** @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. */
10568
+ sender?: {
10569
+ /** @description Identifier of the counterpart. */
10570
+ id?: string;
10571
+ /** @description individual | organization. */
10572
+ type?: string;
10573
+ display_name?: string;
10574
+ profile_url?: string;
10575
+ public_picture_url?: string;
10576
+ /** @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. */
10577
+ public_identifier?: string | null;
10578
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
10579
+ specifics?: {
10580
+ [key: string]: unknown;
10581
+ };
10582
+ };
10025
10583
  }[];
10026
10584
  /** @description Next-page cursor; follow until items is empty. */
10027
10585
  cursor?: string | null;
10586
+ /** @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. */
10587
+ notices?: {
10588
+ /**
10589
+ * @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.
10590
+ * @enum {string}
10591
+ */
10592
+ code: "EXPANSION_LIMIT_REACHED";
10593
+ /** @description One sentence explaining the condition and how to resolve it. */
10594
+ message: string;
10595
+ /** @description The request field the notice is about, here expand. */
10596
+ field?: string;
10597
+ /** @description The expansion the notice is about, here public_identifier. */
10598
+ value?: string;
10599
+ }[];
10028
10600
  };
10029
10601
  };
10030
10602
  };
@@ -10274,7 +10846,10 @@ export interface operations {
10274
10846
  };
10275
10847
  getV1AccountIdChatsChatIdMessagesMessageId: {
10276
10848
  parameters: {
10277
- query?: never;
10849
+ query?: {
10850
+ /** @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. */
10851
+ expand?: string;
10852
+ };
10278
10853
  header?: never;
10279
10854
  path: {
10280
10855
  /** @description The account ID (`acc_...`) that owns the chat. */
@@ -10345,6 +10920,36 @@ export interface operations {
10345
10920
  reaction_count?: number;
10346
10921
  /** @description The platform this message originates from. */
10347
10922
  provider?: string;
10923
+ /** @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. */
10924
+ sender?: {
10925
+ /** @description Identifier of the counterpart. */
10926
+ id?: string;
10927
+ /** @description individual | organization. */
10928
+ type?: string;
10929
+ display_name?: string;
10930
+ profile_url?: string;
10931
+ public_picture_url?: string;
10932
+ /** @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. */
10933
+ public_identifier?: string | null;
10934
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
10935
+ specifics?: {
10936
+ [key: string]: unknown;
10937
+ };
10938
+ };
10939
+ /** @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. */
10940
+ notices?: {
10941
+ /**
10942
+ * @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.
10943
+ * @enum {string}
10944
+ */
10945
+ code: "EXPANSION_LIMIT_REACHED";
10946
+ /** @description One sentence explaining the condition and how to resolve it. */
10947
+ message: string;
10948
+ /** @description The request field the notice is about, here expand. */
10949
+ field?: string;
10950
+ /** @description The expansion the notice is about, here public_identifier. */
10951
+ value?: string;
10952
+ }[];
10348
10953
  };
10349
10954
  };
10350
10955
  };
@@ -10892,6 +11497,8 @@ export interface operations {
10892
11497
  limit?: number;
10893
11498
  /** @description Opaque pagination cursor returned from a previous response; wraps a zero-based item offset. */
10894
11499
  cursor?: string;
11500
+ /** @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. */
11501
+ expand?: string;
10895
11502
  };
10896
11503
  header?: never;
10897
11504
  path: {
@@ -10973,10 +11580,24 @@ export interface operations {
10973
11580
  }[];
10974
11581
  /** @description Opaque next-page cursor; null on the last page. */
10975
11582
  cursor?: string | null;
11583
+ /** @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. */
11584
+ notices?: {
11585
+ /**
11586
+ * @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.
11587
+ * @enum {string}
11588
+ */
11589
+ code: "EXPANSION_LIMIT_REACHED";
11590
+ /** @description One sentence explaining the condition and how to resolve it. */
11591
+ message: string;
11592
+ /** @description The request field the notice is about, here expand. */
11593
+ field?: string;
11594
+ /** @description The expansion the notice is about, here public_identifier. */
11595
+ value?: string;
11596
+ }[];
10976
11597
  };
10977
11598
  };
10978
11599
  };
10979
- /** @description Missing or empty account_id, or missing or empty query. */
11600
+ /** @description Missing or empty account_id, missing or empty query, or a malformed cursor. */
10980
11601
  400: {
10981
11602
  headers: {
10982
11603
  [name: string]: unknown;
@@ -11336,6 +11957,8 @@ export interface operations {
11336
11957
  limit?: number;
11337
11958
  /** @description An opaque cursor for pagination. Pass the `cursor` from the preceding response to fetch the next page. */
11338
11959
  cursor?: string;
11960
+ /** @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. */
11961
+ expand?: string;
11339
11962
  };
11340
11963
  header?: never;
11341
11964
  path: {
@@ -11450,6 +12073,22 @@ export interface operations {
11450
12073
  reaction_count?: number;
11451
12074
  /** @description The platform this message originates from. */
11452
12075
  provider?: string;
12076
+ /** @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. */
12077
+ sender?: {
12078
+ /** @description Identifier of the counterpart. */
12079
+ id?: string;
12080
+ /** @description individual | organization. */
12081
+ type?: string;
12082
+ display_name?: string;
12083
+ profile_url?: string;
12084
+ public_picture_url?: string;
12085
+ /** @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. */
12086
+ public_identifier?: string | null;
12087
+ /** @description Provider-enriched detail about the sender (for example connection distance, premium or verified status), when the platform returns it. */
12088
+ specifics?: {
12089
+ [key: string]: unknown;
12090
+ };
12091
+ };
11453
12092
  };
11454
12093
  /** @description The 1:1 counterpart's profile. */
11455
12094
  user?: {
@@ -11460,10 +12099,26 @@ export interface operations {
11460
12099
  display_name?: string;
11461
12100
  profile_url?: string;
11462
12101
  public_picture_url?: string;
12102
+ /** @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. */
12103
+ public_identifier?: string | null;
11463
12104
  };
11464
12105
  }[];
11465
12106
  /** @description Next-page cursor. Follow until items is empty. */
11466
12107
  cursor?: string | null;
12108
+ /** @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. */
12109
+ notices?: {
12110
+ /**
12111
+ * @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.
12112
+ * @enum {string}
12113
+ */
12114
+ code: "EXPANSION_LIMIT_REACHED";
12115
+ /** @description One sentence explaining the condition and how to resolve it. */
12116
+ message: string;
12117
+ /** @description The request field the notice is about, here expand. */
12118
+ field?: string;
12119
+ /** @description The expansion the notice is about, here public_identifier. */
12120
+ value?: string;
12121
+ }[];
11467
12122
  };
11468
12123
  };
11469
12124
  };
@@ -14651,7 +15306,7 @@ export interface operations {
14651
15306
  };
14652
15307
  };
14653
15308
  };
14654
- /** @description Missing, empty, or invalid state; or limit greater than 100. */
15309
+ /** @description Missing, empty, or invalid state; limit greater than 100; or malformed cursor. */
14655
15310
  400: {
14656
15311
  headers: {
14657
15312
  [name: string]: unknown;
@@ -16035,7 +16690,7 @@ export interface operations {
16035
16690
  };
16036
16691
  };
16037
16692
  };
16038
- /** @description Invalid filter body, or limit greater than 100. */
16693
+ /** @description Invalid filter body, limit greater than 100, or malformed cursor. */
16039
16694
  400: {
16040
16695
  headers: {
16041
16696
  [name: string]: unknown;
@@ -18133,38 +18788,260 @@ export interface operations {
18133
18788
  is_hiring?: boolean;
18134
18789
  /** @description Whether the member has Open to Work enabled. */
18135
18790
  is_open_to_work?: boolean;
18136
- /** @description Skills entries. Present only when skills or linkedin_* was requested. */
18137
- skills?: {
18791
+ /** @description Skills entries. Present only when skills or linkedin_* was requested. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, since this surface's own typed fields already match that shape, rather than from a Recruiter-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
18792
+ skills?: ({
18793
+ /** @description The skill name. */
18794
+ name?: string;
18795
+ /** @description How many people have endorsed this skill. */
18796
+ endorsement_count?: number;
18797
+ /** @description Whether the operator account has already endorsed this skill. */
18798
+ endorsed?: boolean;
18799
+ /** @description LinkedIn-provided insight strings about the skill. */
18800
+ insights?: string[];
18801
+ /** @description The value passed to POST /v1/{account_id}/users/{user_id}/endorse-skill to endorse this skill. Present ONLY for skills you are eligible to endorse, i.e. those of your 1st-degree connections. Omitted for users outside your network and on your own profile (the skill still lists name, endorsement_count, endorsed, and insights). */
18802
+ endorsement_id?: number;
18803
+ } & {
18138
18804
  [key: string]: unknown;
18139
- }[];
18140
- /** @description Work experience entries. Present only when experience or linkedin_* was requested. */
18141
- experience?: {
18805
+ })[];
18806
+ /** @description Work experience entries. Present only when experience or linkedin_* was requested. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, since this surface's own typed fields already match that shape, rather than from a Recruiter-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
18807
+ experience?: ({
18808
+ /** @description Identifier of this work-experience entry. Not a company identifier. */
18809
+ id?: string;
18810
+ /** @description The employer. An object, not a name string. */
18811
+ company?: {
18812
+ /** @description The organization's platform identifier, when known. */
18813
+ id?: string | null;
18814
+ /** @description The organization's name. */
18815
+ name?: string;
18816
+ /** @description The organization's public URL slug, when known. */
18817
+ public_identifier?: string;
18818
+ /** @description The organization's logo URL. */
18819
+ picture_url?: string;
18820
+ /** @description Full LinkedIn URL for the organization. */
18821
+ profile_url?: string;
18822
+ /** @description The organization's industry labels. */
18823
+ industries?: string[];
18824
+ } & {
18825
+ [key: string]: unknown;
18826
+ };
18827
+ /** @description Job title held. This is the title field; there is no 'position' or 'title' key. */
18828
+ job_title?: string;
18829
+ /** @description Date the role started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value on the classic profile's response uses day 01. Confirm against an entry whose real start date you know before assuming the day carries no information here. */
18830
+ started_on?: string;
18831
+ /** @description Date the role ended. On the classic profile's response, an absent value means the entry is ongoing rather than unknown. Confirm on this surface before treating an absence as current. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on the classic profile's 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. */
18832
+ ended_on?: string;
18833
+ /** @description Where the role was based, as written on the profile. */
18834
+ location?: string;
18835
+ /** @description The member's own description of the role. Passes through verbatim, never stored. */
18836
+ description?: string;
18837
+ /** @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. */
18838
+ employment_type?: string;
18839
+ /** @description Working arrangement: ON_SITE, HYBRID, or REMOTE. Not present on every entry. */
18840
+ workplace_type?: string;
18841
+ /** @description Skills the member associated with this role. */
18842
+ skills?: string[];
18843
+ /** @description A short summary line of the associated skills. */
18844
+ skills_preview?: string;
18845
+ } & {
18142
18846
  [key: string]: unknown;
18143
- }[];
18144
- /** @description Education entries. Present only when education or linkedin_* was requested. */
18145
- education?: {
18847
+ })[];
18848
+ /** @description Education entries. Present only when education or linkedin_* was requested. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, since this surface's own typed fields already match that shape, rather than from a Recruiter-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
18849
+ education?: ({
18850
+ /** @description Identifier of this education entry. */
18851
+ id?: string;
18852
+ /** @description The institution. An object, not a name string. */
18853
+ school?: {
18854
+ /** @description The organization's platform identifier, when known. */
18855
+ id?: string | null;
18856
+ /** @description The organization's name. */
18857
+ name?: string;
18858
+ /** @description The organization's public URL slug, when known. */
18859
+ public_identifier?: string;
18860
+ /** @description The organization's logo URL. */
18861
+ picture_url?: string;
18862
+ /** @description Full LinkedIn URL for the organization. */
18863
+ profile_url?: string;
18864
+ /** @description The organization's industry labels. */
18865
+ industries?: string[];
18866
+ } & {
18867
+ [key: string]: unknown;
18868
+ };
18869
+ /** @description Name of the degree or qualification. */
18870
+ degree?: string;
18871
+ /** @description Subjects studied. Plural and always an array, even for a single subject. */
18872
+ fields_of_study?: string[];
18873
+ /** @description Grade or academic level reached. */
18874
+ grade?: string;
18875
+ /** @description Activities carried out during the studies. */
18876
+ activities?: string;
18877
+ /** @description The member's own description of the studies. Passes through verbatim, never stored. */
18878
+ description?: string;
18879
+ /** @description Date the studies started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value on the classic profile's response uses day 01. Confirm against an entry whose real start date you know before assuming the day carries no information here. */
18880
+ started_on?: string;
18881
+ /** @description Date the studies ended. On the classic profile's response, an absent value means the entry is ongoing rather than unknown. Confirm on this surface before treating an absence as current. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on the classic profile's 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. */
18882
+ ended_on?: string;
18883
+ /** @description Skills the member associated with the studies. */
18884
+ skills?: string[];
18885
+ /** @description A short summary line of the associated skills. */
18886
+ skills_preview?: string;
18887
+ } & {
18146
18888
  [key: string]: unknown;
18147
- }[];
18148
- /** @description Languages entries. Present only when languages or linkedin_* was requested. */
18149
- languages?: {
18889
+ })[];
18890
+ /** @description Languages entries. Present only when languages or linkedin_* was requested. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, since this surface's own typed fields already match that shape, rather than from a Recruiter-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
18891
+ languages?: ({
18892
+ /** @description Name of the language. */
18893
+ language?: string;
18894
+ /** @description Stated fluency: ELEMENTARY, LIMITED_WORKING, PROFESSIONAL_WORKING, FULL_PROFESSIONAL, or NATIVE_OR_BILINGUAL. */
18895
+ proficiency?: string;
18896
+ } & {
18150
18897
  [key: string]: unknown;
18151
- }[];
18152
- /** @description Certification entries. Present only when certifications or linkedin_* was requested. */
18153
- certifications?: {
18898
+ })[];
18899
+ /** @description Certification entries. Present only when certifications or linkedin_* was requested. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, since this surface's own typed fields already match that shape, rather than from a Recruiter-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
18900
+ certifications?: ({
18901
+ /** @description Name of the certification. This is the name field; there is no 'name' key. */
18902
+ title?: string;
18903
+ /** @description The issuing body. An object, not a name string. */
18904
+ organization?: {
18905
+ /** @description The organization's platform identifier, when known. */
18906
+ id?: string | null;
18907
+ /** @description The organization's name. */
18908
+ name?: string;
18909
+ /** @description The organization's public URL slug, when known. */
18910
+ public_identifier?: string;
18911
+ /** @description The organization's logo URL. */
18912
+ picture_url?: string;
18913
+ /** @description Full LinkedIn URL for the organization. */
18914
+ profile_url?: string;
18915
+ /** @description The organization's industry labels. */
18916
+ industries?: string[];
18917
+ } & {
18918
+ [key: string]: unknown;
18919
+ };
18920
+ /** @description Date the certification was issued. Formatted MM/DD/YYYY, month first. The platform records month and year only. */
18921
+ issued_on?: string;
18922
+ /** @description Date the certification expires. Absent when it does not expire. Formatted MM/DD/YYYY, month first. The platform records month and year only. */
18923
+ expires_on?: string;
18924
+ /** @description License or credential identifier. */
18925
+ license?: string;
18926
+ /** @description Public URL for the certification. */
18927
+ url?: string;
18928
+ /** @description Skills the member associated with the certification. */
18929
+ skills?: string[];
18930
+ /** @description A short summary line of the associated skills. */
18931
+ skills_preview?: string;
18932
+ } & {
18154
18933
  [key: string]: unknown;
18155
- }[];
18156
- /** @description Project entries. Present only when projects or linkedin_* was requested. */
18157
- projects?: {
18934
+ })[];
18935
+ /** @description Project entries. Present only when projects or linkedin_* was requested. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, since this surface's own typed fields already match that shape, rather than from a Recruiter-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
18936
+ projects?: ({
18937
+ /** @description Name of the project. */
18938
+ name?: string;
18939
+ /** @description The member's own description of the project. Passes through verbatim, never stored. */
18940
+ description?: string;
18941
+ /** @description Other members credited on the project. */
18942
+ contributors?: ({
18943
+ /** @description The member's opaque identifier. */
18944
+ id?: string;
18945
+ /** @description Object discriminator for the embedded member. */
18946
+ object?: string;
18947
+ /** @description Profile type (e.g. individual). */
18948
+ type?: string;
18949
+ /** @description The member's display name. */
18950
+ display_name?: string;
18951
+ /** @description First name. */
18952
+ first_name?: string;
18953
+ /** @description Last name. */
18954
+ last_name?: string;
18955
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
18956
+ public_identifier?: string;
18957
+ /** @description Full LinkedIn profile URL. */
18958
+ profile_url?: string;
18959
+ /** @description Profile picture URL. */
18960
+ public_picture_url?: string;
18961
+ /** @description The member's professional headline. */
18962
+ description?: string;
18963
+ } & {
18964
+ [key: string]: unknown;
18965
+ })[];
18966
+ /** @description Skills the member associated with the project. */
18967
+ skills?: string[];
18968
+ /** @description A short summary line of the associated skills. */
18969
+ skills_preview?: string;
18970
+ /** @description Date the project started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value on the classic profile's response uses day 01. Confirm against an entry whose real start date you know before assuming the day carries no information here. */
18971
+ started_on?: string;
18972
+ /** @description Date the project ended. On the classic profile's response, an absent value means the entry is ongoing rather than unknown. Confirm on this surface before treating an absence as current. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on the classic profile's 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. */
18973
+ ended_on?: string;
18974
+ } & {
18158
18975
  [key: string]: unknown;
18159
- }[];
18160
- /** @description Volunteering entries. Present only when volunteering or linkedin_* was requested. */
18161
- volunteering?: {
18976
+ })[];
18977
+ /** @description Volunteering entries. Present only when volunteering or linkedin_* was requested. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, since this surface's own typed fields already match that shape, rather than from a Recruiter-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
18978
+ volunteering?: ({
18979
+ /** @description The organization volunteered for. An object, not a name string. */
18980
+ organization?: {
18981
+ /** @description The organization's platform identifier, when known. */
18982
+ id?: string | null;
18983
+ /** @description The organization's name. */
18984
+ name?: string;
18985
+ /** @description The organization's public URL slug, when known. */
18986
+ public_identifier?: string;
18987
+ /** @description The organization's logo URL. */
18988
+ picture_url?: string;
18989
+ /** @description Full LinkedIn URL for the organization. */
18990
+ profile_url?: string;
18991
+ /** @description The organization's industry labels. */
18992
+ industries?: string[];
18993
+ } & {
18994
+ [key: string]: unknown;
18995
+ };
18996
+ /** @description Role held while volunteering. */
18997
+ role?: string;
18998
+ /** @description The cause supported, as categorised by the platform. */
18999
+ cause?: string;
19000
+ /** @description The member's own description of the work. Passes through verbatim, never stored. */
19001
+ description?: string;
19002
+ /** @description Date the work started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value on the classic profile's response uses day 01. Confirm against an entry whose real start date you know before assuming the day carries no information here. */
19003
+ started_on?: string;
19004
+ /** @description Date the work ended. On the classic profile's response, an absent value means the entry is ongoing rather than unknown. Confirm on this surface before treating an absence as current. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on the classic profile's 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. */
19005
+ ended_on?: string;
19006
+ } & {
18162
19007
  [key: string]: unknown;
18163
- }[];
18164
- /** @description Recommendations entries. Present only when recommendations or linkedin_* was requested. */
18165
- recommendations?: {
19008
+ })[];
19009
+ /** @description Recommendations entries. Present only when recommendations or linkedin_* was requested. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, since this surface's own typed fields already match that shape, rather than from a Recruiter-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. That reuse covers the ITEM shape only, not the container: on the classic profile this same underlying section is an OBJECT ({received, given}), not an array. Confirm the shape on this surface before iterating it as an array; guard for both shapes until then. */
19010
+ recommendations?: ({
19011
+ /** @description The recommendation text. Passes through verbatim, never stored. */
19012
+ text?: string;
19013
+ /** @description How the two members worked together, as shown on the profile. */
19014
+ caption?: string;
19015
+ /** @description When the recommendation was written. */
19016
+ created_on?: string;
19017
+ /** @description The other member involved. May be null when the platform withholds the identity. */
19018
+ user?: {
19019
+ /** @description The member's opaque identifier. */
19020
+ id?: string;
19021
+ /** @description Object discriminator for the embedded member. */
19022
+ object?: string;
19023
+ /** @description Profile type (e.g. individual). */
19024
+ type?: string;
19025
+ /** @description The member's display name. */
19026
+ display_name?: string;
19027
+ /** @description First name. */
19028
+ first_name?: string;
19029
+ /** @description Last name. */
19030
+ last_name?: string;
19031
+ /** @description LinkedIn public URL slug (e.g. 'jane-doe'). */
19032
+ public_identifier?: string;
19033
+ /** @description Full LinkedIn profile URL. */
19034
+ profile_url?: string;
19035
+ /** @description Profile picture URL. */
19036
+ public_picture_url?: string;
19037
+ /** @description The member's professional headline. */
19038
+ description?: string;
19039
+ } & {
19040
+ [key: string]: unknown;
19041
+ };
19042
+ } & {
18166
19043
  [key: string]: unknown;
18167
- }[];
19044
+ })[];
18168
19045
  /** @description Section names that were requested but throttled by LinkedIn. */
18169
19046
  throttled_sections?: string[];
18170
19047
  };
@@ -18718,7 +19595,7 @@ export interface operations {
18718
19595
  };
18719
19596
  };
18720
19597
  };
18721
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
19598
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
18722
19599
  400: {
18723
19600
  headers: {
18724
19601
  [name: string]: unknown;
@@ -19125,7 +20002,7 @@ export interface operations {
19125
20002
  };
19126
20003
  };
19127
20004
  };
19128
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
20005
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
19129
20006
  400: {
19130
20007
  headers: {
19131
20008
  [name: string]: unknown;
@@ -19328,7 +20205,7 @@ export interface operations {
19328
20205
  };
19329
20206
  };
19330
20207
  };
19331
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
20208
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
19332
20209
  400: {
19333
20210
  headers: {
19334
20211
  [name: string]: unknown;
@@ -19485,7 +20362,7 @@ export interface operations {
19485
20362
  };
19486
20363
  };
19487
20364
  };
19488
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
20365
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
19489
20366
  400: {
19490
20367
  headers: {
19491
20368
  [name: string]: unknown;
@@ -19729,7 +20606,7 @@ export interface operations {
19729
20606
  };
19730
20607
  };
19731
20608
  };
19732
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
20609
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
19733
20610
  400: {
19734
20611
  headers: {
19735
20612
  [name: string]: unknown;
@@ -20027,7 +20904,7 @@ export interface operations {
20027
20904
  };
20028
20905
  };
20029
20906
  };
20030
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
20907
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
20031
20908
  400: {
20032
20909
  headers: {
20033
20910
  [name: string]: unknown;
@@ -20359,7 +21236,7 @@ export interface operations {
20359
21236
  };
20360
21237
  };
20361
21238
  };
20362
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
21239
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
20363
21240
  400: {
20364
21241
  headers: {
20365
21242
  [name: string]: unknown;
@@ -20529,7 +21406,7 @@ export interface operations {
20529
21406
  };
20530
21407
  };
20531
21408
  };
20532
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
21409
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
20533
21410
  400: {
20534
21411
  headers: {
20535
21412
  [name: string]: unknown;
@@ -20736,7 +21613,7 @@ export interface operations {
20736
21613
  };
20737
21614
  };
20738
21615
  };
20739
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
21616
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
20740
21617
  400: {
20741
21618
  headers: {
20742
21619
  [name: string]: unknown;
@@ -20881,7 +21758,7 @@ export interface operations {
20881
21758
  };
20882
21759
  };
20883
21760
  };
20884
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
21761
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
20885
21762
  400: {
20886
21763
  headers: {
20887
21764
  [name: string]: unknown;
@@ -21045,7 +21922,7 @@ export interface operations {
21045
21922
  };
21046
21923
  };
21047
21924
  };
21048
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
21925
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
21049
21926
  400: {
21050
21927
  headers: {
21051
21928
  [name: string]: unknown;
@@ -21252,7 +22129,7 @@ export interface operations {
21252
22129
  };
21253
22130
  };
21254
22131
  };
21255
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
22132
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
21256
22133
  400: {
21257
22134
  headers: {
21258
22135
  [name: string]: unknown;
@@ -21422,7 +22299,7 @@ export interface operations {
21422
22299
  };
21423
22300
  };
21424
22301
  };
21425
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
22302
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
21426
22303
  400: {
21427
22304
  headers: {
21428
22305
  [name: string]: unknown;
@@ -21629,7 +22506,7 @@ export interface operations {
21629
22506
  };
21630
22507
  };
21631
22508
  };
21632
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
22509
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
21633
22510
  400: {
21634
22511
  headers: {
21635
22512
  [name: string]: unknown;
@@ -21942,7 +22819,7 @@ export interface operations {
21942
22819
  };
21943
22820
  };
21944
22821
  };
21945
- /** @description Invalid request, an over-cap limit, an unknown status/sort_by value, or another validation error. */
22822
+ /** @description Invalid request, an over-cap limit, a malformed cursor, an unknown status/sort_by value, or another validation error. */
21946
22823
  400: {
21947
22824
  headers: {
21948
22825
  [name: string]: unknown;
@@ -23087,18 +23964,105 @@ export interface operations {
23087
23964
  is_saved_lead?: boolean;
23088
23965
  /** @description true if this member was imported from CRM. SN enrichment. */
23089
23966
  is_crm_imported?: boolean;
23090
- /** @description Present when requested via with_sections. */
23091
- skills?: {
23967
+ /** @description Present when requested via with_sections. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, rather than from a Sales Navigator-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
23968
+ skills?: ({
23969
+ /** @description The skill name. */
23970
+ name?: string;
23971
+ /** @description How many people have endorsed this skill. */
23972
+ endorsement_count?: number;
23973
+ /** @description Whether the operator account has already endorsed this skill. */
23974
+ endorsed?: boolean;
23975
+ /** @description LinkedIn-provided insight strings about the skill. */
23976
+ insights?: string[];
23977
+ /** @description The value passed to POST /v1/{account_id}/users/{user_id}/endorse-skill to endorse this skill. Present ONLY for skills you are eligible to endorse, i.e. those of your 1st-degree connections. Omitted for users outside your network and on your own profile (the skill still lists name, endorsement_count, endorsed, and insights). */
23978
+ endorsement_id?: number;
23979
+ } & {
23092
23980
  [key: string]: unknown;
23093
- }[];
23094
- /** @description Present when requested via with_sections. */
23095
- experience?: {
23981
+ })[];
23982
+ /** @description Present when requested via with_sections. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, rather than from a Sales Navigator-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
23983
+ experience?: ({
23984
+ /** @description Identifier of this work-experience entry. Not a company identifier. */
23985
+ id?: string;
23986
+ /** @description The employer. An object, not a name string. */
23987
+ company?: {
23988
+ /** @description The organization's platform identifier, when known. */
23989
+ id?: string | null;
23990
+ /** @description The organization's name. */
23991
+ name?: string;
23992
+ /** @description The organization's public URL slug, when known. */
23993
+ public_identifier?: string;
23994
+ /** @description The organization's logo URL. */
23995
+ picture_url?: string;
23996
+ /** @description Full LinkedIn URL for the organization. */
23997
+ profile_url?: string;
23998
+ /** @description The organization's industry labels. */
23999
+ industries?: string[];
24000
+ } & {
24001
+ [key: string]: unknown;
24002
+ };
24003
+ /** @description Job title held. This is the title field; there is no 'position' or 'title' key. */
24004
+ job_title?: string;
24005
+ /** @description Date the role started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value on the classic profile's response uses day 01. Confirm against an entry whose real start date you know before assuming the day carries no information here. */
24006
+ started_on?: string;
24007
+ /** @description Date the role ended. On the classic profile's response, an absent value means the entry is ongoing rather than unknown. Confirm on this surface before treating an absence as current. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on the classic profile's 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. */
24008
+ ended_on?: string;
24009
+ /** @description Where the role was based, as written on the profile. */
24010
+ location?: string;
24011
+ /** @description The member's own description of the role. Passes through verbatim, never stored. */
24012
+ description?: string;
24013
+ /** @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. */
24014
+ employment_type?: string;
24015
+ /** @description Working arrangement: ON_SITE, HYBRID, or REMOTE. Not present on every entry. */
24016
+ workplace_type?: string;
24017
+ /** @description Skills the member associated with this role. */
24018
+ skills?: string[];
24019
+ /** @description A short summary line of the associated skills. */
24020
+ skills_preview?: string;
24021
+ } & {
23096
24022
  [key: string]: unknown;
23097
- }[];
23098
- /** @description Present when requested via with_sections. */
23099
- education?: {
24023
+ })[];
24024
+ /** @description Present when requested via with_sections. Declared from the classic profile's own live-measured shape for the same underlying LinkedIn section, rather than from a Sales Navigator-specific capture. Confirm field-for-field against a real response before treating any inference, an absent field or one under a different name, as fact. */
24025
+ education?: ({
24026
+ /** @description Identifier of this education entry. */
24027
+ id?: string;
24028
+ /** @description The institution. An object, not a name string. */
24029
+ school?: {
24030
+ /** @description The organization's platform identifier, when known. */
24031
+ id?: string | null;
24032
+ /** @description The organization's name. */
24033
+ name?: string;
24034
+ /** @description The organization's public URL slug, when known. */
24035
+ public_identifier?: string;
24036
+ /** @description The organization's logo URL. */
24037
+ picture_url?: string;
24038
+ /** @description Full LinkedIn URL for the organization. */
24039
+ profile_url?: string;
24040
+ /** @description The organization's industry labels. */
24041
+ industries?: string[];
24042
+ } & {
24043
+ [key: string]: unknown;
24044
+ };
24045
+ /** @description Name of the degree or qualification. */
24046
+ degree?: string;
24047
+ /** @description Subjects studied. Plural and always an array, even for a single subject. */
24048
+ fields_of_study?: string[];
24049
+ /** @description Grade or academic level reached. */
24050
+ grade?: string;
24051
+ /** @description Activities carried out during the studies. */
24052
+ activities?: string;
24053
+ /** @description The member's own description of the studies. Passes through verbatim, never stored. */
24054
+ description?: string;
24055
+ /** @description Date the studies started. Formatted MM/DD/YYYY, month first. The platform records month and year only. Every observed value on the classic profile's response uses day 01. Confirm against an entry whose real start date you know before assuming the day carries no information here. */
24056
+ started_on?: string;
24057
+ /** @description Date the studies ended. On the classic profile's response, an absent value means the entry is ongoing rather than unknown. Confirm on this surface before treating an absence as current. Formatted MM/DD/YYYY, month first. The platform records month and year only. The day component differs by field on the classic profile's 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. */
24058
+ ended_on?: string;
24059
+ /** @description Skills the member associated with the studies. */
24060
+ skills?: string[];
24061
+ /** @description A short summary line of the associated skills. */
24062
+ skills_preview?: string;
24063
+ } & {
23100
24064
  [key: string]: unknown;
23101
- }[];
24065
+ })[];
23102
24066
  /** @description Present when available. */
23103
24067
  throttled_sections?: string[];
23104
24068
  };
@@ -25368,13 +26332,13 @@ export interface operations {
25368
26332
  requested_products?: ("classic" | "company" | "sales_navigator" | "recruiter")[] | null;
25369
26333
  /** @description ISO-8601 UTC creation timestamp of the underlying LinkedIn account, distinct from connected_at. Null until the first background enrichment lands. */
25370
26334
  substrate_created_at?: string | null;
25371
- /** @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. */
26335
+ /** @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. */
25372
26336
  quotas?: {
25373
26337
  /** @description Quota family (e.g. messages.daily, account.per_minute). */
25374
26338
  quota_name?: string;
25375
26339
  /** @description Remaining units in the current window. */
25376
26340
  remaining?: number;
25377
- /** @description Window capacity for this family. */
26341
+ /** @description Window capacity for this family. This is a substrate capacity ceiling, not a safe sustained rate; the caller owns its own pacing. */
25378
26342
  total?: number;
25379
26343
  /** @description ISO-8601 UTC time the current window resets. */
25380
26344
  reset_time?: string;
@@ -26793,7 +27757,7 @@ export interface operations {
26793
27757
  */
26794
27758
  tier?: "recruiter" | "sales_nav";
26795
27759
  /**
26796
- * @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.
27760
+ * @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.
26797
27761
  * @enum {string}
26798
27762
  */
26799
27763
  availability?: "realtime" | "no_longer_realtime" | "not_realtime";
@@ -26825,6 +27789,87 @@ export interface operations {
26825
27789
  };
26826
27790
  };
26827
27791
  };
27792
+ postV1WebhooksIdTest: {
27793
+ parameters: {
27794
+ query?: never;
27795
+ header?: never;
27796
+ path: {
27797
+ /** @description Webhook id (wh_-prefixed ULID). */
27798
+ id: string;
27799
+ };
27800
+ cookie?: never;
27801
+ };
27802
+ requestBody?: never;
27803
+ responses: {
27804
+ /** @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. */
27805
+ 202: {
27806
+ headers: {
27807
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
27808
+ RateLimit: components["headers"]["RateLimit"];
27809
+ [name: string]: unknown;
27810
+ };
27811
+ content: {
27812
+ "application/json": {
27813
+ /**
27814
+ * @description Response type discriminator.
27815
+ * @enum {string}
27816
+ */
27817
+ object?: "webhook_test";
27818
+ /** @description The webhook the test delivery was queued for. */
27819
+ webhook_id?: string;
27820
+ /** @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. */
27821
+ test_id?: string;
27822
+ /**
27823
+ * @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.
27824
+ * @enum {string}
27825
+ */
27826
+ event?: "webhook.test";
27827
+ /** @description When the test delivery was queued (ISO 8601). */
27828
+ queued_at?: string;
27829
+ };
27830
+ };
27831
+ };
27832
+ /** @description Malformed webhook id, or the webhook is disabled or targets no account, in which case nothing could be delivered. */
27833
+ 400: {
27834
+ headers: {
27835
+ [name: string]: unknown;
27836
+ };
27837
+ content: {
27838
+ "application/json": components["schemas"]["Error"];
27839
+ };
27840
+ };
27841
+ /** @description Missing or invalid API key. */
27842
+ 401: {
27843
+ headers: {
27844
+ [name: string]: unknown;
27845
+ };
27846
+ content: {
27847
+ "application/json": components["schemas"]["Error"];
27848
+ };
27849
+ };
27850
+ /** @description Webhook not found or not owned by this tenant. */
27851
+ 404: {
27852
+ headers: {
27853
+ [name: string]: unknown;
27854
+ };
27855
+ content: {
27856
+ "application/json": components["schemas"]["Error"];
27857
+ };
27858
+ };
27859
+ /** @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. */
27860
+ 429: {
27861
+ headers: {
27862
+ "RateLimit-Policy": components["headers"]["RateLimit-Policy"];
27863
+ RateLimit: components["headers"]["RateLimit"];
27864
+ "Retry-After": components["headers"]["Retry-After"];
27865
+ [name: string]: unknown;
27866
+ };
27867
+ content: {
27868
+ "application/json": components["schemas"]["Error"];
27869
+ };
27870
+ };
27871
+ };
27872
+ };
26828
27873
  getV1WebhooksId: {
26829
27874
  parameters: {
26830
27875
  query?: never;