Webhooks

English only

Event Notifications

Pluvo supports webhooks that send you notifications for important events, such as changes in users, trainings, groups, progress, or portfolio items. These are sent as POST requests to an endpoint you have configured.

Security (Signature verification)

Each webhook contains two headers:

  • X-Signature
  • X-Signature-Salt

You can use these to verify if the request is valid. The verification works as follows:

  1. Combine the X-Signature-Salt header with your Pluvo Webhook Key.
  2. Generate a SHA1-HMAC hash of the request body using the result of step 1 as the key.
  3. Compare the generated hash with the X-Signature header.

Webhook Events

Pluvo sends webhooks for the following events. The payloads are JSON objects, sent via a POST.

Training

Events:

  • TRAINING_CREATED
  • TRAINING_UPDATED
  • TRAINING_DELETED

Example payload

{
  "id": "uuid",
  "ref": "training-ref",
  "event": "TRAINING_CREATED",
  "title": "Training X",
  "subtitle": "Subtitel Training X",
  "introduction": "Introductie text",
  "startDate": "2020-02-01",
  "endDate": "2021-02-01",
  "isActive": true,
  "showParticipants": true,
  "showSharedFiles": true,
  "enableChat": true,
  "sentDate": "2020-01-01T10:15:00.000Z",
  "extraFields": {
    "subject": "Development"
  }
}

User

Events:

  • USER_CREATED
  • USER_UPDATED
  • USER_DELETED

Example payload

{
  "id": "uuid",
  "ref": "user-ref",
  "event": "USER_CREATED",
  "name": "User X",
  "email": "test@example.com",
  "isActive": true,
  "afas_person_id": null,
  "afas_employee_id": null,
  "extraFields": {
    "Afdeling": "Marketing"
  },
  "sentDate": "2020-01-01T10:15:00.000Z"
}

Group

Events:

  • GROUP_CREATED
  • GROUP_UPDATED
  • GROUP_DELETED

Example payload

{
  "id": "uuid",
  "ref": "group-ref",
  "event": "GROUP_CREATED",
  "name": "Group X",
  "enableChat": true,
  "sentDate": "2020-01-01T10:15:00.000Z"
}

Module Group Events

Events:

  • EVENT_CONDITIONS_FULFILLED
  • EVENT_FILE_UPLOADED
  • EVENT_CERTIFICATE_ACHIEVED

Usage: These events come from learning paths when a module group is unlocked, a file is uploaded, or a certificate is achieved.

Example payload

{
  "id": "uuid",
  "ref": "module-group-ref",
  "event": "EVENT_CONDITIONS_FULFILLED",
  "training": { ... },
  "user": { ... },
  "conditions": [ ... ],
  "file": "https://files.pluvo.co/..."
}

Portfolio Item

Events:

  • PORTFOLIO_ITEM_CREATED
  • PORTFOLIO_ITEM_UPDATED
  • PORTFOLIO_ITEM_DELETED

Example payload

{
  "id": "uuid",
  "user": { ... },
  "title": "Portfolio item title",
  "description": "Portfolio item description",
  "start_date": "2023-08-05T00:00:00+02:00",
  "end_date": "2023-08-17T00:00:00+02:00",
  "files": [ "https://files.pluvo.co/..." ],
  "sentDate": "2023-08-07T10:52:28.819Z",
  "event": "PORTFOLIO_ITEM_CREATED"
}

Course Finished

Event:

  • COURSE_FINISHED

Example payload

{
  "id": "uuid",
  "score": 0,
  "time_spent": {
    "days": 0,
    "microseconds": 0,
    "seconds": 0
  },
  "user": { ... },
  "course": { ... },
  "lti": { ... },
  "type": "COURSE",
  "sentDate": "2023-08-07T12:06:02.178Z",
  "event": "COURSE_FINISHED"
}

Training Finished

Event:

  • TRAINING_FINISHED

Example payload

{
  "id": "uuid",
  "score": null,
  "start_date": "2023-08-07T14:38:08+02:00",
  "user": { ... },
  "training": { ... },
  "sentDate": "2023-08-07T12:43:00.976Z",
  "event": "TRAINING_FINISHED"
}

Assignment Grade Update

Event:

  • ASSIGNMENT_GRADE_UPDATE

Example payload

{
  "id": "uuid",
  "score": 0.1,
  "fulfilled": null,
  "state": "open",
  "user": { ... },
  "assignment": {
    "id": "uuid",
    "event": { ... },
    "assignment_type": "participant",
    "score_type": "numeral",
    "weight": 0
  },
  "sentDate": "2023-08-07T12:49:07.442Z",
  "event": "ASSIGNMENT_GRADE_UPDATE"
}
Sluit melding