Skip to content

Commit 26f0739

Browse files
Manage invatations
1 parent 7d1fe30 commit 26f0739

9 files changed

Lines changed: 181 additions & 1 deletion

File tree

examples/connections.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ async function connectionsExample(): Promise<void> {
1717
await sendConnectionRequest(linkedapi, targetPersonUrl);
1818
await retrievePendingRequests(linkedapi);
1919
await withdrawConnectionRequest(linkedapi, targetPersonUrl);
20+
await retrieveConnectionRequests(linkedapi);
21+
await acceptConnectionRequest(linkedapi, targetPersonUrl2);
22+
await ignoreConnectionRequest(linkedapi, targetPersonUrl2);
2023
await retrieveConnections(linkedapi);
2124
await removeConnection(linkedapi, targetPersonUrl2);
2225

@@ -196,6 +199,56 @@ async function removeConnection(linkedapi: LinkedApi, personUrl: string): Promis
196199
}
197200
}
198201

202+
async function retrieveConnectionRequests(linkedapi: LinkedApi): Promise<void> {
203+
console.log('\n📥 Retrieving incoming connection requests...');
204+
205+
const workflow = await linkedapi.retrieveConnectionRequests.execute();
206+
console.log('📥 Retrieve connection requests workflow started:', workflow.workflowId);
207+
208+
const requestsResult = await linkedapi.retrieveConnectionRequests.result(workflow.workflowId);
209+
if (requestsResult.data) {
210+
const requests = requestsResult.data;
211+
console.log('✅ Incoming requests retrieval completed');
212+
console.log(`📊 Found ${requests.length} incoming requests`);
213+
requests.forEach((request, index) => {
214+
console.log(` ${index + 1}. ${request.name}`);
215+
console.log(` Profile: ${request.publicUrl}`);
216+
console.log(` Headline: ${request.headline}`);
217+
});
218+
}
219+
if (requestsResult.errors.length > 0) {
220+
console.error('🚨 Errors:', JSON.stringify(requestsResult.errors, null, 2));
221+
}
222+
}
223+
224+
async function acceptConnectionRequest(linkedapi: LinkedApi, personUrl: string): Promise<void> {
225+
console.log('\n🤝 Accepting incoming connection request...');
226+
227+
const workflow = await linkedapi.acceptConnectionRequest.execute({ personUrl });
228+
console.log('🤝 Accept connection request workflow started:', workflow.workflowId);
229+
230+
const acceptResult = await linkedapi.acceptConnectionRequest.result(workflow.workflowId);
231+
if (acceptResult.errors.length > 0) {
232+
console.error('🚨 Errors:', JSON.stringify(acceptResult.errors, null, 2));
233+
} else {
234+
console.log('✅ Connection request accepted successfully');
235+
}
236+
}
237+
238+
async function ignoreConnectionRequest(linkedapi: LinkedApi, personUrl: string): Promise<void> {
239+
console.log('\n🙈 Ignoring incoming connection request...');
240+
241+
const workflow = await linkedapi.ignoreConnectionRequest.execute({ personUrl });
242+
console.log('🙈 Ignore connection request workflow started:', workflow.workflowId);
243+
244+
const ignoreResult = await linkedapi.ignoreConnectionRequest.result(workflow.workflowId);
245+
if (ignoreResult.errors.length > 0) {
246+
console.error('🚨 Errors:', JSON.stringify(ignoreResult.errors, null, 2));
247+
} else {
248+
console.log('✅ Connection request ignored successfully');
249+
}
250+
}
251+
199252
if (require.main === module) {
200253
connectionsExample();
201254
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@linkedapi/node",
3-
"version": "2.1.3",
3+
"version": "2.2.0",
44
"description": "Control your LinkedIn accounts and retrieve real-time data, all through this Node.js SDK.",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

src/core/operation.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ export const OPERATION_NAME = {
2323
sendConnectionRequest: 'sendConnectionRequest',
2424
withdrawConnectionRequest: 'withdrawConnectionRequest',
2525
retrievePendingRequests: 'retrievePendingRequests',
26+
retrieveConnectionRequests: 'retrieveConnectionRequests',
27+
acceptConnectionRequest: 'acceptConnectionRequest',
28+
ignoreConnectionRequest: 'ignoreConnectionRequest',
2629
retrieveConnections: 'retrieveConnections',
2730
removeConnection: 'removeConnection',
2831
searchCompanies: 'searchCompanies',

src/index.ts

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Operation } from './core';
22
import { buildLinkedApiHttpClient } from './core/linked-api-http-client';
33
import type { TMappedResponse } from './mappers/base-mapper.abstract';
44
import {
5+
AcceptConnectionRequest,
56
CheckConnectionStatus,
67
CommentOnPost,
78
CreatePost,
@@ -10,6 +11,7 @@ import {
1011
FetchJob,
1112
FetchPerson,
1213
FetchPost,
14+
IgnoreConnectionRequest,
1315
ManageConversation,
1416
NvFetchCompany,
1517
NvFetchPerson,
@@ -21,6 +23,7 @@ import {
2123
NvSyncInbox,
2224
ReactToPost,
2325
RemoveConnection,
26+
RetrieveConnectionRequests,
2427
RetrieveConnections,
2528
RetrievePendingRequests,
2629
RetrievePerformance,
@@ -104,6 +107,9 @@ class LinkedApi {
104107
this.sendConnectionRequest = new SendConnectionRequest(this.httpClient);
105108
this.withdrawConnectionRequest = new WithdrawConnectionRequest(this.httpClient);
106109
this.retrievePendingRequests = new RetrievePendingRequests(this.httpClient);
110+
this.retrieveConnectionRequests = new RetrieveConnectionRequests(this.httpClient);
111+
this.acceptConnectionRequest = new AcceptConnectionRequest(this.httpClient);
112+
this.ignoreConnectionRequest = new IgnoreConnectionRequest(this.httpClient);
107113
this.retrieveConnections = new RetrieveConnections(this.httpClient);
108114
this.removeConnection = new RemoveConnection(this.httpClient);
109115
this.searchCompanies = new SearchCompanies(this.httpClient);
@@ -137,6 +143,9 @@ class LinkedApi {
137143
this.sendConnectionRequest,
138144
this.withdrawConnectionRequest,
139145
this.retrievePendingRequests,
146+
this.retrieveConnectionRequests,
147+
this.acceptConnectionRequest,
148+
this.ignoreConnectionRequest,
140149
this.retrieveConnections,
141150
this.removeConnection,
142151
this.searchCompanies,
@@ -1037,6 +1046,69 @@ class LinkedApi {
10371046
*/
10381047
public retrievePendingRequests: RetrievePendingRequests;
10391048

1049+
/**
1050+
* Retrieve incoming connection requests (invitations others have sent you).
1051+
*
1052+
* This method fetches the list of received connection requests from your invitation manager.
1053+
*
1054+
* @returns Promise resolving to an object containing an array of received requests
1055+
*
1056+
* @see {@link https://linkedapi.io/docs/working-with-connection-requests/ Working with Connection Requests Documentation}
1057+
* @see {@link https://linkedapi.io/docs/action-st-retrieve-connection-requests/ st.retrieveConnectionRequests Action Documentation}
1058+
*
1059+
* @example
1060+
* ```typescript
1061+
* const workflow = await linkedapi.retrieveConnectionRequests.execute();
1062+
*
1063+
* const result = await linkedapi.retrieveConnectionRequests.result(workflow.workflowId);
1064+
* if (result.data) {
1065+
* result.data.forEach(request => {
1066+
* console.log(`${request.name}: ${request.headline}`);
1067+
* console.log(`Profile: ${request.publicUrl}`);
1068+
* });
1069+
* }
1070+
* ```
1071+
*/
1072+
public retrieveConnectionRequests: RetrieveConnectionRequests;
1073+
1074+
/**
1075+
* Accept an incoming connection request from a person's profile.
1076+
*
1077+
* @param params - Parameters including the person's profile URL
1078+
*
1079+
* @see {@link https://linkedapi.io/docs/working-with-connection-requests/ Working with Connection Requests Documentation}
1080+
* @see {@link https://linkedapi.io/docs/action-st-accept-connection-request/ st.acceptConnectionRequest Action Documentation}
1081+
*
1082+
* @example
1083+
* ```typescript
1084+
* const workflow = await linkedapi.acceptConnectionRequest.execute({
1085+
* personUrl: "https://www.linkedin.com/in/john-doe",
1086+
* });
1087+
*
1088+
* await linkedapi.acceptConnectionRequest.result(workflow.workflowId);
1089+
* ```
1090+
*/
1091+
public acceptConnectionRequest: AcceptConnectionRequest;
1092+
1093+
/**
1094+
* Ignore an incoming connection request from a person's profile.
1095+
*
1096+
* @param params - Parameters including the person's profile URL
1097+
*
1098+
* @see {@link https://linkedapi.io/docs/working-with-connection-requests/ Working with Connection Requests Documentation}
1099+
* @see {@link https://linkedapi.io/docs/action-st-ignore-connection-request/ st.ignoreConnectionRequest Action Documentation}
1100+
*
1101+
* @example
1102+
* ```typescript
1103+
* const workflow = await linkedapi.ignoreConnectionRequest.execute({
1104+
* personUrl: "https://www.linkedin.com/in/john-doe",
1105+
* });
1106+
*
1107+
* await linkedapi.ignoreConnectionRequest.result(workflow.workflowId);
1108+
* ```
1109+
*/
1110+
public ignoreConnectionRequest: IgnoreConnectionRequest;
1111+
10401112
/**
10411113
* Retrieve your LinkedIn connections with optional filtering.
10421114
*
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Operation, TOperationName } from '../core';
2+
import { VoidWorkflowMapper } from '../mappers';
3+
import { TAcceptConnectionRequestParams } from '../types';
4+
5+
export class AcceptConnectionRequest extends Operation<TAcceptConnectionRequestParams, void> {
6+
public override readonly operationName: TOperationName = 'acceptConnectionRequest';
7+
protected override readonly mapper = new VoidWorkflowMapper<TAcceptConnectionRequestParams>(
8+
'st.acceptConnectionRequest',
9+
);
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Operation, TOperationName } from '../core';
2+
import { VoidWorkflowMapper } from '../mappers';
3+
import { TIgnoreConnectionRequestParams } from '../types';
4+
5+
export class IgnoreConnectionRequest extends Operation<TIgnoreConnectionRequestParams, void> {
6+
public override readonly operationName: TOperationName = 'ignoreConnectionRequest';
7+
protected override readonly mapper = new VoidWorkflowMapper<TIgnoreConnectionRequestParams>(
8+
'st.ignoreConnectionRequest',
9+
);
10+
}

src/operations/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ export * from './send-connection-request';
2222
export * from './check-connection-status';
2323
export * from './withdraw-connection-request';
2424
export * from './retrieve-pending-requests';
25+
export * from './retrieve-connection-requests';
26+
export * from './accept-connection-request';
27+
export * from './ignore-connection-request';
2528
export * from './retrieve-connections';
2629
export * from './remove-connection';
2730
export * from './react-to-post';
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Operation, TOperationName } from '../core';
2+
import { ArrayWorkflowMapper } from '../mappers/array-workflow-mapper';
3+
import { TRetrieveConnectionRequestsResult } from '../types';
4+
5+
export class RetrieveConnectionRequests extends Operation<
6+
void,
7+
TRetrieveConnectionRequestsResult[]
8+
> {
9+
public override readonly operationName: TOperationName = 'retrieveConnectionRequests';
10+
protected override readonly mapper = new ArrayWorkflowMapper<
11+
void,
12+
TRetrieveConnectionRequestsResult
13+
>('st.retrieveConnectionRequests');
14+
}

src/types/actions/connection.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,25 @@ export interface TCheckConnectionStatusResult {
2626
export const CONNECTION_STATUS = {
2727
connected: 'connected',
2828
pending: 'pending',
29+
incoming: 'incoming',
2930
notConnected: 'notConnected',
3031
} as const;
3132
export type TConnectionStatus = (typeof CONNECTION_STATUS)[keyof typeof CONNECTION_STATUS];
3233

34+
export interface TAcceptConnectionRequestParams extends TBaseActionParams {
35+
personUrl: string;
36+
}
37+
38+
export interface TIgnoreConnectionRequestParams extends TBaseActionParams {
39+
personUrl: string;
40+
}
41+
42+
export interface TRetrieveConnectionRequestsResult {
43+
name: string;
44+
publicUrl: string;
45+
headline: string;
46+
}
47+
3348
export interface TWithdrawConnectionRequestParams extends TBaseActionParams {
3449
personUrl: string;
3550
unfollow?: boolean;

0 commit comments

Comments
 (0)