# Eventos (https://docs.pulsarml.com/pt/webhooks/events)

Todos os tipos de evento de webhook, quando são enviados e os campos que incluem.



O `eventType` de cada notificação indica o que aconteceu, e o seu objeto `event` contém os dados. O [envelope](/pt/webhooks#body) que o envolve é o mesmo para todos os eventos.

| Tipo de evento                                 | Enviado quando                             |
| ---------------------------------------------- | ------------------------------------------ |
| [`MachineStopCreated`](#stop-created)          | Começa uma paragem de máquina.             |
| [`MachineStopEnded`](#stop-ended)              | Termina uma paragem de máquina.            |
| [`MachineStopClassificationCreated`](#created) | Uma paragem de máquina é classificada.     |
| [`MachineStopClassificationUpdated`](#updated) | A classificação de uma paragem muda.       |
| [`MachineStopClassificationDeleted`](#deleted) | A classificação de uma paragem é removida. |
| [`Ping`](/pt/webhooks#ping-events)             | O Pulsar testa o seu endpoint.             |

## Paragens de máquina [#machine-stops]

Quando uma máquina para, o Pulsar regista a paragem. Os eventos de paragem informam-no no momento: `MachineStopCreated` quando começa e `MachineStopEnded` quando termina, quer alguém já a tenha classificado ou não. Para saber também a sua causa, subscreva os [eventos de classificação](#machine-stop-classifications) abaixo.

<Callout title="Ativados por empresa">
  Os eventos de paragem são ativados empresa a empresa. Peça ao seu contacto do Pulsar que os ative para a sua antes de registar um endpoint para eles.
</Callout>

Os dois eventos de paragem contêm o mesmo objeto `event`. Tem os mesmos campos que os eventos de classificação, mas os campos da causa são `null` enquanto a paragem não estiver classificada:

| Campo                 | Tipo            | Descrição                                                                                                                                                            |
| --------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `machine`             | string          | O nome da máquina no Pulsar.                                                                                                                                         |
| `machineExternalName` | string \| null  | O nome externo da máquina, por exemplo o seu ID no seu ERP. `null` se não tiver.                                                                                     |
| `start`               | string          | Quando a paragem começou, como carimbo de data/hora UTC ISO 8601.                                                                                                    |
| `end`                 | string \| null  | Quando a paragem terminou, como carimbo de data/hora UTC ISO 8601. `null` enquanto a paragem estiver aberta.                                                         |
| `operator`            | string \| null  | Nome completo do operador que estava na máquina quando a paragem começou. `null` se ninguém tinha sessão iniciada.                                                   |
| `generalCause`        | string \| null  | Nome da causa geral. `null` enquanto a paragem não estiver classificada.                                                                                             |
| `specificCause`       | string \| null  | Nome da causa específica.                                                                                                                                            |
| `component`           | string \| null  | Nome do componente envolvido.                                                                                                                                        |
| `description`         | string \| null  | Descrição da paragem em texto livre.                                                                                                                                 |
| `isAutomated`         | boolean \| null | `true` se a classificação foi aplicada automaticamente por uma regra, `false` se foi introduzida por uma pessoa. `null` enquanto a paragem não estiver classificada. |

Tal como nas classificações, uma paragem é identificada pela sua máquina e pelo seu `start`. Use esse par para associar um `MachineStopEnded` ao `MachineStopCreated` que já recebeu, e a um evento de classificação posterior da mesma paragem.

### Paragem criada [#stop-created]

`MachineStopCreated` é enviado quando o Pulsar regista uma nova paragem. Os campos da causa são `null` até alguém a classificar.

```json
{
  "eventId": "2a7c9e14-6b3d-4f81-a5c2-9d0e7f3b1a68",
  "eventTimestamp": "2026-09-25T13:41:52.306Z",
  "eventType": "MachineStopCreated",
  "event": {
    "machine": "Injetora 4",
    "machineExternalName": "INJ-004",
    "start": "2026-09-25T13:41:07.000Z",
    "end": null,
    "operator": "Ana Torres",
    "generalCause": null,
    "specificCause": null,
    "component": null,
    "description": null,
    "isAutomated": null
  }
}
```

### Paragem terminada [#stop-ended]

`MachineStopEnded` é enviado quando uma paragem recebe a sua hora de fim. Uma paragem que o Pulsar já regista fechada é enviada como `MachineStopCreated` e como `MachineStopEnded`.

```json
{
  "eventId": "e6b13f80-4c2a-4d97-8e5b-1f9a7c3d0b24",
  "eventTimestamp": "2026-09-25T13:59:04.751Z",
  "eventType": "MachineStopEnded",
  "event": {
    "machine": "Injetora 4",
    "machineExternalName": "INJ-004",
    "start": "2026-09-25T13:41:07.000Z",
    "end": "2026-09-25T13:58:30.000Z",
    "operator": "Ana Torres",
    "generalCause": null,
    "specificCause": null,
    "component": null,
    "description": null,
    "isAutomated": null
  }
}
```

Se a paragem foi classificada antes de o evento ser entregue, os campos da causa contêm essa classificação.

### O que esperar [#stop-event-details]

* **As mudanças de turno dividem as paragens.** Uma paragem ainda aberta quando um turno termina é fechada na mudança de turno, e começa uma nova paragem no turno seguinte. Recebe um `MachineStopEnded` da primeira e um `MachineStopCreated` da segunda.
* **O início de uma paragem pode mudar.** O Pulsar pode ajustar a hora de início de uma paragem depois de a registar. Como uma paragem é identificada pelo seu `start`, recebe então um `MachineStopCreated` com o novo início e nada mais sobre o anterior.
* **Apenas paragens detetadas.** As paragens que alguém adiciona ou divide manualmente no Pulsar ainda não enviam eventos de paragem.

## Classificações de paragens de máquina [#machine-stop-classifications]

Quando uma máquina para, o Pulsar regista a paragem. **Classificá-la** significa registar porque aconteceu: uma causa geral, opcionalmente uma causa mais específica e o componente envolvido, e uma descrição em texto livre. Uma classificação é introduzida por uma pessoa ou aplicada automaticamente por uma regra.

Os três eventos de classificação contêm o mesmo objeto `event`:

| Campo                 | Tipo           | Descrição                                                                                                          |
| --------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------ |
| `machine`             | string         | O nome da máquina no Pulsar.                                                                                       |
| `machineExternalName` | string \| null | O nome externo da máquina, por exemplo o seu ID no seu ERP. `null` se não tiver.                                   |
| `start`               | string         | Quando a paragem começou, como carimbo de data/hora UTC ISO 8601.                                                  |
| `end`                 | string \| null | Quando a paragem terminou, como carimbo de data/hora UTC ISO 8601. Pode ser `null`.                                |
| `operator`            | string \| null | Nome completo do operador que estava na máquina quando a paragem começou. `null` se ninguém tinha sessão iniciada. |
| `generalCause`        | string \| null | Nome da causa geral.                                                                                               |
| `specificCause`       | string \| null | Nome da causa específica.                                                                                          |
| `component`           | string \| null | Nome do componente envolvido.                                                                                      |
| `description`         | string \| null | Descrição da paragem em texto livre.                                                                               |
| `isAutomated`         | boolean        | `true` se a classificação foi aplicada automaticamente por uma regra, `false` se foi introduzida por uma pessoa.   |

Uma paragem é identificada pela sua máquina e pelo seu `start`. Use esse par para associar uma atualização ou eliminação a uma paragem que já conhece.

<Callout title="Nomes, não IDs">
  As máquinas, causas, componentes e operadores são enviados pelo nome. Se algum mudar de nome no Pulsar, os eventos posteriores contêm o novo nome.
</Callout>

### Criada [#created]

`MachineStopClassificationCreated` é enviado quando uma paragem é classificada pela primeira vez.

```json
{
  "eventId": "8d2f6c1e-4b7a-4f0e-9a3c-5e1d7b9f2a64",
  "eventTimestamp": "2026-09-25T14:03:12.482Z",
  "eventType": "MachineStopClassificationCreated",
  "event": {
    "machine": "Injetora 4",
    "machineExternalName": "INJ-004",
    "start": "2026-09-25T13:41:07.000Z",
    "end": "2026-09-25T13:58:30.000Z",
    "operator": "Ana Torres",
    "generalCause": "Falha mecânica",
    "specificCause": "Encravamento no molde",
    "component": "Pino extrator",
    "description": "Peça presa na cavidade 2, libertada manualmente",
    "isAutomated": false
  }
}
```

### Atualizada [#updated]

`MachineStopClassificationUpdated` é enviado quando uma classificação existente muda, por exemplo quando alguém corrige a causa. O objeto `event` contém os valores atuais da classificação.

```json
{
  "eventId": "c41a7e09-2d6b-4f38-9e15-7b0c3a9d4f22",
  "eventTimestamp": "2026-09-25T14:20:45.117Z",
  "eventType": "MachineStopClassificationUpdated",
  "event": {
    "machine": "Injetora 4",
    "machineExternalName": "INJ-004",
    "start": "2026-09-25T13:41:07.000Z",
    "end": "2026-09-25T13:58:30.000Z",
    "operator": "Ana Torres",
    "generalCause": "Falha mecânica",
    "specificCause": "Falha do extrator",
    "component": "Pino extrator",
    "description": "Pino extrator dobrado, substituído",
    "isAutomated": false
  }
}
```

### Eliminada [#deleted]

`MachineStopClassificationDeleted` é enviado quando uma classificação é removida e a paragem fica sem classificação. As causas, o componente, a descrição e `isAutomated` descrevem a classificação **tal como estava antes de ser eliminada**. A máquina, as horas da paragem e o operador vêm dos registos atuais do Pulsar.

```json
{
  "eventId": "5e93b0d7-8a14-4c6f-b2e8-1d7f0a3c9b56",
  "eventTimestamp": "2026-09-25T15:02:09.804Z",
  "eventType": "MachineStopClassificationDeleted",
  "event": {
    "machine": "Injetora 4",
    "machineExternalName": "INJ-004",
    "start": "2026-09-25T13:41:07.000Z",
    "end": "2026-09-25T13:58:30.000Z",
    "operator": "Ana Torres",
    "generalCause": "Falha mecânica",
    "specificCause": "Falha do extrator",
    "component": "Pino extrator",
    "description": "Pino extrator dobrado, substituído",
    "isAutomated": false
  }
}
```

## Os dados do evento são lidos no momento da entrega [#event-data-is-read-at-delivery-time]

Nos eventos de paragem e nos eventos de classificação criada e atualizada, o Pulsar lê a paragem ou a classificação quando prepara a notificação pela primeira vez, não no instante da alteração. Se uma classificação mudar duas vezes seguidas, ambos os eventos podem conter os valores mais recentes, e um `MachineStopCreated` entregue com atraso pode já incluir `end`. Trate cada evento como "esta paragem está agora assim", não como o registo de uma edição em particular.

Se uma paragem já não existir quando o Pulsar prepara o seu evento de paragem, por exemplo porque o seu início mudou, o evento não é enviado.

Uma nova tentativa ou um reenvio volta a enviar exatamente o mesmo corpo que a primeira tentativa, por isso nunca inclui alterações posteriores.
