Connecting to ZohoPeople
To authenticate to ZohoPeople, and connect to your own data or to allow other users to connect to their data, you can use the OAuth standard.
Using OAuth Authentication
First, you will need to register an OAuth application with ZohoPeople. To do so, go to Zoho Developer Console, add a new Client (Server-based application) and set a valid OAuth redirect URL. Your Oauth application will be assigned a client id and a client secret.
After setting the following connection properties, you are ready to connect:
- AuthScheme: Set this to OAuth.
- InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to manage the process to obtain the OAuthAccessToken.
- OAuthClientId: Set this to the client_id that is specified in you app settings.
- OAuthClientSecret: Set this to the client_secret that is specified in you app settings.
- CallbackURL: Set this to the Redirect URI that is specified in your app settings
- Domain: Optionally, set this in ProfileSettings to your ZohoPeople account domain
Example connection string:
Profile=C:\profiles\ZohoPeople.apip;ProfileSettings='Domain=your_domain';Authscheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackUrl=your_callback_url;
Available Tables
The ZohoPeople API Profile provides access to employee management, time tracking, travel, compensation, performance, and survey data across 36 tables and views:
- AddressProof - Query and insert address proof change requests submitted by employees.
- AddressProofView - Query address proof request records from the AddressProofView view.
- BonafideLetter - Query and insert bonafide letter requests submitted by employees.
- BonafideLetterView - Query bonafide letter requests from the BonafideLetterView view.
- CandidateView - Query onboarding candidates from the CandidateView view.
- Clients - Query time tracker clients.
- Compensation - Query compensation and salary records for employees.
- Departments - Query and insert departments from the department form.
- Designations - Query and insert designations from the designation form.
- DowngradedEmployeeView - Query downgraded employees from the DowngradedEmployeeView view.
- EmployeeInactiveView - Query inactive employees from the EmployeeInactiveView view.
- EmployeeView - Query employees and their full profile details from the P_EmployeeView view.
- Employees - Query and insert employee records from the employee form.
- ExperienceLetter - Query and insert experience letter requests submitted by employees.
- ExperienceLetterView - Query experience letter requests from the ExperienceLetterView view.
- FileCategories - Query file category definitions configured in the system.
- Files - Query files uploaded to employee records.
- GoalSheetView - Query goal sheets from the P_GoalSheet_View view.
- JobSchedule - Query job schedules for an employee within a date range.
- Jobs - Query time tracker jobs.
- KRAUserView - Query KRA ratings per employee from the P_KRA_User_View view.
- KRAView - Query Key Result Areas (KRAs) from the P_KRA_View view.
- Projects - Query time tracker projects.
- QuestionView - Query survey questions from the QuestionView view.
- SurveyView - Query surveys from the SurveyView view.
- Tasks - Query and insert tasks from the P_Task form.
- TasksView - Query tasks from the P_Task_View view.
- Timesheet - Query detailed timesheet data for a specific timesheet record.
- Timesheets - Query the list of timesheets for a specified user.
- Timelogs - Query time log entries for a specified user.
- TravelExpenses - Query and insert travel expense records from the travelexpenses form.
- TravelExpensesView - Query travel expense records from the TravelExpenseView view.
- TravelRequests - Query and insert travel request records from the travelrequest form.
- TravelRequestsView - Query travel request records from the TravelInitiateView view.
- UserSkills - Query skills assigned to a specific employee.
- WorkItems - Query work items for a specific job and employee.
Usage Examples
AddressProof:
SELECT * FROM AddressProof
SELECT * FROM AddressProof WHERE ZohoId = 123456
INSERT INTO AddressProof (EmployeeId, DateOfRequest, ReasonForRequest, IsThereAnyChangeInAddress) VALUES ('EMP-001', '01-Jan-2025', 'Relocation', 'Yes')
AddressProofView:
SELECT * FROM AddressProofView SELECT * FROM AddressProofView WHERE ModifiedTime > '2025-01-01'
BonafideLetter:
SELECT * FROM BonafideLetter
SELECT * FROM BonafideLetter WHERE ZohoId = 123456
INSERT INTO BonafideLetter (EmployeeId, RequestDate, ReasonForRequest) VALUES ('EMP-001', '01-Jan-2025', 'Visa Application')
BonafideLetterView:
SELECT * FROM BonafideLetterView SELECT * FROM BonafideLetterView WHERE ModifiedTime > '2025-01-01'
CandidateView:
SELECT * FROM CandidateView SELECT * FROM CandidateView WHERE OnboardingStatus = 'Pending' SELECT * FROM CandidateView WHERE ModifiedTime > '2025-01-01'
Clients:
SELECT * FROM Clients SELECT * FROM Clients WHERE Id = 123456
Compensation:
SELECT * FROM Compensation WHERE Mode = 'all' SELECT * FROM Compensation WHERE Mode = 'team'
Departments:
SELECT * FROM Departments
SELECT * FROM Departments WHERE ModifiedTime > '2025-01-01'
INSERT INTO Departments (Department) VALUES ('Engineering')
Designations:
SELECT * FROM Designations
SELECT * FROM Designations WHERE ModifiedTime > '2025-01-01'
INSERT INTO Designations (Designation) VALUES ('Senior Software Engineer')
DowngradedEmployeeView:
SELECT * FROM DowngradedEmployeeView SELECT * FROM DowngradedEmployeeView WHERE Department = 'Engineering'
EmployeeInactiveView:
SELECT * FROM EmployeeInactiveView SELECT * FROM EmployeeInactiveView WHERE Department = 'Engineering'
EmployeeView:
SELECT * FROM EmployeeView SELECT * FROM EmployeeView WHERE EmployeeId = 'EMP-001' SELECT * FROM EmployeeView WHERE ModifiedTime = '2025-01-01'
Employees:
SELECT * FROM Employees
SELECT * FROM Employees WHERE EmployeeId = 'EMP-001'
SELECT * FROM Employees WHERE ModifiedTime > '2025-01-01'
INSERT INTO Employees (EmployeeId, FirstName, LastName, Email) VALUES ('EMP-002', 'Jane', 'Doe', '[email protected]')
ExperienceLetter:
SELECT * FROM ExperienceLetter
SELECT * FROM ExperienceLetter WHERE ZohoId = 123456
INSERT INTO ExperienceLetter (EmployeeId, RequestDate, ReasonForRequest) VALUES ('EMP-001', '01-Jan-2025', 'New Employment')
ExperienceLetterView:
SELECT * FROM ExperienceLetterView SELECT * FROM ExperienceLetterView WHERE ModifiedTime > '2025-01-01'
FileCategories:
SELECT * FROM FileCategories
Files:
SELECT * FROM Files WHERE FileType = '1' AND RoleId = 'all' AND CategoryId = 'CAT-001' AND EmployeeId = 'EMP-001' AND LocationId = 'all' AND FilterBy = 'all' SELECT * FROM Files WHERE FileType = '0' AND RoleId = 'all' AND CategoryId = 'CAT-001' AND EmployeeId = 'EMP-001' AND LocationId = 'all' AND FilterBy = 'my'
GoalSheetView:
SELECT * FROM GoalSheetView SELECT * FROM GoalSheetView WHERE EmployeeId = 'EMP-001' SELECT * FROM GoalSheetView WHERE ModifiedTime > '2025-01-01'
JobSchedule:
SELECT * FROM JobSchedule WHERE EmployeeId = 'EMP-001' AND FromDate = '01-Jan-2025' AND ToDate = '31-Jan-2025'
Jobs:
SELECT * FROM Jobs SELECT * FROM Jobs WHERE Id = 123456 SELECT * FROM Jobs WHERE Status = 'inprogress' AND AssignedTo = 'all'
KRAUserView:
SELECT * FROM KRAUserView SELECT * FROM KRAUserView WHERE EmployeeId = 'EMP-001' SELECT * FROM KRAUserView WHERE ModifiedTime > '2025-01-01'
KRAView:
SELECT * FROM KRAView SELECT * FROM KRAView WHERE EmployeeId = 'EMP-001' SELECT * FROM KRAView WHERE ModifiedTime > '2025-01-01'
Projects:
SELECT * FROM Projects SELECT * FROM Projects WHERE Id = 123456 SELECT * FROM Projects WHERE ProjectStatus = 'inprogress' AND AssignedTo = 'all'
QuestionView:
SELECT * FROM QuestionView SELECT * FROM QuestionView WHERE RecordId = 'REC-001' SELECT * FROM QuestionView WHERE ModifiedTime > '2025-01-01'
SurveyView:
SELECT * FROM SurveyView SELECT * FROM SurveyView WHERE RecordId = 'REC-001' SELECT * FROM SurveyView WHERE ModifiedTime > '2025-01-01'
Tasks:
SELECT * FROM Tasks
SELECT * FROM Tasks WHERE ZohoId = 123456
INSERT INTO Tasks (TaskName, Status) VALUES ('Complete onboarding docs', 'Open')
TasksView:
SELECT * FROM TasksView SELECT * FROM TasksView WHERE Status = 'Open' SELECT * FROM TasksView WHERE ModifiedTime > '2025-01-01'
Timesheet:
SELECT * FROM Timesheet WHERE TimesheetId = 123456
Timesheets:
SELECT * FROM Timesheets WHERE User = 'all' SELECT * FROM Timesheets WHERE User = '[email protected]' AND Status = 'approved' SELECT * FROM Timesheets WHERE User = 'all' AND FromDate = '2025-01-01' AND ToDate = '2025-01-31'
Timelogs:
SELECT * FROM Timelogs WHERE User = 'all' SELECT * FROM Timelogs WHERE User = '[email protected]' AND ApprovalStatus = 'approved' SELECT * FROM Timelogs WHERE User = 'all' AND ProjectId = 123456
TravelExpenses:
SELECT * FROM TravelExpenses
SELECT * FROM TravelExpenses WHERE RecordId = 123456
INSERT INTO TravelExpenses (TravelId, EmployeeId) VALUES ('TRAV-001', 'EMP-001')
TravelExpensesView:
SELECT * FROM TravelExpensesView SELECT * FROM TravelExpensesView WHERE ModifiedTime > '2025-01-01'
TravelRequests:
SELECT * FROM TravelRequests
SELECT * FROM TravelRequests WHERE RecordId = 123456
INSERT INTO TravelRequests (EmployeeId) VALUES ('EMP-001')
TravelRequestsView:
SELECT * FROM TravelRequestsView SELECT * FROM TravelRequestsView WHERE ModifiedTime > '2025-01-01'
UserSkills:
SELECT * FROM UserSkills WHERE EmployeeId = 'EMP-001'
WorkItems:
SELECT * FROM WorkItems WHERE JobId = '123456' AND EmpId = 'EMP-001'
Connection Properties
The connection string properties are the various options that can be used to establish a connection. This section provides a complete list of the options you can configure in the connection string for this provider.
| Property | Description |
| AuthScheme | The scheme used for authentication. Accepted entries are None or OAuth. Allowed values are: BASIC, NONE, NTLM, OAUTH, APIKEY, OAUTH_CLIENT, OAUTH_PASSWORD |
| CallbackURL | Identifies the URL users return to after authenticating to API via OAuth (Custom OAuth applications only). |
| Domain | Determines the domain where authentication calls will be sent to. Allowed values are: MIXPANEL, EU.MIXPANEL, IN.MIXPANEL, .COM, .EU, .COM.AU, .IN, COM, EU, COM.AU, IN, JP, COM.CN, CA, SA, .COM.CN, .JP, .CA, .SA |
| InitiateOAuth | Specifies the process for obtaining or refreshing the OAuth access token, which maintains user access while an authenticated, authorized user is working. Allowed values are: OFF, REFRESH, GETANDREFRESH |
| OAuthAccessToken | Specifies the OAuth access token used to authenticate requests to the data source. This token is issued by the authorization server after a successful OAuth exchange. |
| OAuthClientId | Specifies the client ID (also known as the consumer key) assigned to your custom OAuth application. This ID is required to identify the application to the OAuth authorization server during authentication. |
| OAuthClientSecret | Specifies the client secret assigned to your custom OAuth application. This confidential value is used to authenticate the application to the OAuth authorization server. (Custom OAuth applications only.). |
| OAuthExpiresIn | Specifies the duration in seconds, of an OAuth Access Token's lifetime. The token can be reissued to keep access alive as long as the user keeps working. |
| OAuthRefreshToken | Specifies the OAuth refresh token used to request a new access token after the original has expired. |
| OAuthSettingsLocation | Specifies the location of the settings file where OAuth values are saved. |
| OAuthTokenTimestamp | Displays a Unix epoch timestamp in milliseconds that shows how long ago the current access token was created. |
| OAuthVerifier | Specifies a verifier code returned from the OAuthAuthorizationURL . Used when authenticating to OAuth on a headless server, where a browser can't be launched. Requires both OAuthSettingsLocation and OAuthVerifier to be set. |
| Scope | Scope(s) to use when authenticating, that control access to specific information. |