{"message":"LinkedIn Profile Extractor API","version":"2.1.0","token_system":{"primary_storage":"DynamoDB bearer_token table","fallback_storage":"token.txt file","priority_order":"DynamoDB > token.txt > browser extraction","note":"System now prioritizes DynamoDB bearer_token table over token.txt"},"endpoints":{"POST /profile":"Get LinkedIn profile for single email (body: {email: 'user@example.com'})","POST /profiles/batch":"Enhanced batch processing with automatic profile_database mapping (body: {emails: [...], delay_seconds: 2, stop_on_error: true, save_individual_files: false, save_to_dynamodb: true, long_break_interval: 10, long_break_duration: 10})","POST /profile/mapped":"Get LinkedIn profile mapped to profile_database format (body: {email: 'user@example.com', save_to_profile_db: true})","POST /profile/map-from-linkedin-profiles":"Map existing data from linkedin_profiles to profile_database (body: {email: 'user@example.com', save_to_profile_db: true})","POST /profiles/batch-map-from-linkedin":"Batch map profiles from linkedin_profiles to profile_database (body: {emails: [...]})","POST /profile/download":"Download single LinkedIn profile as JSON file (body: {email: 'user@example.com'})","GET /health":"Health check","GET /token/status":"Check token status from both DynamoDB and token.txt","POST /token/refresh":"Force token refresh (may open browser)","POST /token/manual":"Manually upload Bearer token to both DynamoDB and token.txt (body: {token: 'Bearer xyz...'})"},"database_tables":{"bearer_token":"Primary token storage with automatic expiry and usage tracking","linkedin_profiles":"Original API responses (email + timestamp as keys)","profile_database":"Formatted profiles with mapped structure (url as key)"}}