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, organize, and delete employee documents; manage folders and eSign workflows.

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
View employee documents, document folders, eSign requests, and eSign status.

documents:read

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

Goals > Manage goals
Create, edit, and check in employee, team, and company 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
View personal, team, and company goals

goals:read

POST /v1/goals/goal-cycles/search

Hiring > Manage job openings
Search and read hiring data (job ads, openings, candidates, applications, interviews, evaluations, offers, and related sub-resources)

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 hiring integrations
Register background check packages and report check status or results for Bob Hiring partner integrations.

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}

Job catalog > View job catalog
View job catalog data: job families, roles, profiles, and related competencies.

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 skills
View the company skills catalog and skill proficiency levels.

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

POST v1/skills/search
Manage skills
Create, update, and archive skills in the company skills catalog.

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 company lists and employee field definitions (metadata, not employee values).

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 profiles and org data. Includes custom fields, columns, and tables in employee data, including ones created after the customer installs your 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 profiles and org data. Includes custom fields, columns, and tables in employee data, including ones created after the customer installs your 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

People > View employee historical data
Read historical (non-sensitive) employee profile and org-chart changes over time.

employee_data.history:read

GET /v1/bulk/people/employment

GET /v1/bulk/people/lifecycle

GET /v1/bulk/people/work

People > View sensitive employee data

Read sensitive employee fields (e.g. financial, EEO, payroll, identification, equity).

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 fields (e.g. financial, payroll, identification, equity).

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

People > View employee sensitive historical data
Read historical values of sensitive employee fields (e.g. financial, payroll, identification).

employee_data.sensitive.history:read

See sensitive employee data scopes

GET /v1/bulk/people/salaries

GET /v1/payroll/history

GET /v1/people/{id}/salaries

POST /v1/people/actual-payments/search

Projects > Manage projects
Create and manage projects

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

Settings > View company metadata
Read company field definitions, lists, and setup metadata used to configure employee data.

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

Reports > View reports
Access reports

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
View and update employee task

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 sheets, time entries, and attendance balances.

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
View employee time off, balances, settings, and company calendar events (holidays/closures).

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 employees on private time off
View employees who are out but are on private policies

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
Manage employee time off balances and requests

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
Fetch company calendar events (holidays/closures).

timeoff.calendars:write

POST /v1/timeoff/calendars/events/search

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

workforce_planning:read

GET /v1/metadata/objects/position

Workforce planning > Manage workforce planning
Manage positions, budgets, events, and 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

POST /v1/positions/schedule-cancellation

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 > Payroll Hub Sync Status - Write
Allows the partner to fetch and sync employee data.

payrollhub.employee_sync:write

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

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

Payroll Hub > Payroll Hub Data - Read
Allows the partner to fetch pay cycle metadata, paystub information, and payroll-related employee data.

payrollhub.payroll:read

N/A

Payroll Hub > Payroll Hub 401(k) Deductions & Loans - Write
Allows the partner to fetch and update employee-level 401(k) deductions.

payrollhub.deductions:write

N/A

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)