Events
Events are the payload sent to your subscribers. They represent actions taken on the Edlink platform, such as user logins, integration updates, or materialization failures. Each event has a specific type and a payload that contains relevant information about the event.
Event Structure
Each event is structured as a JSON object with the following fields:
type
: The type of the event (e.g.person.login
,materialization.scheduled
).date
: The timestamp of when the event occurred.payload
: An object containing additional information specific to the event type.
{
"type": "person.login",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "string",
"materialization_id": "string"
}
}
Event Types
Click on an event type below to see its details:
Type | When |
---|---|
person.login | Emitted when a standard login is performed by a Person into your Application, (e.g. via Edlink's sso page). |
person.login.lti | Emitted when a LTI login is performed by a Person into your Application. |
person.login.scoped | Emitted when a scoped login is performed by a Person into your Application (typically this is the Edlink Widget authenticating). |
person.login.error | Emitted when a login is attempted but fails. |
person.login.initiated | Emitted when a Person initiates a login into your Application. |
application.secret.created | Emitted when a new secret is created on your Application. |
application.secret.deleted | Emitted when a secret is deleted from your Application. |
integration.created | Emitted when a new integration is created between a Source and your Application. This usually occurs during onboarding. |
integration.updated | Emitted when an integration's properties is updated. |
integration.marked_for_deletion | Emitted when an integration's state is changed to destroyed . It will be deleted within 3 days. |
integration.destroyed | Emitted when an integration is actually destroyed. This action is irreversible. |
materialization.scheduled | Emitted when a new materialization is scheduled. Typically as the result of a change to sharing rules, transformations, etc. |
materialization.started | Emitted when a materialization is claimed and starts running. |
materialization.completed | Emitted when a materialization finished successfully. |
materialization.error | Emitted when a materialization fails. |
materialization.data_changed | Emitted when a materialization finished and resulted in data being changed. |
Events
Events can vary based on the actions taken on the platform. Here are the current event types you can expect to receive:
Fields that are not required could be omitted from the payload or be null
/ undefined
.
Person Login
Emitted when a standard login is performed by a Person into your Application, (e.g. via Edlink's sso page).
Field | Required | Description |
---|---|---|
application_id | ✅ | The UUID of the application the login is for. |
integration_id | ❔ | The UUID of the integration the login is for (if known). |
person_id | ❔ | The UUID of the person that is logging in (if known). |
Example
{
"type": "person.login",
"date": "2024-08-11T12:34:56Z",
"payload": {
"application_id": "00000000-0000-0000-0000-000000000000",
"integration_id": "00000000-0000-0000-0000-000000000000",
"person_id": "00000000-0000-0000-0000-000000000000"
}
}
Person Login LTI
Emitted when a LTI login is performed by a Person into your Application.
Field | Required | Description |
---|---|---|
application_id | ✅ | The UUID of the application the login is for. |
integration_id | ❔ | The UUID of the integration the login is for (if known). |
person_id | ❔ | The UUID of the person that is logging in (if known). |
Example
{
"type": "person.login.lti",
"date": "2024-08-11T12:34:56Z",
"payload": {
"application_id": "00000000-0000-0000-0000-000000000000",
"integration_id": "00000000-0000-0000-0000-000000000000",
"person_id": "00000000-0000-0000-0000-000000000000"
}
}
Person Login Scoped
Emitted when a scoped login is performed by a Person into your Application (typically this is the Edlink Widget authenticating).
Field | Required | Description |
---|---|---|
application_id | ✅ | The UUID of the application the login is for. |
integration_id | ❔ | The UUID of the integration the login is for (if known). |
person_id | ❔ | The UUID of the person that is logging in (if known). |
Example
{
"type": "person.login.scoped",
"date": "2024-08-11T12:34:56Z",
"payload": {
"application_id": "00000000-0000-0000-0000-000000000000",
"integration_id": "00000000-0000-0000-0000-000000000000",
"person_id": "00000000-0000-0000-0000-000000000000"
}
}
Person Login Error
Emitted when a login is attempted but fails.
Field | Required | Description |
---|---|---|
application_id | ✅ | The UUID of the application the login is for. |
integration_id | ❔ | The UUID of the integration the login is for (if known). |
person_id | ❔ | The UUID of the person that is logging in (if known). |
Example
{
"type": "person.login.error",
"date": "2024-08-11T12:34:56Z",
"payload": {
"application_id": "00000000-0000-0000-0000-000000000000",
"integration_id": null,
"person_id": null
}
}
Person Login Initiated
Emitted when a Person initiates a login into your Application.
Field | Required | Description |
---|---|---|
application_id | ✅ | The UUID of the application the login is for. |
integration_id | ❔ | The UUID of the integration the login is for (if known). |
person_id | ❔ | The UUID of the person that is logging in (if known). |
Example
{
"type": "person.login.initiated",
"date": "2024-08-11T12:34:56Z",
"payload": {
"application_id": "00000000-0000-0000-0000-000000000000",
"integration_id": null,
"person_id": null
}
}
Application Secret Created
Emitted when a secret is created for your Application.
Field | Required | Description |
---|---|---|
application_id | ✅ | The UUID of the application the secret is for. |
credential_id | ✅ | The UUID of the credential that was created. |
Example
{
"type": "application.secret.created",
"date": "2024-08-11T12:34:56Z",
"payload": {
"application_id": "00000000-0000-0000-0000-000000000000",
"credential_id": "00000000-0000-0000-0000-000000000000"
}
}
Application Secret Deleted
Emitted when a secret is deleted from your Application.
Field | Required | Description |
---|---|---|
application_id | ✅ | The UUID of the application the secret is for. |
credential_id | ✅ | The UUID of the credential that was deleted. |
Example
{
"type": "application.secret.deleted",
"date": "2024-08-11T12:34:56Z",
"payload": {
"application_id": "00000000-0000-0000-0000-000000000000",
"credential_id": "00000000-0000-0000-0000-000000000000"
}
}
Integration Created
Emitted when a new integration is created between a Source and your Application. This usually occurs during onboarding.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
application_id | ✅ | The UUID of the application the integration is for. |
source_id | ✅ | The UUID of the source the integration is for. |
destination_id | ❔ | The UUID of the destination the integration is for. |
permissions | ✅ | The permissions granted to the integration. |
properties | ✅ | The properties of the integration. |
status | ✅ | The status of the integration. |
region_id | ✅ | The UUID of the region the integration is in. |
Example
{
"type": "integration.created",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000",
"materialization_id": "00000000-0000-0000-0000-000000000000",
"application_id": "00000000-0000-0000-0000-000000000000",
"source_id": "00000000-0000-0000-0000-000000000000",
"destination_id": null,
"permissions": [],
"properties": { "custom_property": "value" },
"status": "requested",
"region_id": "00000000-0000-0000-0000-000000000000"
}
}
Integration Updated
Emitted when an integration's settings or properties are updated.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
application_id | ✅ | The UUID of the application the integration is for. |
source_id | ✅ | The UUID of the source the integration is for. |
destination_id | ❔ | The UUID of the destination the integration is for. |
permissions | ✅ | The permissions granted to the integration. |
properties | ✅ | The properties of the integration. |
status | ✅ | The status of the integration. |
region_id | ✅ | The UUID of the region the integration is in. |
Example
{
"type": "integration.updated",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000",
"materialization_id": "00000000-0000-0000-0000-000000000000",
"application_id": "00000000-0000-0000-0000-000000000000",
"source_id": "00000000-0000-0000-0000-000000000000",
"destination_id": null,
"permissions": [],
"properties": { "custom_property": "value" },
"status": "active",
"region_id": "00000000-0000-0000-0000-000000000000"
}
}
Integration Marked for Deletion
Emitted when an integration's state is changed to destroyed
. It will be deleted within 3 days.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
application_id | ✅ | The UUID of the application the integration is for. |
source_id | ✅ | The UUID of the source the integration is for. |
destination_id | ❔ | The UUID of the destination the integration is for. |
permissions | ✅ | The permissions granted to the integration. |
properties | ✅ | The properties of the integration. |
status | ✅ | The status of the integration. |
region_id | ✅ | The UUID of the region the integration is in. |
Example
{
"type": "integration.marked_for_deletion",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000",
"materialization_id": "00000000-0000-0000-0000-000000000000",
"application_id": "00000000-0000-0000-0000-000000000000",
"source_id": "00000000-0000-0000-0000-000000000000",
"destination_id": null,
"permissions": [],
"properties": { "custom_property": "value" },
"status": "destroyed",
"region_id": "00000000-0000-0000-0000-000000000000"
}
}
Integration Destroyed
Emitted when an integration is actually destroyed. This action is irreversible.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
Example
{
"type": "integration.destroyed",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000"
}
}
Materialization Scheduled
Emitted when a new materialization is scheduled. Typically as the result of a change to sharing rules, transformations, etc.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
materialization_id | ✅ | The UUID of the materialization that was scheduled. |
Example
{
"type": "materialization.scheduled",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000",
"materialization_id": "00000000-0000-0000-0000-000000000000"
}
}
Materialization Started
Emitted when a materialization is claimed and starts running.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
materialization_id | ✅ | The UUID of the materialization that has started. |
Example
{
"type": "materialization.started",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000",
"materialization_id": "00000000-0000-0000-0000-000000000000"
}
}
Materialization Completed
Emitted when a materialization finished successfully.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
materialization_id | ✅ | The UUID of the materialization that ran. |
Example
{
"type": "materialization.completed",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000",
"materialization_id": "00000000-0000-0000-0000-000000000000"
}
}
Materialization Error
Emitted when a materialization fails.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
materialization_id | ✅ | The UUID of the materialization that failed. |
Example
{
"type": "materialization.error",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000",
"materialization_id": "00000000-0000-0000-0000-000000000000"
}
}
Materialization Data Changed
Emitted when a materialization finished and resulted in data being changed.
Field | Required | Description |
---|---|---|
integration_id | ✅ | The UUID of the integration the materialization is for. |
materialization_id | ✅ | The UUID of the materialization that completed and changed data. |
changes | ✅ | A summary of the changes made during the materialization process. |
The changes
field in the materialization.data_changed
event payload contains a summary of the changes made during the materialization process. It is an object where each key is the entity type that was affected, and the value is another object detailing the number of records inserted, updated, and deleted.
Example
{
"type": "materialization.data_changed",
"date": "2024-08-11T12:34:56Z",
"payload": {
"integration_id": "00000000-0000-0000-0000-000000000000",
"materialization_id": "00000000-0000-0000-0000-000000000000",
"changes": {
"districts": { "inserted": 0, "updated": 0, "deleted": 0 },
"schools": { "inserted": 1, "updated": 2, "deleted": 0 },
"sessions": { "inserted": 0, "updated": 0, "deleted": 0 },
"periods": { "inserted": 0, "updated": 0, "deleted": 0 },
"stops": { "inserted": 0, "updated": 0, "deleted": 0 },
"calendars": { "inserted": 0, "updated": 0, "deleted": 0 },
"days": { "inserted": 0, "updated": 0, "deleted": 0 },
"departments": { "inserted": 0, "updated": 0, "deleted": 0 },
"subjects": { "inserted": 0, "updated": 0, "deleted": 0 },
"facilities": { "inserted": 0, "updated": 0, "deleted": 0 },
"rooms": { "inserted": 0, "updated": 0, "deleted": 0 },
"courses": { "inserted": 0, "updated": 0, "deleted": 0 },
"classes": { "inserted": 4, "updated": 6, "deleted": 2 },
"sections": { "inserted": 0, "updated": 0, "deleted": 0 },
"people": { "inserted": 10, "updated": 5, "deleted": 2 },
"incidents": { "inserted": 0, "updated": 0, "deleted": 0 },
"enrollments": { "inserted": 15, "updated": 3, "deleted": 1 },
"agents": { "inserted": 0, "updated": 0, "deleted": 0 },
"meetings": { "inserted": 0, "updated": 0, "deleted": 0 },
"attendance": { "inserted": 0, "updated": 0, "deleted": 0 },
"assets": { "inserted": 0, "updated": 0, "deleted": 0 },
"vehicles": { "inserted": 0, "updated": 0, "deleted": 0 },
"routes": { "inserted": 0, "updated": 0, "deleted": 0 },
"fees": { "inserted": 0, "updated": 0, "deleted": 0 }
}
}
}