Webhook events

This page describes the different events you can get from our web hooks as a partner

Setting up webhooks

In your dashboard go to Data Links. There you can fill in your web-hook url and secret key.

Choose a long difficult secret and do not share you secret key with anyone

Once you have done this you can press the test button to check your implementation.

Here is a sample for express that can be used in a lambda serverless (node) to save these events to your own database:

index.js
const express = require("express")
const bodyParser = require("body-parser")
// Initialize express and define a port
const app = express()
const PORT = 3000
const KEY = 'mysecretkey'
// Tell express to use body-parser's JSON parsing
app.use(bodyParser.json())
app.post("/hook", (req, res) => {
if (req.headers['x-api-key'] !== KEY) return res.status(401).end()
console.log(req.body) // Call your action on the request here, save to db etc...
res.status(200).end() // Responding 200 is important
})
// Start express on the defined port
app.listen(PORT, () => console.log(`🚀 Server running on port ${PORT}`))

Supported events

  • Samplers: appointmentCreated, appointmentUpdated, appointmentCancelled, appointmentCompleted, sampleUpdated

  • Labs: sampleReceived, sampleUpdated

  • Clients: codeUsed

  • Providers: appAuthorized, patientUpdated, sampleUpdated, appDeauthorized

  • All: dataDeletionRequest

Coming soon

  • Samplers, labs, clients: covidPositiveAlert

  • Checkers: resultVerified

More events can be added on request.

Examples

appointmentCreated, appointmentUpdated, appointmentCancelled

{
"eventName": "appointmentCreated",
"data": {
"dashboardUrl": "https://dashboard.daslab.app/samplers/123/appointments/123",
"userUrl": "https://web.daslab.app/appointments/123",
"appointmentId": 123,
"locationId": 123,
"datetime": "2020-11-16 10:00:00+00",
"paymentMethod": "stripe"
}
}

dataDeletionRequest

For GDPR requests, please comply

{
"eventName": "dataDeletionRequest",
"data": {
"userId": 123,
"userEmail": "[email protected]",
"userPhoneNumber": "+39000000000"
}
}

dataShareAccepted

For external applications

{
"eventName": "dataShareAccepted",
"data": {
"userId": 123,
"patientId": 123,
"integrationId": 123,
"userEmail": "[email protected]",
"userPhoneNumber": "+39000000000",
"scope": ["patientData","resultData"],
}
}

sampleUpdated

When a result is added, or a sample is moved to your (lab) facility

{
"eventName": "sampleUpdated",
"data": {
"dashboardUrl": "https://dashboard.daslab.app/samplers/123/results/123",
"userUrl": "https://web.daslab.app/results/123",
"appointmentId": 123,
"locationId": 123,
"sampleId": 123,
"resultId": 123,
"patientId": 123
}
}

Personal data about the patient or result will never be shared via the webhook, due to it being less secure. You would have to call our REST API for further details about the appointment.