OneRoster

OneRoster is an open, standards-based way to share classes and roster information between systems. 

Manage OneRoster API Keys

Add OneRoster API Key

  1. Navigate to the District Details page.
  2. Select Integrations
  3. In the OneRoster API Keys section, click Add API Key. The Create OneRoster API Key dialog appears.
  4. Enter the name of the OneRoster API Key.
  5. Click Create
  6. Note the Secret. 
  7. Click the Plus icon to copy the value.

    Note: Save the Secret value. After you close this pop-up, you will not be able to retrieve it.

  8. Click OK

View OneRoster API Keys

  1. Navigate to the District Details page.
  2. Select the Integrations tab.
    All API Keys for the selected district appear in the OneRoster API Keys section.

Regenerate Secret

  1. Navigate to the District Details page.
  2. On the District tab, click Integrations
  3. In the OneRoster API Keys section, click Regenerate next to the OneRoster API Key for which you want to regenerate a new secret.
  4. Click Regenerate
  5. Note the Secret. 
  6. Click the Plus icon to copy the value. 

    Note: Save the Secret value. After you close this pop-up, you will not be able to retrieve it.

  7. Click OK


Delete API Key

  1. Navigate to the District Details page.
  2. Select Integrations
  3. In the OneRoster API Keys section, click Delete next to the OneRoster API Key you want to delete. 
  4. Click Delete

Authentication

PowerSchool's OneRoster implementation uses OAuth 2.0 for authentication. To make requests to individual APIs, you need to get an OAuth 2.0 bearer token using the following process.

Using your API key and secret (see above for instructions on generating the API key and secret), you'll make the following API call:

URI: https://accounts.powerschool.com/as/token.oauth2
Method: POST  

Headers:
Content-Type: application/x-www-form-urlencoded;charset=UTF-8

Body:
client_id=[API Key]
client_secret=[Secret]
grant_type=client_credentials

You'll get back a response with an access token you can use in the Authorization header of subsequent API requests. The response will look like:

{
    "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InBzIn0.eyJzY29wZSI6WyJvcmdhbmlzYXRpb24iLCJvbmVyb3N0ZXJhcGkiXSwiY2xpZW50X2lkIjoiYzliUTZUM1NJSEc1TEdHQ0xVSWwiLCJleHAiOjE1MjIxOTU3OTJ9.ljsectJFWGdjdRmODW_kXQy5Ux5r_ssg1PvClqpar9KBlb3gOhH-dt4SE4iESkiMrtDMGPbOxWgTd5o7NQusJmgHA7CIbj1t4oJZNtYO4o_YVKjL3293E-oTFXsLLshWBmoL1yLvyxM_3pTNdK8uSe99VJkQmSBieKnNd0L3Pog8HRcTcWILyMyECwXcajg2dOa2vwGw-mlZX198KUlPgbwp1kiFW_h8P549HjEqvFEYEj2g17yz3ugnBbWqzDh4MnbqM_VaCnMFa0l0_2jcpkkWs81I79kG49ky9tnj5GG8XVuF9jHIFQKLsPf9WkYlC1ToHIYP4WR5grzU8Rxnjw",
    "token_type": "Bearer",
    "expires_in": 21599
}

The access token is valid for 360 minutes. As such it is not necessary to request a new token for every request. The consumer should cache this access token and keep using it until it expires.

Base URL

Use the base URL, https://classroom.powerschool.com/ims/oneroster/v1p1 to connect.

Entities Available

PowerSchool supports providing data for the following entities and API endpoints.

  • Academic Sessions
    • /ims/oneroster/v1p1/academicSessions
    • /ims/oneroster/v1p1/academicSessions/{id}
  • Classes
    • /ims/oneroster/v1p1/classes
    • /ims/oneroster/v1p1/classes/{id}
    • /ims/oneroster/v1p1/courses/{course_id}/classes
    • /ims/oneroster/v1p1/schools/{school_id}/classes
    • /ims/oneroster/v1p1/students/{student_id}/classes
    • /ims/oneroster/v1p1/teachers/{teacher_id}/classes
    • /ims/oneroster/v1p1/terms/{term_id}/classes
  • Courses
    • /ims/oneroster/v1p1/courses
    • /ims/oneroster/v1p1/courses/{id}
    • /ims/oneroster/v1p1/schools/{school_id}/courses
  • Enrollments
    • /ims/oneroster/v1p1/classes/{classid}/enrollments
    • /ims/oneroster/v1p1/enrollments
    • /ims/oneroster/v1p1/enrollments/{id}
    • /ims/oneroster/v1p1/schools/{school_id}/enrollments
  • Grading Periods
    • /ims/oneroster/v1p1/gradingPeriods
    • /ims/oneroster/v1p1/gradingPeriods/{id}
    • /ims/oneroster/v1p1/terms/{term_id}/gradingPeriods
  • Orgs
    • /ims/oneroster/v1p1/orgs
    • /ims/oneroster/v1p1/orgs/{id}
  • Schools
    • /ims/oneroster/v1p1/schools
    • /ims/oneroster/v1p1/schools/{id}
  • Students
    • /ims/oneroster/v1p1/students
    • /ims/oneroster/v1p1/students/{id}
    • /ims/oneroster/v1p1/classes/{class_id}/students
    • /ims/oneroster/v1p1/schools/{school_id}/classes/{class_id}/students
    • /ims/oneroster/v1p1/schools/{school_id}/students
  • Teachers
    • /ims/oneroster/v1p1/teachers
    • /ims/oneroster/v1p1/teachers/{id}
    • /ims/oneroster/v1p1/classes/{class_id}/teachers
    • /ims/oneroster/v1p1/schools/{school_id}/classes/{class_id}/teachers
    • /ims/oneroster/v1p1/schools/{school_id}/teachers
  • Terms
    • /ims/oneroster/v1p1/terms
    • /ims/oneroster/v1p1/terms/{id}
    • /ims/oneroster/v1p1/schools/{school_id}/terms
  • Users
    • /ims/oneroster/v1p1/users
    • /ims/oneroster/v1p1/users/{id}