> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flexxible.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

**Webhooks** és una funcionalitat que permet integrar la plataforma amb eines de tercers per a l'enviament de notificacions quan es produeixen determinats esdeveniments a l'organització.

Esdeveniments disponibles:

* Alerta activada
* Microservei executat
* Objecte creat
* Objecte modificat
* Objecte eliminat
* Operació executada
* Operació executada en un workspace

Quan es produeix un d'aquests esdeveniments, la plataforma realitza una crida HTTP a la URL configurada per l'organització i envia un missatge amb la informació corresponent. L'aplicació de destinació pot utilitzar aquestes dades per executar accions com crear un tiquet en un sistema ITSM, enviar un missatge per Slack o Microsoft Teams, enviar un correu electrònic, entre d'altres.

Aquesta eina només pot ser configurada per un usuari amb rol d'Administrador d'organització.

## Vista general

La pantalla principal mostra el llistat de webhooks configurats a l'organització, indicant si estan habilitats o deshabilitats. La taula inclou:

* **Nom.** Nom assignat al webhook. En fer clic s'accedeix a la seva vista de detall.
* **Tipus d'esdeveniment.** Esdeveniment que activarà el webhook.
* **URL de destinació.** Adreça del sistema extern que rep l'esdeveniment i actua segons la informació proporcionada al missatge.
* **Estat.** Indica si el webhook està **Habilitat** o **Deshabilitat**.

<img src="https://mintcdn.com/flexxible/z4yd0C1UI8GM88n9/images/features/webhook-intg.png?fit=max&auto=format&n=z4yd0C1UI8GM88n9&q=85&s=6d700e057cf5c2753951f007bb41cbcb" alt="webhook-intg" width="1000" height="418" data-path="images/features/webhook-intg.png" />

## Crear una integració webhook

Per crear un nou webhook s'han de seguir els passos següents:

1. Accedir a **Configuració** → **Integracions Webhook**.
2. Fer clic a **Nou**.
3. Emplenar i configurar cada secció del formulari:

<img src="https://mintcdn.com/flexxible/z4yd0C1UI8GM88n9/images/features/webhook-create1.png?fit=max&auto=format&n=z4yd0C1UI8GM88n9&q=85&s=4430e339cb544f2665151ce9134da201" alt="webhook-create1" width="999" height="249" data-path="images/features/webhook-create1.png" />

**Visió general**

* **Nom.** Nom assignat al webhook.
* **Tipus d'esdeveniment.** Esdeveniment que activarà el webhook.
* **URL de destinació.** Adreça del sistema extern que rep l'esdeveniment i actua segons la informació proporcionada al missatge.

**Elements**

<img src="https://mintcdn.com/flexxible/z4yd0C1UI8GM88n9/images/features/webhook-create2.png?fit=max&auto=format&n=z4yd0C1UI8GM88n9&q=85&s=b74b60c4c5b4c8462cd51b067df641b5" alt="webhook-create2" width="1001" height="422" data-path="images/features/webhook-create2.png" />

El contingut d'aquesta taula depèn del tipus d'esdeveniment seleccionat.

* **Alerta activada**

  * Mostra el llistat d'alertes actives de l'organització per seleccionar quines enviaran el webhook.

  * **Enviar webhook per a totes les alertes** - Activa el webhook per a totes les alertes.

* **Microservei executat**

  * Mostra el llistat de microserveis habilitats per seleccionar quins enviaran el webhook.

  * **Enviar webhook per a tots els microserveis** - Activa el webhook per a tots els microserveis.

  * En ambdós casos, el botó **Veure** permet accedir a la vista de detall del recurs.

* **Objecte creat**, **Objecte modificat** o **Objecte eliminat**

  * Mostren un llistat per seleccionar l'objecte que enviarà el webhook després de l'acció corresponent.

  * **Enviar webhook per a tots els objectes** - Activa el webhook per a tots els objectes.

* **Operació executada**

  * Mostra un llistat per seleccionar l'operació que enviarà el webhook quan s'executi.

  * **Enviar webhook per a totes les operacions** - Activa el webhook per a totes les operacions.

* **Operació executada en un workspace**

  * Mostra un llistat per seleccionar l'operació que enviarà un webhook per cada dispositiu en què s'ha executat.

  * **Enviar webhooks per a totes les operacions executades a cada workspace** - Activa el webhook per a totes les operacions per dispositiu.

  <Note>
    - Les operacions es poden executar en un o més dispositius.
    - L'esdeveniment **Operació executada** permet enviar un webhook a nivell global.
    - L'esdeveniment **Operació executada en un workspace** permet enviar un webhook per cadascun dels dispositius en què s'ha executat l'operació.

      Exemple:

      Si s'executa l'operació **Reiniciar** en tres dispositius simultàniament, es generaran:

      * Una notificació webhook de tipus **Operació executada**.
      * Tres notificacions webhook de tipus **Operació executada en un workspace**.
  </Note>

**Configuració del missatge**

<img src="https://mintcdn.com/flexxible/z4yd0C1UI8GM88n9/images/features/webhook-create3.png?fit=max&auto=format&n=z4yd0C1UI8GM88n9&q=85&s=f7e85c8d6da44c5f03bf9866b7dcbed8" alt="webhook-create3" width="1000" height="418" data-path="images/features/webhook-create3.png" />

En aquest apartat es defineix el missatge que s'enviarà quan es produeixi l'esdeveniment. La configuració utilitza format JSON i determina l'estructura i el contingut del missatge transmès al sistema extern.

Les variables se substitueixen automàticament per valors reals quan es produeix l'esdeveniment.

4. Fer clic a **Desar**.

<Warning>
  Una organització no hauria de tenir dos webhooks amb la mateixa configuració perquè podria generar enviaments duplicats.
</Warning>

## Variables disponibles per al missatge

### Tots els tipus d'esdeveniments

| Variables           | Descripció                               |
| :------------------ | :--------------------------------------- |
| #event\_type        | Tipus d'esdeveniment                     |
| #organization\_id   | ID de l'organització                     |
| #organization\_name | Nom de l'organització/inquilí            |
| #timestamp          | Data i hora de l'esdeveniment (ISO 8601) |

### Alerta activada

| Variables                          | Descripció                                 |
| :--------------------------------- | :----------------------------------------- |
| #alert\_name                       | Nom de l'alerta                            |
| #alert\_information                | Informació addicional de l'alerta          |
| #alert\_start                      | Data i hora d'inici de l'alerta (ISO 8601) |
| #alert\_element                    | Element que va disparar l'alerta           |
| #workspace\_id                     | ID del workspace                           |
| #workspace\_name                   | Nom del workspace                          |
| #workspace\_last\_user             | Últim usuari que va utilitzar el workspace |
| #workspace\_reporting\_group\_id   | ID del grup d'informe                      |
| #workspace\_reporting\_group\_name | Nom del grup d'informe                     |
| #workspace\_internal\_id           | Workspace internal ID                      |

#### Exemple de plantilla

```
{
    "message": {
        "event_type": "#event_type",
        "organization_id": "#organization_id",
        "organization_name": "#organization_name",
        "workspace_id": "#workspace_id",
        "workspace_name": "#workspace_name",
        "workspace_last_user": "#workspace_last_user",
        "reporting_group_id": "#workspace_reporting_group_id",
        "reporting_group_name": "#workspace_reporting_group_name",
        "alert_name": "#alert_name",
        "alert_information": "#alert_information",
        "alert_start": "#alert_start",
        "alert_element": "#alert_element",
        "timestamp": "#timestamp"
    }
}
```

### Microservei executat

| Variables                          | Descripció                                                                     |
| :--------------------------------- | :----------------------------------------------------------------------------- |
| #operation\_id                     | ID de l'operació executada                                                     |
| #microservice\_id                  | ID del microservei                                                             |
| #microservice\_name                | Nom del microservei                                                            |
| #operation\_startdate              | Data i hora d'inici de l'operació  (ISO 8601)                                  |
| #operation\_enddate                | Data i hora de fi de l'operació  (ISO 8601)                                    |
| #operation\_result                 | Resultat de l'operació (**Completed**, **Error**, **Timeout** o **Cancelled**) |
| #workspace\_id                     | ID del workspace                                                               |
| #workspace\_name                   | Nom del workspace                                                              |
| #workspace\_last\_user             | Últim usuari que va utilitzar el workspace                                     |
| #workspace\_reporting\_group\_id   | ID del grup d'informe                                                          |
| #workspace\_reporting\_group\_name | Nom del grup d'informe                                                         |
| #operation\_startedby              | Usuari o component que va iniciar l'execució del microservei                   |
| #workspace\_internal\_id           | Workspace internal ID                                                          |

#### Exemple de plantilla

```
{
    "message": {
      "event_type" : "#event_type",
      "organization_id" : "#organization_id",
      "organization_name" : "#organization_name",
      "timestamp" : "#timestamp",
      "workspace_id" : "#workspace_id",
      "workspace_name" : "#workspace_name",
      "workspace_last_user" : "#workspace_last_user",
      "reporting_group_id" : "#workspace_reporting_group_id",
      "reporting_group_name" : "#workspace_reporting_group_name",
      "operation_id": "#operation_id",
      "microservice_id": "#microservice_id",
      "microservice_name": "#microservice_name",
      "operation_startdate": "#operation_startdate",
      "operation_enddate": "#operation_enddate",
      "operation_result": "#operation_result"
    }
}
```

### Objecte creat, modificat o eliminat

| Variables             | Descripció                                                             |
| :-------------------- | :--------------------------------------------------------------------- |
| #event\_type          | Tipus d'esdeveniment                                                   |
| #organization\_id     | ID de l'organització                                                   |
| #organization\_name   | Nom de l'organització/inquilí                                          |
| #timestamp            | Data i hora de l'esdeveniment (ISO 8601)                               |
| #entity\_type         | Tipus d'entitat                                                        |
| #entity\_name         | Nom de l'entitat                                                       |
| #entity\_id           | ID de l'entitat                                                        |
| #action               | Acció realitzada (Creació, Modificació o Eliminació)                   |
| #triggered\_by\_name  | Nom de l'usuari que va disparar l'esdeveniment                         |
| #triggered\_by\_email | Adreça de correu electrònic de l'usuari que va disparar l'esdeveniment |
| #triggered\_by\_id    | ID de l'usuari que va disparar l'esdeveniment                          |

#### Exemple de plantilla

```
{
  "message": {
    "event-type": "#event_type",
    "organization": {
      "id": "#organization_id",
      "name": "#organization_name"
    },
    "entity": {
      "entity-type": "#entity_type",
      "object-name": "#entity_name",
      "object-id": "#entity_id"
    },
    "metadata": {
      "action": "#action",
      "timestamp": "#timestamp",
      "user-name": "#triggered_by_name",
      "useremail": "#triggered_by_email",
      "user-id": "#triggered_by_id"
    }
  }
}
```

### Operació executada

| Variables           | Descripció                                                          |
| :------------------ | :------------------------------------------------------------------ |
| #event\_type        | Tipus d'esdeveniment                                                |
| #timestamp          | Data i hora de l'esdeveniment (ISO 8601)                            |
| #organization\_id   | ID de l'organització                                                |
| #organization\_name | Nom de l'organització/inquilí                                       |
| #operation\_type    | Tipus d'operació                                                    |
| #description        | Descripció de l'operació                                            |
| #status             | Estat actual de l'execució de l'operació                            |
| #summary            | Resum de l'operació (JSON)                                          |
| #started\_by        | Usuari que va iniciar l'operació                                    |
| #created\_at        | Data i hora de creació de l'operació (ISO 8601)                     |
| #started\_at        | Data i hora d'inici de l'operació (ISO 8601)                        |
| #finished\_at       | Data i hora de finalització de l'operació (ISO 8601)                |
| #total\_workspaces  | Nombre total de workspaces processats                               |
| #total\_warnings    | Nombre total d'execucions amb advertències durant l'operació        |
| #total\_errors      | Nombre total d'execucions amb errors durant l'operació              |
| #flow\_id           | ID del flux associat                                                |
| #microservice\_id   | ID del microservei associat                                         |
| #fra\_type          | Tipus de Flexxible Remote Assistance (FRA)                          |
| #fra\_start         | Data i hora d'inici de Flexxible Remote Assistance (FRA) (ISO 8601) |
| #fra\_end           | Data i hora de fi de Flexxible Remote Assistance (FRA) (ISO 8601)   |

#### Exemple de plantilla

```
{
  "message": {
    "event_type": "#event_type",
    "timestamp": "#timestamp",
    "organization": {
      "id": "#organization_id",
      "name": "#organization_name"
    },
    "operation": {
      "type": "#operation_type",
      "description": "#description",
      "status": "#status",
      "summary": "#summary",
      "started_by": "#started_by",
      "created_at": "#created_at",
      "started_at": "#started_at",
      "finished_at": "#finished_at"
    },
    "results": {
      "total_workspaces": "#total_workspaces",
      "total_warnings": "#total_warnings",
      "total_errors": "#total_errors"
    },
    "context": {
      "flow_id": "#flow_id",
      "microservice_id": "#microservice_id",
      "fra_type": "#fra_type",
      "fra_start": "#fra_start",
      "fra_end": "#fra_end"
    }
  }
}
```

### Operació executada en un workspace

| Variables                          | Descripció                                                         |
| :--------------------------------- | :----------------------------------------------------------------- |
| #event\_type                       | Tipus d'esdeveniment                                               |
| #timestamp                         | Data i hora de l'esdeveniment (ISO 8601)                           |
| #organization\_id                  | ID de l'organització                                               |
| #organization\_name                | Nom de l'organització/inquilí                                      |
| #operation\_type                   | Tipus d'operació                                                   |
| #description                       | Descripció de l'operació                                           |
| #operation\_status                 | Estat de l'operació                                                |
| #started\_by                       | Usuari que va iniciar l'operació                                   |
| #created\_at                       | Data i hora de creació de l'operació (ISO 8601)                    |
| #started\_at                       | Data i hora d'inici de l'operació (ISO 8601)                       |
| #finished\_at                      | Data i hora de fi de l'operació (ISO 8601)                         |
| #operation\_flow\_id               | ID del flux associat a l'operació                                  |
| #operation\_microservice\_id       | ID del microservei associat a l'operació                           |
| #operation\_fra\_type              | Tipus de Flexxible Remote Assistance (FRA)                         |
| #operation\_fra\_start             | Data i hora d'inici de Flexxible Remote Assistance (FRA)(ISO 8601) |
| #operation\_fra\_end               | Data i hora de fi de Flexxible Remote Assistance (FRA) (ISO 8601)  |
| #workspace\_id                     | ID del workspace                                                   |
| #workspace\_name                   | Nom del workspace                                                  |
| #workspace\_last\_user             | Últim usuari que va utilitzar el workspace                         |
| #workspace\_reporting\_group\_id   | ID del grup d'informe                                              |
| #workspace\_reporting\_group\_name | Nom del grup d'informe                                             |
| #workspace\_operation\_result      | Resultat de l'operació al workspace                                |
| #workspace\_operation\_startdate   | Data i hora d'inici de l'operació al workspace (ISO 8601)          |
| #workspace\_operation\_enddate     | Data i hora de finalització de l'operació al workspace (ISO 8601)  |
| #workspace\_internal\_id           | Workspace internal ID                                              |

#### Exemple de plantilla

```
{
  "message": {
    "event_type": "#event_type",
    "timestamp": "#timestamp",
    "organization": {
      "id": "#organization_id",
      "name": "#organization_name"
    },
    "operation": {
      "type": "#operation_type",
      "description": "#description",
      "status": "#operation_status",
      "started_by": "#started_by",
      "created_at": "#created_at",
      "started_at": "#started_at",
      "finished_at": "#finished_at"
    },
    "context": {
      "flow_id": "#operation_flow_id",
      "microservice_id": "#operation_microservice_id",
      "fra_type": "#operation_fra_type",
      "fra_start": "#operation_fra_start",
      "fra_end": "#operation_fra_end"
    },
    "workspace": {
      "id": "#workspace_id",
      "name": "#workspace_name",
      "last_user": "#workspace_last_user",
      "reporting_group": {
        "id": "#workspace_reporting_group_id",
        "name": "#workspace_reporting_group_name"
      }
    },
    "execution": {
      "result": "#workspace_operation_result",
      "start_date": "#workspace_operation_startdate",
      "end_date": "#workspace_operation_enddate"
    }
  }
}

```

### Slack

A continuació, es mostra un exemple de plantilla compatible amb Slack Incoming Webhooks, que es pot utilitzar com a base per construir el missatge enviat des de la plataforma:

```
{
  "text": "*Flexxible microservice was executed*",
  "blocks": [
    {
      "type": "section",
      "fields": [
        {
          "type": "mrkdwn",
          "text": "*Microservei:*\n#microservice_name"
        },
        {
          "type": "mrkdwn",
          "text": "*Resultat:*\n#operation_result"
        }
      ]
    },
    {
      "type": "section",
      "fields": [
        {
          "type": "mrkdwn",
          "text": "*Organització:*\n#organization_name"
        },
        {
          "type": "mrkdwn",
          "text": "*Workspace:*\n#workspace_name"
        }
      ]
    },
    {
      "type": "section",
      "fields": [
        {
          "type": "mrkdwn",
          "text": "*Inici:*\n#operation_startdate"
        },
        {
          "type": "mrkdwn",
          "text": "*Fi:*\n#operation_enddate"
        }
      ]
    }
  ]
}
```

<Note>
  Per a més informació sobre el format de missatges, els blocs disponibles i les millors pràctiques, consulta la [guia oficial de Slack](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/).
</Note>

### Microsoft Teams

A Microsoft Teams, les plantilles es poden consultar directament des de la configuració de cada canal.

<Note>
  Per obtenir detalls sobre com configurar correctament un webhook entrant i quina estructura ha de tenir la plantilla JSON, consulta la [guia oficial de Microsoft.](https://support.microsoft.com/en-us/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498)
</Note>

## Vista de detall

En seleccionar un webhook des de la taula s'accedeix a la seva vista de detall:

* Visió general
* Mètriques

### Visió general

Presenta targetes amb informació bàsica: **Estat**, **Creat el** i **Actualitzat el**.

<img src="https://mintcdn.com/flexxible/z4yd0C1UI8GM88n9/images/features/webhook-detail.png?fit=max&auto=format&n=z4yd0C1UI8GM88n9&q=85&s=46e9d9f60596305a5fb6c5ae487e3773" alt="webhook-detail" width="1001" height="231" data-path="images/features/webhook-detail.png" />

#### 1. Visió general

* **Nom.** Nom assignat al webhook.
* **Tipus d'esdeveniment.** Esdeveniment que activarà el webhook.
* **Creat per.** Usuari que va crear l'esdeveniment.
* **Actualitzat per.** Últim usuari que va modificar el webhook.
* **URL de destinació.** Adreça del sistema extern que rep l'esdeveniment i actua segons la informació proporcionada al missatge.

#### 2. Recursos seleccionats

Mostra els recursos associats segons el tipus d'esdeveniment.

#### 3. Plantilla de missatge

Presenta l'estructura JSON configurada per al webhook.

### Mètriques

#### Intents de lliurament de missatges

Aquesta pestanya presenta dos nivells d'informació. A la part superior, es mostren targetes resum amb l'estat global dels missatges enviats mitjançant el webhook:

* Missatges exitosos
* Missatges pendents
* Missatges en progrés
* Missatges fallits
* Total de missatges
* Índex d'èxit

  <img src="https://mintcdn.com/flexxible/z4yd0C1UI8GM88n9/images/features/delivery-attempts.png?fit=max&auto=format&n=z4yd0C1UI8GM88n9&q=85&s=745a65652d657ed9ad44466e83a555cd" alt="delivery-attempts" width="1000" height="503" data-path="images/features/delivery-attempts.png" />

A la part inferior es mostra una taula amb l'històric d'intents d'enviament de missatges corresponents als últims 28 dies. Els registres es poden filtrar segons els criteris següents: **Tots els intents**, **Intents exitosos**, **Intents pendents**, **Intents fallits** i **Intents en progrés**.

La taula inclou la informació següent:

* **Estat.** Resultat de l'execució.
* **Durada.** En mil·lisegons, temps que va trigar a executar-se el webhook.
* **Codi de resposta.** Codi HTTP retornat en executar-se el webhook.
* **Executat el.** Data i hora en què es va realitzar l'execució.
* **Accions.** Obre una finestra amb el detall de l'execució.

Quan una crida a la URL de destinació no es completa correctament, el sistema reintenta l'enviament del missatge de forma automàtica, segons la programació següent:

* Immediatament
* Als 5 segons
* Als 5 minuts
* Als 30 minuts
* A les 2 hores
* A les 5 hores
* A les 10 hores
* A les 10 hores (addicionals)

<Note>
  Cada interval s'inicia a partir de l'error de l'intent anterior.
</Note>

<Info>
  Si l'enviament d'un missatge falla tres vegades i es completa amb èxit al quart intent, a la taula es mostraran quatre intents (tres fallits i un exitós). No obstant això, el sistema el comptabilitzarà com un únic missatge.
</Info>

## Accions sobre webhooks

La vista de detall també permet realitzar les accions següents sobre el webhook:

<img src="https://mintcdn.com/flexxible/z4yd0C1UI8GM88n9/images/features/webhook-actions.png?fit=max&auto=format&n=z4yd0C1UI8GM88n9&q=85&s=a0c492cb876d4c96d1c5e130c246bd90" alt="webhook-actions" width="552" height="71" data-path="images/features/webhook-actions.png" />

### Habilitar / Deshabilitar

Habilita o deshabilita el webhook segons el seu estat actual.

<Note>
  Els webhooks estan deshabilitats per defecte.
</Note>

### Editar

Permet modificar:

* Nom
* Tipus d'esdeveniment
* URL de destinació
* Recursos
* Plantilla de missatge

### Eliminar

Elimina el webhook de forma permanent. Aquesta acció no es pot desfer.

### Provar

Envia un missatge amb el contingut de la plantilla a la URL configurada sense reemplaçar les variables per valors reals. L'objectiu d'aquesta acció és validar la connectivitat i el format del missatge.
