For Developers

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.

PropertyTypeDescription
idUUIDA stable UUID representing this integration.
created_dateDateThe date upon which this integration was initially created.
updated_dateDateThe latest time upon which this integration was updated.
permissionsArrayAn array of UUIDs representing the permissions that this integration has access to.
statusStringThe status of this integration. Either inactive, active, requested or disabled.
district_sharingIntegration ScopeRepresents the data sharing strategy set by the District.
developer_sharingIntegration ScopeRepresents the data sharing strategy set by the Developer
district_licensing_enabledBooleanIf true the District can set it's own licensing rules for the Products the Developer has shared with this integration
access_tokenStringThe access token that you can use to access Graph API data for this integration.
lti_consumer_keyStringThe LTI consumer key for this integration, if applicable.
lti_consumer_keyStringThe LTI shared secret for this integration, if applicable.
sourceSourceMetadata about the source to which this integration connects.
teamTeamMetadata about the school to whom this source belongs.
providerProviderMetadata about the source data system (e.g., Canvas).
entityEntityThe 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 or disabled.