Scopes mapping to endpoints

Learn how to work with scopes when integrating with ob

🚧

Partner OAuth integrations only

This reference is for approved HiBob Marketplace partners choosing OAuth scopes in the Developer Portal. Bob customers using Service Users should use Permissions instead.

Every time you build an integration app, you need to decide what data and actions your app needs access to. In HiBob, we use OAuth scopes for that.

Scopes limit an app’s access to data and functionality, and help customers understand exactly what your app can and cannot do in their Bob account. Once a customer authorizes your app, each scope determines which API endpoints your app can access.

🚧

Important:

  • Least privilege: In the consent screen, the customer can accept or deny the requested scopes. Request only the scopes that are absolutely necessary for your use case.
  • Custom data: Custom employee fields, columns, and tables are included when the customer approves the relevant data scope, including fields added after install.
  • Changes: If you change the scopes of an existing app, it may impact existing installations (for example, customers may need to re‑install).
  • Sensitive employee data scopes: These scopes apply only to employee data, and they protect access based on the employee data category a field belongs to (for example, EEO or Financial). See sensitive employee data scopes.

Scopes mapping to endpoints

Scope name in Portal & DescriptionEndpoints

Docs > Manage documents
Upload and delete employee documents.

documents:write

POST /v1/docs/people/{id}/confidential/upload

POST /v1/docs/people/{employeeId}/custom/{folderId}

DELETE /v1/docs/people/{id}/shared/{docId}

DELETE /v1/docs/people/{id}/folders/{folderId}/{docId}

POST /v1/docs/people/{employeeId}/confidential

POST /v1/docs/people/{employeeId}/shared

POST /v1/docs/people/{id}/shared/upload

DELETE /v1/docs/people/{id}/confidential/{docId}

POST /v1/docs/people/{id}/folders/{folderId}/upload

Docs > View documents and eSign
Read employee documents and document folders.

documents:read

GET /v1/docs/people/{id} GET /v1/docs/folders/metadata

Goals > Manage goals
Create, edit, and check-in on individual, company, and custom-type goals.

goals:write

PATCH /v1/goals/goals/{goalId}/key-results/progress

POST /v1/goals/goals/key-results/search

PATCH /v1/goals/goals/{goalId}/status

PATCH /v1/goals/goals/{goalId}/key-results

DELETE /v1/goals/goals/{goalId}/key-results/{keyResultId}

POST /v1/goals/goals

POST /v1/goals/goals/{goalId}/key-results

PATCH /v1/goals/goals/{goalId}

POST /v1/goals/goals/search

DELETE /v1/goals/goals/{goalId}

POST /v1/goals/goal-types/search

Goals > View goals
Read individual, company, and custom-type goals and their details.

goals:read

POST /v1/goals/goal-cycles/search

Hiring > Access Bob Hiring data
Read hiring data: job ads, openings, candidates, applications, interviews, offers.

hiring:write

POST /v1/hiring/job-ads/search

GET /v1/hiring/job-ads/{id}

POST /v1/hiring/job-openings/search

POST /v1/hiring/candidates/search

POST /v1/hiring/applications/search

POST /v1/hiring/candidate-educations/search

POST /v1/hiring/candidate-experiences/search

POST /v1/hiring/candidate-languages/search

POST /v1/hiring/candidate-skills/search

POST /v1/hiring/candidate-volunteer-experiences/search

POST /v1/hiring/candidate-professional-associations-memberships/search

POST /v1/hiring/candidate-qualifications-licenses/search

POST /v1/hiring/application-form-answers/search

POST /v1/hiring/interviews/search

POST /v1/hiring/evaluations/search

POST /v1/hiring/evaluation-scorecard-templates/search

POST /v1/hiring/offers/search

Integrations > Manage Bob Hiring integrations
Manage partner hiring integrations (e.g. background checks, assessments): packages, candidate fields, and results.

hiring.integrations:write

POST /v1/hiring/background-checks/packages

POST /v1/hiring/background-checks/packages/delete

GET /v1/hiring/background-checks/{backgroundCheckRequestId}

PATCH /v1/hiring/background-checks/{backgroundCheckRequestId}

POST /v1/hiring/assessments/packages

POST /v1/hiring/assessments/packages/delete

GET /v1/hiring/assessments/{assessmentRequestId}

PATCH /v1/hiring/assessments/{assessmentRequestId}

Integrations > Create applicants
Create applicant records in Pending Hires.

applicants:write

POST /v1/external-hires/applicants

Job catalog > View job catalog
View all job profiles in the job catalog, including their content, such as job role, level and description.

job_catalog:read

GET /v1/job-catalog/job-family-groups/metadata

POST /v1/job-catalog/job-profiles/search

GET /v1/job-catalog/job-family-groups

GET /v1/job-catalog/job-roles

GET /v1/job-catalog/job-families/metadata

GET /v1/job-catalog/job-profiles/metadata

GET /v1/job-catalog/job-families

GET /v1/job-catalog/job-roles/metadata

View Bob skills
Read company skills catalog, skill proficiency levels and skill assignments.

job_catalog.skills:read
GET /v1/skills/proficiency-levels

POST v1/skills/search
Manage Bob skills
Create, edit, and delete skills in the company skills catalog.

Note: "Delete" archives the skill (PATCH /v1/skills/archive); skills aren't permanently removed.

job_catalog.skills:write
POST /v1/skills

PATCH /v1/skills

PATCH /v1/skills/archive

Integrations > Manage learning integrations
Connect an LMS; sync training content and learner progress with Bob Learning.

learning.integrations:write

POST /v1/learning/lms-integrations

DELETE /v1/learning/lms-integrations/{provider-identifier}

POST /v1/learning/lms-integrations/{provider-identifier}/training-content

PATCH /v1/learning/lms-integrations/{provider-identifier}/training-content

PATCH /v1/learning/lms-integrations/{provider-identifier}/training-content/archive

POST /v1/learning/lms-integrations/{provider-identifier}/xapi/statements

People > Manage company metadata
Create and update custom employee fields and lists (metadata).

company.metadata:write

PUT /v1/company/named-lists/{listName}/{itemId}

POST /v1/company/people/fields

DELETE /v1/company/people/fields/{fieldId}

DELETE /v1/company/named-lists/{listName}/{itemId}

POST /v1/company/named-lists/{listName}

PUT /v1/company/people/fields/{fieldId}

People > View employee data
Read non-sensitive employee data fields and custom fields, columns, and tables, including ones created after installing the app.

employee_data:read

GET /v1/profiles

GET /v1/people/custom-tables/{employeeId}/{tableId}

GET /v1/people/{id}/training

GET /v1/avatars/{id}

POST /v1/people/{identifier}

GET /v1/people/{id}/employment

GET /v1/people/{id}/work

GET /v1/avatars

GET /v1/people/{id}/lifecycle

POST /v1/people/search

People > Manage employee data
Create and update non-sensitive employee data fields and custom fields, columns, and tables, including ones created after installing the app.

employee_data:write

PUT /v1/people/custom-tables/{employeeId}/{tableId}/{rowId}

PUT /v1/avatars/{id}

PUT /v1/people/{id}/employment/{rowId}

POST /v1/people

POST /v1/people/{id}/training

DELETE /v1/people/custom-tables/{employeeId}/{tableId}/{rowId}

PUT /v1/people/{id}/work/{rowId}

DELETE /v1/people/{id}/work/{entry_id}

POST /v1/employees/{id}/terminate

POST /v1/employees/{id}/start-date

DELETE /v1/people/{id}/employment/{entry_id}

POST /v1/people/custom-tables/{employeeId}/{tableId}

PUT /v1/people/{id}

POST /v1/employees/{id}/uninvite

POST /v1/people/{id}/work

PUT /v1/people/{id}/email

POST /v1/people/{id}/employment

DELETE /v1/people/{id}/training/{rowId}

POST /v1/employees/{id}/invitations

POST /v1/people/{id}/right-to-work

PUT /v1/people/{id}/right-to-work/{rowId}

DELETE /v1/people/{id}/right-to-work/{rowId}

People > View employee historical data
Read historical (non-sensitive) employee table entries.

employee_data.history:read

GET /v1/bulk/people/employment

GET /v1/bulk/people/lifecycle

GET /v1/bulk/people/work

GET /v1/bulk/people/right-to-work

People > View sensitive employee data

Read sensitive employee profile fields and related people data.

employee_data.sensitive:read

See sensitive employee data scopes

GET /v1/people/{employeeId}/bank-accounts

GET /v1/people/{id}/variable

GET /v1/people/{id}/equities

GET /v1/bulk/people/equities

People > Manage sensitive employee data
Create and update sensitive employee profile fields and related people data.

employee_data.sensitive:write

See sensitive employee data scopes

DELETE /v1/people/{id}/variable/{rowId}

PUT /v1/people/{id}/equities/{rowId}

POST /v1/people/{id}/equities

POST /v1/people/{id}/salaries

PUT /v1/people/{employeeId}/bank-accounts/{rowId}

DELETE /v1/people/{id}/equities/{rowId}

DELETE /v1/people/{employeeId}/bank-accounts/{rowId}

POST /v1/people/{employeeId}/bank-accounts

DELETE /v1/people/{id}/salaries/{entry_id}

POST /v1/people/{id}/variable

PUT /v1/people/{id}/variable/{rowId}

POST /v1/people/{id}/entitlement

PUT /v1/people/{id}/entitlement/{rowId}

DELETE /v1/people/{id}/entitlement/{rowId}

POST /v1/people/{id}/deduction

PUT /v1/people/{id}/deduction/{rowId}

DELETE /v1/people/{id}/deduction/{rowId}

POST /v1/people/{id}/dependents

PUT /v1/people/{id}/dependents/{rowId}

DELETE /v1/people/{id}/dependents/{rowId}

People > View employee sensitive historical data
Read sensitive historical employee table entries.

employee_data.sensitive.history:read

See sensitive employee data scopes

GET /v1/bulk/people/salaries

GET /v1/bulk/people/variable

GET /v1/bulk/people/entitlement

GET /v1/bulk/people/deduction

GET /v1/bulk/people/dependents

GET /v1/payroll/history

GET /v1/people/{id}/salaries

POST /v1/people/actual-payments/search

Projects > Manage projects
Create and manage projects used for time tracking and project allocation.

projects:write

GET /v1/attendance/project-clients/metadata

GET /v1/attendance/project-tasks/metadata

PATCH /v1/attendance/projects/{projectId}

POST /v1/attendance/project-tasks/search

PATCH /v1/attendance/projects/{projectId}/archive

GET /v1/attendance/projects/metadata

POST /v1/attendance/project-clients/search

POST /v1/attendance/projects

PATCH /v1/attendance/projects/{projectId}/restore

POST /v1/attendance/projects/search

POST /v1/attendance/project-tasks

PUT /v1/attendance/project-tasks/{taskId}

PATCH /v1/attendance/project-tasks/{taskId}/archive

PATCH /v1/attendance/project-tasks/{taskId}/restore

Settings > View company metadata
Read employee fields, lists, goals and payroll integration metadata.

company.metadata:read

GET /v1/company/named-lists

GET /v1/onboarding/wizards

GET /v1/goals/goal-cycles/metadata

GET /v1/people/custom-tables/metadata

GET /v1/company/named-lists/{listName}

GET /v1/company/people/fields

GET /v1/goals/goals/metadata

GET /v1/goals/goal-types/metadata

GET /v1/goals/goals/key-results/metadata

GET /v1/people/custom-tables/metadata/{tableId}

GET /v1/payroll/hub/integrations/metadata

Settings > View employers and work locations
View employers and their work locations in the company.

employers:read

POST /v1/employers/search

POST /v1/employers/metadata/search

POST /v1/employers/{employerId}/work-locations/search

POST /v1/employers/work-locations/metadata/search

Reports > View reports
Run and download company reports that your app is authorized to access.

reports:read

GET /v1/company/reports/download/{reportName}

GET /v1/company/reports/{reportId}/download-async

GET /v1/company/reports

GET /v1/company/reports/{reportIdStr}/download

Tasks and flows > Manage tasks
Read general tasks assigned to employees, mark them as completed, and receive task events such as status changes and task-list assignments.

tasks:write

GET /v1/tasks/people/{id}

GET /v1/tasks

POST /v1/tasks/{taskId}/complete

Time attendance > Manage attendance sheets
Create and update employee attendance time entries.

attendance:write

POST /v1/attendance/import/{method}

POST /v1/attendance/summaries/search

POST /v1/attendance/daily-breakdown/search

POST /v1/attendance/entries/search

POST /v1/attendance/entries

PATCH /v1/attendance/employees/{employeeId}/entries

POST /v1/attendance/employees/{employeeId}/entries/clock-in

PATCH /v1/attendance/employees/{employeeId}/entries/clock-out

DELETE /v1/attendance/entries/{entryId}

Time off > View time off
Read time-off requests, balances, policies, and related time-off settings.

timeoff:read

GET /v1/timeoff/employees/{employeeId}/requests/{requestId}
GET /v1/timeoff/requests/changes
GET /v1/timeoff/whosout
GET /v1/timeoff/outtoday
Time off > View private time off details
Read time-off requests that are using private policies; view original policy name when has custom name.

timeoff.sensitive:read
Optional - only to fetch private data:
GET /v1/timeoff/requests/changes
GET /v1/timeoff/whosout
GET /v1/timeoff/outtoday
GET /v1/timeoff/employees/{employeeId}/requests/{requestId}

Required:
GET /v1/timeoff/policies
GET /v1/timeoff/policies/names
GET /v1/timeoff/employees/{employeeId}/balance
GET /v1/timeoff/policy-types/{policyType}/reason-codes
GET /v1/timeoff/policy-types/{policyType}
GET /v1/timeoff/policy-types

Time off > Manage time off
Create and update time-off requests and balances.

timeoff:write

POST /v1/timeoff/employees/{employeeId}/adjustments
POST /v1/timeoff/employees/{employeeId}/requests
POST /v1/timeoff/policy-types/{policyType}/reason-codes
DELETE /v1/timeoff/employees/{id}/requests/{requestId}

Time off > Manage calendar events
Create and manage company calendar events such as holidays and office closures.

timeoff.calendars:write

POST /v1/timeoff/calendars/events/search

POST /v1/timeoff/calendars/employees/search (also requires employee_data:read)

Workforce planning > View workforce planning
View workforce planning positions, openings, hierarchy, and budget data.

workforce_planning:read

GET /v1/metadata/objects/position

Workforce planning > Manage workforce planning
Create and update positions, openings, budgets, and related hiring plans.

workforce_planning:write

POST /v1/workforce-planning/positions/{positionId}/position-openings

POST /v1/positions/position-openings/search

GET /v1/positions/position-budget/metadata

PATCH /v1/workforce-planning/positions/{positionId}/position-budget/{positionBudgetId}

POST /v1/positions/position-budget/search

POST /v1/workforce-planning/positions/{positionId}/position-budget

POST /v1/workforce-planning/positions/schedule-cancellation

DELETE /v1/workforce-planning/positions/{positionId}/position-openings/{positionOpeningId}

GET /v1/positions/position-openings/metadata

PATCH /v1/workforce-planning/positions/{positionId}/cancel

PATCH /v1/workforce-planning/positions/{positionId}

PATCH /v1/workforce-planning/positions/{positionId}/position-openings/{positionOpeningId}

POST /v1/workforce-planning/positions

POST /v1/objects/position/search

Payroll Hub > Sync employee data to Payroll Hub
Sync payroll-related employee data through dedicated reports.

payrollhub.employee_sync:write

GET /v1/payroll/hub/sync-requests/{syncRequestId}/sync-records

PUT /v1/payroll/hub/sync-requests/{syncRequestId}/sync-records

Payroll Hub > View Payroll Hub payroll data
Read Payroll Hub pay-cycle metadata, paystubs, and payroll-related employee data.

payrollhub.payroll:read

GET /v1/payroll/hub/us/connection/status

GET /v1/payroll/hub/us/employees

GET /v1/payroll/hub/us/employers

GET /v1/payroll/hub/us/employers/{employerId}/deduction-plans

GET /v1/payroll/hub/us/employers/{employerId}/employees

GET /v1/payroll/hub/us/employers/{employerId}/pay-codes

GET /v1/payroll/hub/us/employers/{employerId}/pay-cycles

GET /v1/payroll/hub/us/pay-codes

GET /v1/payroll/hub/us/pay-cycles/{payCycleId}

GET /v1/payroll/hub/us/pay-cycles/{payCycleId}/paychecks

Payroll Hub > Manage 401(k) deductions and loans
Read and update employee 401(k) deductions and loans in Bob Payroll US.

payrollhub.deductions:write

GET /v1/payroll/hub/us/employers/{employerId}/employees/deductions

POST /v1/payroll/hub/us/employers/{employerId}/employees/{employeeId}/deductions

PUT /v1/payroll/hub/us/employers/{employerId}/employees/{employeeId}/deductions/{deductionId}

Sensitive employee data scopes

Sensitive employee data scopes are OAuth scopes intended for apps that need access to sensitive employee data in Bob.

These scopes apply only to employee data, and they protect access based on the employee data category a field belongs to (for example, EEO or Financial).

When to use them

  • Request a sensitive scope if your app needs to read or manage fields that are in the sensitive categories listed below.
  • If your app doesn’t need sensitive categories, don’t request a sensitive scope (customers will see it in the consent screen).

What to pay attention to

  • Least privilege: request only what you need (read vs. write), and avoid requesting sensitive scopes “just in case.”
  • Category-driven behavior: only fields in the listed categories are covered. If an admin moves a field out of a sensitive category, it stops being covered by the sensitive scope; if a field is moved into a sensitive category, it becomes covered.

Two variants:

  • Sensitive data: access to the data field of sensitive categories in employee data.
  • Historical sensitive data: access to historical tables of sensitive categories in employee data.

Sensitive scopes categories mapping

ScopeSensitive categories covered
employee_data.sensitive:readEEO (eeo)
Financial (financial)
Bands (band)
Bands calculated fields (bandsCalculatedFields)
Payroll (payroll)
UK tax settings (ukTaxSettings)
Equity (equity)
Identification (identification)
Analytics (peopleAnalytics)
employee_data.sensitive:writeEEO (eeo)
Financial (financial)
Payroll (payroll)
UK tax settings (ukTaxSettings)
Equity (equity)
Identification (identification)
employee_data.sensitive.history:readEEO (eeo)
Financial (financial)
Payroll (payroll)
UK tax settings (ukTaxSettings)
Equity (equity)
Identification (identification)
Analytics (peopleAnalytics)