# Webhook

## Liste des événements disponible:

<table><thead><tr><th>Evénement </th><th width="436">Description</th></tr></thead><tbody><tr><td>user.vote</td><td>Se produit chaque fois qu'un utilisateur va voter pour un de vos serveurs.</td></tr><tr><td>user.follow</td><td>Se produit chaque fois qu'un utilisateur va suivre pour un de vos serveurs.</td></tr><tr><td>user.unfollow</td><td>Se produit chaque fois qu'un utilisateur va arrêter de suivre pour un de vos serveurs.</td></tr><tr><td>train.start</td><td>Se produit chaque fois qu'un train de la hype commence.</td></tr><tr><td>train.finish</td><td>Se produit chaque fois qu'un train de la hype se termine.</td></tr><tr><td>train.levelup</td><td>Se produit chaque fois train de la hype va augmenter de niveau.</td></tr><tr><td>train.vote</td><td>Se produit chaque fois qu'un utilisateur voter pour un de vos serveurs pendant le train de la hype.</td></tr></tbody></table>

{% embed url="<https://github.com/Maxlego08/Serveur-Minecraft-Vote-Php>" %}
Package composer pour l'utilisation de l'API
{% endembed %}

Exemple d'utilisation du package composer: <https://github.com/Maxlego08/Azuriom-SMV/blob/master/src/Controllers/Admin/AdminController.php>

## API

<mark style="color:green;">`POST`</mark> `https://serveur-minecraft-vote.fr/api/v1/webhook/create`

#### Headers

| Name                                              | Type   | Description                                                                                                                                                                                                                                                                                                       |
| ------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| X-SMV-Signature<mark style="color:red;">\*</mark> | String | La signature est composé d'un timestamp suivi par un hach. Sous la forme: timestamp.hach Pour obtenir le hach vous devez utiliser la méthode HMAC en SHA256 en utilisant la clé secrète de l'utilisateur. Le contenu qui va être haché sera un timestamp.userID.Et le userID est l'ID en base64 de l'utilisateur. |

#### Request Body

| Name                                       | Type   | Description                                                                                                                                                                                                                                                                         |
| ------------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| events<mark style="color:red;">\*</mark>   | Array  | La liste des événements que le webhook doit écouter.                                                                                                                                                                                                                                |
| url<mark style="color:red;">\*</mark>      | String | L'URL de votre site que le webhook va devoir appeler                                                                                                                                                                                                                                |
| userData<mark style="color:red;">\*</mark> | String | <p>L'ID de l'utilisateur en base64. L'ID est trouvable en prenant la deuxième partie de la clé secrète.</p><p>La clé est composée d'un préfix avec <code>smv\_sk\_</code> puis ensuite d'une suite de caractères unique et se termine par . et l'id de l'utilisateur en base64.</p> |
| description                                | String | La description du webhook                                                                                                                                                                                                                                                           |

{% tabs %}
{% tab title="200: OK Success" %}

```javascript
{
  "status": "success",
  "message": "Webhook creation successfully completed",
  "webhook": {
    "id": "w_lLwuqJ99YLSdXcwo",
    "user_id": 1,
    "url": "https://votes.test/api/test",
    "secret_key": "wh_VK4XvzZND9OFGn786Ka2FG2B7ix4O",
    "description": null
  },
  "events": [
    {
      "id": 2,
      "event": "user.vote"
    }
  ]
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.serveur-minecraft-vote.fr/webhook.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
