Integrations Overview
Please note, this is a v1 model. There is not currently an equivalent v2 model. It is OK to rely on this model, we are not planning to deprecate it. The only reason there's not a v2 equavalent is that it would have been substantially similar to this one.
An Integration is a connection between a Source (e.g., Canvas) and your Application.
Integrations may be scoped to either the entire data source, or particular schools / courses within the data source. We encourage administrators and developers to reduce the scope of data sharing to only essential people and organizational units to reduce data transfer requirements and security risks.
Integration Access Tokens
Upon establishing an integration, a new access token is generated for the developer. This access token will be used to access Graph API data for the particular integration. The token is automatically scoped to the correct set of people, organizations, and permissions, so you do not have to worry about accessing data that is unauthorized.
Properties
Many of these properties are read-only and used internally by Edlink. The main purpose of this object is to provide you with an access token and metadata about the connection. This way you can programmatically approve and ingest new integrations into your system.
Property | Type | Description |
---|---|---|
id | UUID | A stable UUID representing this integration. |
created_date | Date | The date upon which this integration was initially created. |
updated_date | Date | The latest time upon which this integration was updated. |
permissions | Array | An array of UUIDs representing the permissions that this integration has access to. |
status | String | The status of this integration. Either inactive , active , requested or disabled . |
district_sharing | Integration Scope | Represents the data sharing strategy set by the District. |
developer_sharing | Integration Scope | Represents the data sharing strategy set by the Developer |
district_licensing_enabled | Boolean | If true the District can set it's own licensing rules for the Products the Developer has shared with this integration |
access_token | String | The access token that you can use to access Graph API data for this integration. |
lti_consumer_key | String | The LTI consumer key for this integration, if applicable. |
lti_consumer_key | String | The LTI shared secret for this integration, if applicable. |
source | Source | Metadata about the source to which this integration connects. |
team | Team | Metadata about the school to whom this source belongs. |
provider | Provider | Metadata about the source data system (e.g., Canvas). |
entity | Entity | The real-world school or District to whom this source belongs. |
JSON Example
{
"id": "fd8e2612-1329-4d85-bb56-95dcb27d7c92",
"status": "active",
"district_sharing": "all",
"developer_sharing": "all",
"district_licensing_enabled": true,
"created_date": "2022-10-21T20:23:16.080Z",
"updated_date": "2024-06-20T18:20:59.802Z",
"permissions": [
"796d4633-c262-49d4-8e5c-b801a6a1c053",
"0a2ff39e-ca16-458f-98c4-a58a6766c356",
"b6355c7b-56bb-48a4-a5be-0712cc0f35ea",
"8aa73a24-c279-4a45-9123-9cda31cc316b",
"9e1ed7ac-a871-44c4-a355-0517b4217ecb",
"fe75b1b2-2c56-4c4b-a7a1-80048da6b24f",
"1240bc10-4d5b-48c5-b967-6e7e778dcc48",
"0e9ad589-6678-482a-b740-b2ce697ff8fb",
"7d6ea160-04ad-4c9c-92d2-ce961a982d68",
"23a6316a-f42b-4d7e-8eac-432ef4f12d3a",
"5130c012-b5d0-4baa-816b-a6c100bac6ad",
"6429ca21-f255-44fc-873a-4aa81d45f4f5",
"c3600e5f-7da5-4820-9ca9-aa4a1e9793b3",
"58176ba0-34f6-459c-a7b0-757dbdf3b3af",
"ffef1450-8a86-4e6b-a13c-a0f2c2be5a8a"
],
"access_token": "QgH...yyA",
"lti_consumer_key": "wcD...de1",
"lti_shared_secret": "Eg9...8LP",
"source": {
"id": "12feb383-7455-4a3e-8da9-0851d77779cc",
"status": "active",
"name": "Canvas Sample Source",
"created_date": "2022-09-19T20:17:23.774Z",
"updated_date": "2022-09-19T20:17:23.774Z",
"sync_interval": 86400
},
"provider": {
"id": "035d6dd6-1569-47b2-8ed8-63435be58078",
"name": "Canvas",
"icon_url": "/source/canvas.png",
"application": "canvas",
"allows_data_sync": true
},
"team": {
"id": "d1be0f47-7765-447a-95e3-1cfaedf57ce7",
"type": "district",
"name": "Sample Developer Sources",
"alias": "SampleDeveloperSources"
},
"entity": {
"id": "8c3ec9f4-01e5-4cde-8fb1-86172257fde5",
"created_date": "2022-11-16T00:08:36.128Z",
"updated_date": "2022-11-16T00:08:36.128Z",
"type": "district",
"name": "Edlink Samples",
"website": null,
"icon_url": null,
"banner_url": null,
"street_address": null,
"unit_number": null,
"city": null,
"state": null,
"zip": null,
"nces_ids": [],
"clever_ids": [],
"mdr_ids": [],
"ipeds_ids": [],
"parent": null,
"ancestry": ["8c3ec9f4-01e5-4cde-8fb1-86172257fde5"]
}
}
Additional Notes
- The
access_token
will not change if permissions or targets are changed. However, it will change if an integration is destroyed and then recreated. - The
source
cannot currently be changed after it is set. In order to connect to a different source, you must create a new integration. This includes a development source. - The
application
parameter can be safely ignored. It is used primarily for internal purposes. - Integrations will have a status of
inactive
if they are scheduled to start automatically at a later date. - Integrations will have a status of
requested
if they are pending approval from the application developer. - Requests to retrieve graph data will be denied if integrations are set to
inactive
ordisabled
.