Custom Onboarding Flows
Onboardings are used to connect districts or universities to your application. This data type allows you to invite specific districts by ID or to create instances of your onboarding link for initiating the onboarding flow from your application, such as from an admin dashboard. Onboardings also enable programmatically correlating which integration belongs to which school once the school completes the connection process.
Please note, we do not currently notify you of the completion of an onboarding. You will need to poll the API to check the status of the onboarding. We may support push notifications via our upcoming Data Feeds feature (Q3 2024).
Property | Status | Description |
---|---|---|
state | Read-only | The current state of the onboarding process. Can be one of the following: created , started , or completed . |
redirect_uri | Optional | The URI to which the admin will be redirected after completing the onboarding process. |
expiration_date | Optional | The date upon which the onboarding will expire. |
automatic_approval | Optional | If set to true , Edlink will automatically set the integration to active once the onboarding is completed (i.e. skipping the requested state). |
application_id | Required | The application that the district is connecting to. This is a required field. |
provider_id | Optional | Specifies a particular LMS or SIS system that the school should connect to. If specified, the district must connect this provider. |
user_id | Read-only | The user on the developer team that created this onboarding if it was created via the UI. |
team_id | Optional | The district team that the onboarding was created for, typically set only if it was created via the UI. Your team must be verified to use this property. |
integration_id | Read-only | The resulting integration ID if the onboarding was successful. |
Please note, using the automatic_approval
property will skip the requested
state and set the integration to active
once the onboarding is completed. This may have an impact on your usage of Edlink, and therefore, your bill. The requested
state is intended to allow you to review the integration and set sharing rules before activating it.
In our example workflow, we will assume that the district IT admin starts on a settings page within your application.
- The IT administrator clicks a button to start the onboarding process (e.g. a button like
Connect your SIS
). - Your application sends a
POST
request to the Edlink API to create a new onboarding. - The Edlink API responds with the details of the new onboarding, including a unique
onboarding_id
. - Your application opens a new tab for the IT admin that points to the onboarding ID (i.e.
https://ed.link/onboard/{onboarding_id}
). - Your application begins polling the Edlink API to check the status of the onboarding.
- The IT admin completes the onboarding process.
- The Edlink API updates the onboarding state to
completed
and sets the newly created integration ID. - Your application (via polling) receives the updated onboarding state and can now associate the Edlink integration ID with the district.
- You may then choose to load additional data about the district from the Edlink API using the integration ID or access token.
List All Onboardings For Your Team
GET https://ed.link/api/v1/teams/:team\_id/onboardings
Retrieve a list of all onboardings for a specific team. You can filter onboardings by the following properties: application_id
, integration_id
, state
, provider_id
, and user_id
.
Sample Request
axios.get('https://ed.link/api/v1/teams/{team_id}/onboardings', {
headers: {
authorization: `Bearer ${user_access_token}`
}
});
Sample Response
{
"$data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"state": "completed",
"redirect_uri": "https://example.com/redirect",
"expiration_date": "2024-12-31T23:59:59.999Z",
"application_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"team_id": "00000000-0000-0000-0000-000000000000",
"integration_id": "00000000-0000-0000-0000-000000000000"
},
{ ... }
]
}
Retrieve a Specific Onboarding
GET https://ed.link/api/v1/teams/:team\_id/onboardings/:onboarding\_id
Retrieve the details of a specific onboarding.
Sample Request
axios.get('https://ed.link/api/v1/teams/{team_id}/onboardings/{onboarding_id}', {
headers: {
authorization: `Bearer ${user_access_token}`
}
});
Sample Response
{
"id": "00000000-0000-0000-0000-000000000000",
"state": "completed",
"redirect_uri": "https://example.com/redirect",
"expiration_date": "2024-12-31T23:59:59.999Z",
"application_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"team_id": "00000000-0000-0000-0000-000000000000",
"integration_id": "00000000-0000-0000-0000-000000000000"
}
Create a New Onboarding
POST https://ed.link/api/v1/teams/:team\_id/onboardings
Create a new onboarding for a specific team.
Sample Request
axios.post(
'https://ed.link/api/v1/teams/{team_id}/onboardings',
{
application_id: '00000000-0000-0000-0000-000000000000',
provider_id: '00000000-0000-0000-0000-000000000000',
team_id: '00000000-0000-0000-0000-000000000000',
expiration_date: '2024-12-31T23:59:59.999Z',
redirect_uri: 'https://example.com/redirect'
},
{
headers: {
authorization: `Bearer ${user_access_token}`
}
}
);
Sample Response
{
"id": "00000000-0000-0000-0000-000000000000",
"state": "created",
"redirect_uri": "https://example.com/redirect",
"expiration_date": "2024-12-31T23:59:59.999Z",
"application_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "00000000-0000-0000-0000-000000000000",
"user_id": "00000000-0000-0000-0000-000000000000",
"team_id": "00000000-0000-0000-0000-000000000000",
"integration_id": "00000000-0000-0000-0000-000000000000"
}
Delete an Onboarding
DELETE https://ed.link/api/v1/teams/:team\_id/onboardings/:onboarding\_id
Delete a specific onboarding. Note that you cannot delete a completed onboarding.
Sample Request
axios.delete('https://ed.link/api/v1/teams/{team_id}/onboardings/{onboarding_id}', {
headers: {
authorization: `Bearer ${user_access_token}`
}
});