SERVICE INTEGRATION GUIDE
Linkedin Admin Panel
This document provides detailed information about how the Linkedin Admin Panel integrates with backend services, including configuration, API communication patterns, and service-specific implementation details.
Architectural Design Credit and Contact Information
The architectural design of this service integration is credited to Mindbricks Genesis Engine.
We encourage open communication and welcome any questions or discussions related to the architectural aspects of this service integration.
Documentation Scope
This guide covers the complete integration architecture between the Linkedin Admin Panel and its backend services. It includes configuration management, API communication patterns, authentication flows, and service-specific implementation details.
Intended Audience
This documentation is intended for frontend developers, DevOps engineers, and system integrators who need to understand, configure, or extend the admin panel's service integration capabilities.
Service Integration Architecture
Overview
The admin panel integrates with backend services through service-specific HTTP clients. Each service is configured via environment variables and uses its own Axios instance for API communication.
Integration Components
Service Configuration
- Service URLs configured via environment variables
- Service-specific Axios instances for API communication
API Communication
- Basic HTTP client instances per service
- Simple error handling through response interceptors
Service Configuration
Environment Variables
The admin panel uses environment variables to configure service endpoints and integration settings:
Core Configuration
# Application Configuration
VITE_APP_NAME="Linkedin Admin Panel"
VITE_APP_VERSION="1.1.43"
VITE_ASSETS_DIR="/assets"
**Service Endpoints**
```bash
# JobApplication Service
VITE_JOBAPPLICATION_SERVICE_URL="https://jobApplication-api.linkedin.prod.mindbricks.com"
```bash
# Networking Service
VITE_NETWORKING_SERVICE_URL="https://networking-api.linkedin.prod.mindbricks.com"
```bash
# Company Service
VITE_COMPANY_SERVICE_URL="https://company-api.linkedin.prod.mindbricks.com"
```bash
# Content Service
VITE_CONTENT_SERVICE_URL="https://content-api.linkedin.prod.mindbricks.com"
```bash
# Messaging Service
VITE_MESSAGING_SERVICE_URL="https://messaging-api.linkedin.prod.mindbricks.com"
```bash
# Profile Service
VITE_PROFILE_SERVICE_URL="https://profile-api.linkedin.prod.mindbricks.com"
```bash
# Auth Service
VITE_AUTH_SERVICE_URL="https://auth-api.linkedin.prod.mindbricks.com"
API Communication Patterns
HTTP Client Configuration
Service-Specific Axios Instances
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const jobApplicationAxiosInstance = axios.create({
baseURL: CONFIG.jobApplicationServiceUrl
});
jobApplicationAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default jobApplicationAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const networkingAxiosInstance = axios.create({
baseURL: CONFIG.networkingServiceUrl
});
networkingAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default networkingAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const companyAxiosInstance = axios.create({
baseURL: CONFIG.companyServiceUrl
});
companyAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default companyAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const contentAxiosInstance = axios.create({
baseURL: CONFIG.contentServiceUrl
});
contentAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default contentAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const messagingAxiosInstance = axios.create({
baseURL: CONFIG.messagingServiceUrl
});
messagingAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default messagingAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const profileAxiosInstance = axios.create({
baseURL: CONFIG.profileServiceUrl
});
profileAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default profileAxiosInstance;
import axios from 'axios';
import { CONFIG } from 'src/global-config';
const authAxiosInstance = axios.create({
baseURL: CONFIG.authServiceUrl
});
authAxiosInstance.interceptors.response.use(
(response) => response,
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
);
export default authAxiosInstance;
Service Endpoints
JobApplication Service Endpoints
export const jobApplicationEndpoints = {
jobPosting: {
updateJobPosting: '/v1/jobpostings/:jobPostingId'
,
deleteJobPosting: '/v1/jobpostings/:jobPostingId'
,
getJobPosting: '/v1/jobpostings/:jobPostingId'
,
listJobPostings: '/v1/jobpostings'
,
createJobPosting: '/v1/jobpostings'
},
jobApplication: {
deleteJobApplication: '/v1/jobapplications/:jobApplicationId'
,
getJobApplication: '/v1/jobapplications/:jobApplicationId'
,
updateJobApplication: '/v1/jobapplications/:jobApplicationId'
,
createJobApplication: '/v1/jobapplications'
,
listJobApplications: '/v1/jobapplications'
}
};
Networking Service Endpoints
export const networkingEndpoints = {
connection: {
createConnection: '/v1/connections'
,
listConnections: '/v1/connections'
,
deleteConnection: '/v1/connections/:connectionId'
,
getConnection: '/v1/connections/:connectionId'
},
connectionRequest: {
deleteConnectionRequest: '/v1/connectionrequests/:connectionRequestId'
,
updateConnectionRequest: '/v1/connectionrequests/:connectionRequestId'
,
listConnectionRequests: '/v1/connectionrequests'
,
createConnectionRequest: '/v1/connectionrequests'
,
getConnectionRequest: '/v1/connectionrequests/:connectionRequestId'
}
};
Company Service Endpoints
export const companyEndpoints = {
companyFollower: {
followCompany: '/v1/followcompany'
,
unfollowCompany: '/v1/unfollowcompany/:companyFollowerId'
,
listCompanyFollowers: '/v1/companyfollowers'
,
getCompanyFollower: '/v1/companyfollowers/:companyFollowerId'
},
companyUpdate: {
getCompanyUpdate: '/v1/companyupdates/:companyUpdateId'
,
createCompanyUpdate: '/v1/companyupdates'
,
updateCompanyUpdate: '/v1/companyupdates/:companyUpdateId'
,
deleteCompanyUpdate: '/v1/companyupdates/:companyUpdateId'
,
listCompanyUpdates: '/v1/companyupdates'
},
company: {
createCompany: '/v1/companies'
,
getCompany: '/v1/companies/:companyId'
,
listCompanies: '/v1/companies'
,
updateCompany: '/v1/companies/:companyId'
,
deleteCompany: '/v1/companies/:companyId'
},
companyAdmin: {
getCompanyAdmin: '/v1/companyadmins/:companyAdminId'
,
removeCompanyAdmin: '/v1/removecompanyadmin/:companyAdminId'
,
assignCompanyAdmin: '/v1/assigncompanyadmin'
,
listCompanyAdmins: '/v1/companyadmins'
}
};
Content Service Endpoints
export const contentEndpoints = {
post: {
createPost: '/v1/posts'
,
listPosts: '/v1/posts'
,
getPost: '/v1/posts/:postId'
,
deletePost: '/v1/posts/:postId'
,
updatePost: '/v1/posts/:postId'
,
listUserPosts: '/v1/userposts'
},
like: {
likePost: '/v1/likepost'
,
listLikes: '/v1/likes'
,
unlikePost: '/v1/unlikepost/:likeId'
},
comment: {
updateComment: '/v1/comments/:commentId'
,
createComment: '/v1/comments'
,
listComments: '/v1/comments'
,
getComment: '/v1/comments/:commentId'
,
deleteComment: '/v1/comments/:commentId'
}
};
Messaging Service Endpoints
export const messagingEndpoints = {
message: {
listMessages: '/v1/messages'
,
getMessage: '/v1/messages/:messageId'
,
updateMessage: '/v1/messages/:messageId'
,
deleteMessage: '/v1/messages/:messageId'
,
createMessage: '/v1/messages'
},
conversation: {
updateConversation: '/v1/conversations/:conversationId'
,
getConversation: '/v1/conversations/:conversationId'
,
deleteConversation: '/v1/conversations/:conversationId'
,
listConversations: '/v1/conversations'
,
createConversation: '/v1/conversations'
}
};
Profile Service Endpoints
export const profileEndpoints = {
profile: {
updateProfile: '/v1/profiles/:profileId'
,
deleteProfile: '/v1/profiles/:profileId'
,
listProfiles: '/v1/profiles'
,
createProfile: '/v1/profiles'
,
getProfile: '/v1/profiles/:profileId'
},
premiumsubscription: {
deletePremuimSub: '/v1/premuimsub/:premiumsubscriptionId'
,
createPremuimSub: '/v1/premuimsub'
,
updatePremuimSub: '/v1/premuimsub/:premiumsubscriptionId'
,
getPremuimSub: '/v1/premuimsub/:premiumsubscriptionId'
,
listPremuimSub: '/v1/premuimsub'
,
startPremiumsubscriptionPayment: '/v1/startpremiumsubscriptionpayment/:premiumsubscriptionId'
,
refreshPremiumsubscriptionPayment: '/v1/refreshpremiumsubscriptionpayment/:premiumsubscriptionId'
,
callbackPremiumsubscriptionPayment: '/v1/callbackpremiumsubscriptionpayment'
},
certification: {
updateCertification: '/v1/certifications/:certificationId'
,
listCertifications: '/v1/certifications'
,
createCertification: '/v1/certifications'
,
getCertification: '/v1/certifications/:certificationId'
,
deleteCertification: '/v1/certifications/:certificationId'
},
language: {
deleteLanguage: '/v1/languages/:languageId'
,
updateLanguage: '/v1/languages/:languageId'
,
listLanguages: '/v1/languages'
,
getLanguage: '/v1/languages/:languageId'
,
createLanguage: '/v1/languages'
},
sys_premiumsubscriptionPayment: {
getPremiumsubscriptionPayment2: '/v1/premiumsubscriptionpayment2/:sys_premiumsubscriptionPaymentId'
,
listPremiumsubscriptionPayments2: '/v1/premiumsubscriptionpayments2'
,
createPremiumsubscriptionPayment: '/v1/premiumsubscriptionpayment'
,
updatePremiumsubscriptionPayment: '/v1/premiumsubscriptionpayment/:sys_premiumsubscriptionPaymentId'
,
deletePremiumsubscriptionPayment: '/v1/premiumsubscriptionpayment/:sys_premiumsubscriptionPaymentId'
,
listPremiumsubscriptionPayments2: '/v1/premiumsubscriptionpayments2'
,
getPremiumsubscriptionPaymentByOrderId: '/v1/premiumsubscriptionpaymentbyorderid/:orderId'
,
getPremiumsubscriptionPaymentByPaymentId: '/v1/premiumsubscriptionpaymentbypaymentid/:paymentId'
,
getPremiumsubscriptionPayment2: '/v1/premiumsubscriptionpayment2/:sys_premiumsubscriptionPaymentId'
},
sys_paymentCustomer: {
getPaymentCustomerByUserId: '/v1/paymentcustomers/:userId'
,
listPaymentCustomers: '/v1/paymentcustomers'
},
sys_paymentMethod: {
listPaymentCustomerMethods: '/v1/paymentcustomermethods/:userId'
}
};
Auth Service Endpoints
export const authEndpoints = {
login: "/login",
me: "/v1/users/:userId",
logout: "/logout",
user: {
getUser: '/v1/users/:userId'
,
updateUser: '/v1/users/:userId'
,
updateProfile: '/v1/profile/:userId'
,
createUser: '/v1/users'
,
deleteUser: '/v1/users/:userId'
,
archiveProfile: '/v1/archiveprofile/:userId'
,
listUsers: '/v1/users'
,
searchUsers: '/v1/searchusers'
,
updateUserRole: '/v1/userrole/:userId'
,
updateUserPassword: '/v1/userpassword/:userId'
,
updateUserPasswordByAdmin: '/v1/userpasswordbyadmin/:userId'
,
getBriefUser: '/v1/briefuser/:userId'
,
registerUser: '/v1/registeruser'
}
};
Authentication Integration
JWT Token Management
Basic Token Handling
// Authentication is handled through the AuthProvider context
// Tokens are managed by the JWT authentication system
Multi-Service Authentication
Service Authentication Implementation
// Basic JWT authentication is used across all services
// Authentication context is shared between services
Data Synchronization
Real-Time Updates
Data Synchronization Implementation
// Data is fetched on-demand through API calls
// No real-time synchronization is required
Optimistic Updates
Update Strategy Implementation
// Data is updated directly through API calls
// Changes are reflected immediately after successful API response
Error Handling and Resilience
Error Handling
Error Handling Implementation
// Basic error handling through Axios response interceptors
// Errors are logged and simplified for display
Retry Mechanisms
Retry Implementation
// Basic error handling through Axios interceptors
// Errors are logged and displayed to users
Service-Specific Integration Details
JobApplication Service Integration
Service Overview
-
Service Name:
jobApplication -
Display Name:
JobApplication - Primary Purpose: Microservice handling job postings (created by recruiters/company admins), job applications (created by users), allowing job search, application submission, and status update workflows. Enforces business rules around application status, admin controls, and lets professionals apply and track job applications .within the network.
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
JobPosting: Job posting entity representing an open position with a company. Created/managed by company admins or recruiters. Fields include companyId, postedByUserId, title, details, requirements, employment type, salary, deadline, etc.
-
JobApplication: Record of a user applying for a specific jobPosting (tracks application/resume/status/audit). Each application is unique per user x jobPosting.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_JOBAPPLICATION_SERVICE_URL=https://jobApplication-api.linkedin.prod.mindbricks.com
Networking Service Integration
Service Overview
-
Service Name:
networking -
Display Name:
Networking - Primary Purpose: Handles professional networking logic for user-to-user connections: manages connection requests, accepted relationships, listing/removal, permissions, and state transitions. Publishes connection lifecycle events for notification...
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
Connection: Represents a single established user-to-user professional relationship (mutual connection). One record per unordered user pair, deleted on disconnect..
-
ConnectionRequest: Tracks a user's request to connect with another user, supporting request/accept/reject/cancel, with audit timestamps.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_NETWORKING_SERVICE_URL=https://networking-api.linkedin.prod.mindbricks.com
Company Service Integration
Service Overview
-
Service Name:
company -
Display Name:
Company - Primary Purpose: Handles company profiles, company admin assignments, company following, and posting company updates/news. Enables professionals to follow companies, get updates, and enables admins to manage company presence..
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
CompanyFollower: Tracks when a user follows a company to receive updates. Append-only, deletes for unfollow.
-
CompanyUpdate: A post/news update created by company admin and visible to followers depending on visibility.
-
Company: Represents a company profile and brand presence/pages on the network.
-
CompanyAdmin: Tracks which users are assigned as admins for a company, allowing them to manage the company page and edits.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_COMPANY_SERVICE_URL=https://company-api.linkedin.prod.mindbricks.com
Content Service Integration
Service Overview
-
Service Name:
content -
Display Name:
Content - Primary Purpose: Handles creation, editing, and deletion of user posts (with attachments and visibility), user post feed aggregation, and post engagement (likes, comments). All with post-level visibility control (public/private)..
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
Post: A user or company-authored post in the feed, with content, optional attachments, and public/private visibility. Belongs to a user (author) and optionally a company.
-
Like: A record of a user liking a specific post. Each user can like a post only once. Used for engagement counts and activity feeds.
-
Comment: A comment on a post. Can be a top-level or a reply to another comment (via parentCommentId).
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_CONTENT_SERVICE_URL=https://content-api.linkedin.prod.mindbricks.com
Messaging Service Integration
Service Overview
-
Service Name:
messaging -
Display Name:
Messaging - Primary Purpose: Handles direct, private 1:1 and group messaging between users, conversation management, and message history/storage..
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
Message: Message posted within a conversation. Tracks content, sender, readBy, and deletedFor status per user.
-
Conversation: Messaging thread among users supporting 1:1 and group. Tracks participants, group status, and last message time.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_MESSAGING_SERVICE_URL=https://messaging-api.linkedin.prod.mindbricks.com
Profile Service Integration
Service Overview
-
Service Name:
profile -
Display Name:
Profile - Primary Purpose: Handles user professional profiles, including experience, education, skills, languages, certifications, profile photo, and visibility controls. Enables recruiter search, elastic-style indexing, and profile editing, with all data linked to authenticated users..
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
-
Profile: Professional profile for a user, includes core info and arrays of experience/education/skills. One profile per user...
-
Premiumsubscription: premium subscription for a user
-
Certification: Official certification available for selection in user profile (dictionary only, not user relation).
-
Language: Official language available for selection in user profile (dictionary only, not user relation).
-
Sys_premiumsubscriptionPayment: A payment storage object to store the payment life cyle of orders based on premiumsubscription object. It is autocreated based on the source object's checkout config
-
Sys_paymentCustomer: A payment storage object to store the customer values of the payment platform
-
Sys_paymentMethod: A payment storage object to store the payment methods of the platform customers
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_PROFILE_SERVICE_URL=https://profile-api.linkedin.prod.mindbricks.com
Auth Service Integration
Service Overview
-
Service Name:
auth -
Display Name:
Auth - Primary Purpose: Authentication service for the project
Integration Features
- Basic CRUD operations for data objects
- Simple error handling
Data Object Management
- User: A data object that stores the user information and handles login settings.
API Endpoints
- Data Operations: Service-specific CRUD endpoints based on business logic
Configuration Requirements
VITE_AUTH_SERVICE_URL=https://auth-api.linkedin.prod.mindbricks.com
Performance Optimization
Caching Strategies
Caching Implementation
// Data is fetched on-demand through API calls
// No caching is required for current use cases
Request Batching
Request Batching Implementation
// Individual API calls are made as needed
// Each operation is handled independently
Monitoring and Logging
Service Monitoring
Monitoring Implementation
// Basic error logging through console.error
// Service health is monitored through API responses
Error Logging
Error Logging Implementation
// Basic error logging through console.error
// Errors are displayed to users through UI components