# List of Scopes and Security Permissions for APIs
All Cornerstone APIs require a scope to be assigned to the OAuth 2.0 application and token. Most APIs also require a specific security permission to be assigned to the user account tied to the OAuth 2.0 application. The table below lists the scopes and permissions each API needs. The last column indicates whether the API respects any constraints placed on the security permission.
Note that scopes are grouped by logical operations you can perform in Cornerstone. Due to this, a single scope can grant your application access to more than one API endpoint.
# Core
Product | API | Endpoints | HTTP Method | OAuth 2.0 Scope | Security Permission | Constraints Supported? |
---|---|---|---|---|---|---|
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/employment-status/effective-date/{asOfDate} | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/employment-status | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/effective-date/{asOfDate} | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/effective-date/status | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id} | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/termination-reasons | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/employment-status | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/leave-reasons | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/custom-fields | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/employment-categories | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/custom-relations | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/activation-period | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/reasons-for-change | GET | employee:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/groups | GET | group:read | Employee API - View or Employee API - View - Constrained | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees | POST | employee:create | Employee API - Edit | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/effective-date/{asOfDate} | PATCH | employee:updatepartial | Employee API - Edit | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id} | PATCH | employee:updatepartial | Employee API - Edit | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/employment-status | PATCH | employee:updatepartial | Employee API - Edit | Yes |
Employee | Employee API v2 | /services/api/x/users/v2/employees/{id}/employment-status/effective-date/{asOfDate} | PATCH | employee:updatepartial | Employee API - Edit | Yes |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/employmentstatus/effectivedate/{asOfDate} | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/employmentstatus | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/employmentstatus | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/customfields | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/effectivedate/{asOfDate} | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/effectivedate/status | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/activationperiod | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id} | GET | employee:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/groups | GET | group:read | Employee API - View | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/employmentstatus/effectivedate/{asOfDate} | PUT | employee:updatefull | Employee API - Edit | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/employmentstatus | PUT | employee:updatefull | Employee API - Edit | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/activationperiod | PUT | employee:updatefull | Employee API - Edit | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees | POST | employee:create | Employee API - Edit | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id}/effectivedate/{asOfDate} | PATCH | employee:updatepartial | Employee API - Edit | No |
Employee | Employee API v1 | /services/api/x/users/v1/employees/{id} | PATCH | employee:updatepartial | Employee API - Edit | No |
OU | OU API v1 | /services/api/x/organizations/v1/types | GET | outype:read | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/types/{type id} | GET | outype:read | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/ous | GET | ou:read | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/ous/{ou id} | GET | ou:read | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/ous/{ou id}/localizations | GET | ou:read | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/ous | POST | ou:write | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/ous | POST | ou:write | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/ous/{ou id} | PUT | ou:updatefull | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/ous/{ou id}/localizations | PUT | ou:updatefull | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/specifications | PATCH | ouspecification:read | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/specifications | PATCH | ouspecification:read | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/types | GET | outype:read | OU Hierarchy - Manage, View Grades | Yes |
OU | OU API v1 | /services/api/x/organizations/v1/types/{type id} | GET | outype:read | OU Hierarchy - Manage, View Grades | Yes |
OU | Global Search API | /services/api/Core/GlobalSearch | GET | globalsearch:read | n/a | No |
Approvals | Approvals API | /services/api/Employee/{userName}/approvals | GET | approval:read | Request Items - View | No |
Approvals | Approvals API | /services/api/Employee/{userName}/approvals | POST | approval:create | Request Items - View | No |
# Learning
Product | API | Endpoints | HTTP Method | OAuth 2.0 Scope | Security Permission | Constraints Supported? |
---|---|---|---|---|---|---|
LO | Training (LO) API | /services/api/LO/GetDetails | GET | training:read | n/a | No |
LO | Training (LO) API | /services/api/LO/Create | POST | training:create | Events - Create, Sessions - Create, | No |
LO | Training (LO) API | /services/api/LO/Create | POST | training:create | Course Catalog - Update, | No |
LO | Training (LO) API | /services/api/LO/Create | POST | training:create | LCMS Course Administrator, | No |
LO | Training (LO) API | /services/api/LO/Create | POST | training:create | Materials Management | No |
LO | Training (LO) API | /services/api/LO/Update | POST | training:updatefull | Session - Edit | No |
LO | Training Custom Field API | /services/api/CustomField/ | POST | training:create | Training Custom Fields | No |
Express Class | Express Class API | /services/x/lms-express-class/v1/ExpressClass | POST | expressclass:create | Express Class – Manage | Yes |
Learning Assignment | Learning Assignment API | /services/x/lms-learning-assignment/v1/learning-assignment/standard | POST | learningassignment:create | Assignment Tool - Standard, | Yes |
Learning Assignment | Learning Assignment API | /services/x/lms-learning-assignment/v1/learning-assignment/standard | POST | learningassignment:create | Assignment Tool - Email Settings - View | Yes |
Learning Assignment | Learning Assignment API | /services/x/lms-learning-assignment/v1/learning-assignment/{id} | GET | learningassignment:read | Assignment Tool - Standard | Yes |
Learning Assignment | Learning Assignment API | /services/x/lms-learning-assignment/v1/learning-assignment/search | GET | learningassignment:read | Assignment Tool - Standard | Yes |
Session | Session Roster API | /services/api/SessionRoster/ | POST | sessionroster:create | Roster - Manage | No |
Session | Session Roster API | /services/api/SessionRoster/GetSessionRoster | GET | sessionroster:read | Roster - View | No |
Catalog Search | Catalog Search API | /services/api/Catalog/GlobalSearch | GET | training:read | Course Catalog - View | No |
Transcript and Task | Transcript Search API | /services/api/LOTranscript/TranscriptSearch | GET | transcript:read | Users - View, View Transcript Item | No |
Transcript and Task | Transcript and Task API | /services/api/TranscriptAndTask/Inbox | GET | inbox:read | n/a | No |
Transcript and Task | Transcript and Task API | /services/api/TranscriptAndTask/Assigned | GET | transcript:read | n/a | No |
Transcript and Task | Transcript and Task API | /services/api/TranscriptAndTask/Session | GET | transcript:read | n/a | No |
Transcript and Task | Transcript and Task API | /services/api/TranscriptAndTask/Transcript | GET | transcript:read | n/a | No |
Transcript and Task | Transcript and Task API | /services/api/TranscriptAndTask/SuggestedTraining | GET | transcript:read | n/a | No |
Transcript and Task | Transcript and Task API | /services/api/TranscriptAndTask/Approval | GET | approval:read | n/a | No |
Transcript and Task | Transcript and Task API | /services/api/TranscriptAndTask/Task | GET | task:read | n/a | No |
Certification | Certification API | /services/api/Certification/Remove | POST | certification:delete | Certification - Manage | No |
Certification | Certification API | /services/api/CertificationDetails/GetCertificationDetails | GET | certification:read | Certification - Manage | No |
Certification | Certification API | /services/api/CertificationTranscript/CertificationTranscriptDetails | GET | certification:read | View Transcript Item - View | No |
Training Unit | Training Unit API | /services/api/TrainingUnit | POST | trainingunit:create | Training Unit Assignment - View | No |
# Transcript
Product | API | Endpoints | HTTP Method | OAuth 2.0 Scope | Additional Claim | Security Permission | Constraints Supported? |
---|---|---|---|---|---|---|---|
Transcript | Overview API | /services/api/v1/transcripts/overview | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Details API | /services/api/v1/transcripts/details | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Enhanced Details API | /services/api/v1/transcripts/enhanced-details | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Curricula Child API | /services/api/v1/transcripts/curriculum-child-lo-data | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Custom Fields API | /services/api/v1/transcripts/custom-fields | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Form Fields API | /services/api/v1/transcripts/request-form-fields | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Exempt Info API | /services/api/v1/transcripts/exempt-info | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Removal Info API | /services/api/v1/transcripts/removal-info | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Session Info API | /services/api/v1/transcripts/session-info | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Version Info API | /services/api/v1/transcripts/version-info | GET | transcript:read | n/a | View Transcript Item | Yes |
Transcript | Request API | /services/api/v1/transcripts/request | POST | transcript:create | transcript:create:request | Transcript API - Request | Yes |
Transcript | Assign API | /services/api/v1/transcripts/assign | POST | transcript:create | transcript:create:assign | Assignment Tool - Standard | Yes |
Transcript | Remove API | /services/api/v1/transcripts/remove | PATCH | transcript:update | transcript:update:remove | Remove Training | Yes |
Transcript | Register API | /services/api/v1/transcripts/register | PATCH | transcript:update | transcript:update:register | Edit Transcript Items | Yes |
Transcript | Progress API | /services/api/v1/transcripts/progress | PATCH | transcript:update | transcript:update:progress | Edit Transcript Items | Yes |
Transcript | Complete API | /services/api/v1/transcripts/complete | PATCH | transcript:update | transcript:update:complete | Mark Training Complete | Yes |
Transcript | Update API | /services/api/v1/transcripts/update | PATCH | transcript:update | transcript:update:updatepartial | Edit Transcript Items | Yes |
Transcript | Approve API | /services/api/v1/transcripts/approve | PATCH | transcript:update | transcript:update:approve | Edit Transcript Items | Yes |
Transcript | Archive API | /services/api/v1/transcripts/archive | PATCH | transcript:update | transcript:update:archive | Move training to Archived Transcript | Yes |
Transcript | Withdraw API | /services/api/v1/transcripts/withdraw | PATCH | transcript:update | transcript:update:withdraw | Withdraw Users from Sessions | Yes |
Transcript | Exempt API | /services/api/v1/transcripts/exempt | PATCH | transcript:update | transcript:update:exempt | Mark Transcript Exempt | Yes |
# Performance
Product | API | Endpoints | HTTP Method | OAuth 2.0 Scope | Security Permission | Constraints Supported? |
---|---|---|---|---|---|---|
Performance Review Task | Performance Review API | /services/api/Review/PerformanceReview | GET | performancereview:read | n/a | No |
Goals | Goal API | /services/api/Goals/Create | POST | goal:create | Goals - Create | No |
Goals | Goal API | /services/api/Goals/Update | PUT | goal:updatefull | Goals - Create | No |
Goals | Goal API | /services/api/Goals/UpdateProgress | PUT | goalprogress:updatefull | Goals - Create | No |
Goals | Goal API | /services/api/Goals/GetDetails | GET | goal:read | Goals - Create | No |
# Recruiting
Product | API | Endpoints | HTTP Method | OAuth 2.0 Scope | Security Permission | Constraints Supported? |
---|---|---|---|---|---|---|
Job Requisition | Job Requisition API | /services/api/Recruiting/JobRequisitionDetails | GET | jobrequisition:read | n/a | No |
Job Requisition | Job Requisition API | /services/api/Recruiting/JobRequisitionDetails/Ad | GET | jobrequisition:read | n/a | No |
Job Requisition | Job Requisition API | /services/api/Recruiting/JobRequisitionDetails/CustomField | GET | jobrequisition:read | n/a | No |
Job Requisition | Application Workflow | /services/api/x/rec-job-requisition/v1/requisition/{externalId}/application-workflow | GET | applicationworkflow:read | n/a | No |
Applicant | Job Applicant API | /services/api/Recruiting/JobApplicant | GET | jobapplicant:read | n/a | No |
Applicant | Job Applicant API | /services/api/Recruiting/JobApplicant/CustomFields | GET | jobapplicant:read | n/a | No |
Applicant | Job Applicant API | /services/api/Recruiting/JobApplicantUpdateStatus | GET | jobapplicant:update | Applicants - Status Change | No |
Application | Job Application API | /services/api/x/external-application/v1/job-application/submit | GET | jobapplication:create | External Job Application API - Manage | No |
# Reporting
Product | API | Endpoints | HTTP Method | OAuth 2.0 Scope | Security Permission | Constraints Supported? |
---|---|---|---|---|---|---|
Cross Module | Reporting API | /services/api/x/odata/api/views/ | GET | reportingmetadata:view | Reporting API - Read Only | No |
Cross Module | Reporting API | /services/api/x/odata/api/views/$metadata | GET | reportingmetadata:view | Reporting API - Read Only | No |
Cross Module | Reporting API | /services/api/x/odata/api/views/vw_rpt_* | GET | Scopes for each Reporting API view follows this pattern: {viewname}:read . For example, to access /services/api/x/odata/api/views/vw_rpt_user, you will need the vw_rpt_user:read scope. | Reporting API - Read Only | No |
Cross Module | Data Exporter API | /services/api/x/dataexporter/api/objects | GET | obj_metadata:read | Reporting API - Read Only | No |
Cross Module | Data Exporter API | services/api/x/dataexporter/api/objects/$metadata | GET | obj_metadata:read | Reporting API - Read Only | No |
Cross Module | Data Exporter API | /services/api/x/dataexporter/api/objects/$cs_diagram | GET | obj_metadata:read | Reporting API - Read Only | No |
Cross Module | Data Exporter API | services/api/x/dataexporter/api/objects/* | GET | Scopes for each Data Exporter API view follows this pattern: {obj_name}:read . For example, to access /services/api/x/dataexporter/api/objects/users_core, you will need the obj_users_core:read scope. | Reporting API - Read Only | No |
# Bulk
Product | API | Endpoints | HTTP Method | OAuth 2.0 Scope | Security Permission | Constraints Supported? |
---|---|---|---|---|---|---|
Cross Module | Bulk API | /services/api/x/bulk-api/v1/specification | GET | bulkapispecification:read | Varies by load type | No |
Cross Module | Bulk API | /services/api/x/bulk-api/v1/jobs/{job_id} | GET | bulkapijob:read | Varies by load type | No |
Cross Module | Bulk API | /services/api/x/bulk-api/v1/imports/{import_id}/errors | GET | bulkapiimport:read | Varies by load type | No |
Cross Module | Bulk API | /services/api/x/bulk-api/v1/imports/{import_id}/report | GET | bulkapiimport:read | Varies by load type | No |
Cross Module | Bulk API | /services/api/x/bulk-api/v1/imports/{import_id}/warnings | GET | bulkapiimport:read | Varies by load type | No |
Cross Module | Bulk API | /services/api/x/bulk-api/v1/schemas | POST | bulkapischema:read | Varies by load type | No |
Cross Module | Bulk API | /services/api/x/bulk-api/v1/jobs | POST | bulkapijob:create | Varies by load type | No |
Cross Module | Bulk API | /services/api/x/bulk-api/v1/imports/{import_id} | POST | bulkapiimport:load | Varies by load type | No |