Webhooks
NOÉ allows the use of webhooks. Here's how they work!
Webhooks are only sent when a real user performs an action from the NOÉ interface. If a modification is made via the APIs, webhooks will not be sent.
NOÉ's webhooks are not secure: if you do not verify the origin of the data you receive, anyone can pretend to be the NOÉ server and compromise your data by injecting unwanted modifications.
We recommend that you use IP address filtering: by only accepting requests coming from the NOÉ server's IP address, you significantly reduce your vulnerability to attacks.
You can find out the NOÉ server's IP address by going to this site and searching for api.noe-app.io.
Webhook Typology
When a webhook is sent to your service, the request has the following form:
Method
POST
Body
{
endpoint: WebhookEndpoint,
action: WebhookAction,
payload: Payload
}
The subtypes WebhookEndpoint, WebhookAction, and Payload are defined below.
Subtypes
Object Type: WebhookEndpoint (endpoint
)
The
endpoint
specifies which type of object has just been modified: a session, an activity, etc.
Below is the correspondence between object types in NOÉ and the keys found in the webhook.
Object Type | WebhookEndpoint (endpoint ) |
---|---|
Categories | categories |
Spaces | places |
Facilitators | stewards |
Activities | activities |
Sessions | sessions |
Action Type: WebhookAction (action
)
The
action
specifies whether the object has just been created, modified, or deleted.
Below is the correspondence between action types in NOÉ and the keys found in the webhook.
Action Type | WebhookAction (action ) |
---|---|
Creation | create |
Modification | update |
Deletion | delete |
Payload
The
payload
is the actual content of the webhook.
The Payload contains:
- the created or modified object when it's a creation or modification,
- the ID of the deleted object in the case of a deletion.
For now, the exact content of the payloads is not detailed. To anticipate the typings, you can refer directly to the code in NOÉ.
In this folder, each xxxxx.model.ts
file contains a type XxxxxxD
that describes its structure: this provides a good starting point even if it's not yet an exact science.