Desktop plumbing: registers the uploaded LinkedIn export zip by its S3 key, creates an import job for it in the extraction code's case (the caseId must be that case, otherwise 403), marks the data source as pending and queues the import. If the file was already imported, returns 400, or, when incremental re-import is on and nothing new would be added, imported: false with no job created (also 201).
POST
/extraction/linkedin-data/{caseId}/import
curl \
--request POST 'http://api.example.com/extraction/linkedin-data/{caseId}/import' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"fileId": "string",
"extractionCode": "string",
"selectedDataTypes": [
"string"
],
"selectedConversationIds": [
"string"
]
}'
Request examples
{
"fileId": "string",
"extractionCode": "string",
"selectedDataTypes": [
"string"
],
"selectedConversationIds": [
"string"
]
}
Response examples (201)
{
"data": {
"createdAt": "2026-01-15T14:30:00.000Z",
"updatedAt": "2026-01-15T14:30:00.000Z",
"id": "507f1f77bcf86cd799439011",
"case": {},
"extractionCode": {},
"file": {},
"createdBy": {},
"status": "not_started",
"startedAt": "2026-01-15T14:25:00.000Z",
"completedAt": "2026-01-15T14:30:00.000Z",
"failedAt": "2026-05-04T09:42:00Z",
"message": "Import failed",
"linkedInUserProvider": {},
"selectedDataTypes": [
"messages",
"connections"
],
"selectedConversationIds": [
"2-ZGVmYXVsdA=="
],
"stats": {
"conversations": 14,
"messages": 320,
"connections": 250,
"comments": 12,
"richMedia": 3,
"savedItems": 5,
"savedJobAlerts": 1,
"savedJobs": 2,
"jobApplications": 4
}
},
"statusCode": 201,
"timestamp": "2026-01-15T10:15:00.000Z"
}