# Classification updated (https://docs.pulsarml.com/v1/api-reference/webhooks/machine-stop-classification-updated)

Sent when an existing classification changes, for example when someone corrects the cause. The `event` object carries the classification's current values.

## Webhook: `MachineStopClassificationUpdated`

Pulsar sends a `POST` request with this body to the HTTPS endpoint you registered for the `MachineStopClassificationUpdated` event. Verify `X-Pulsar-Signature` before trusting it; see https://docs.pulsarml.com/webhooks/signatures.

### Header parameters

- `X-Pulsar-Signature` (string, required, e.g. `"5c0e2f4a1b9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f"`) — HMAC-SHA256 signature of the raw body. Verify it before trusting the request; see Verify signatures.
- `X-Pulsar-Event-Type` (string, required, e.g. `"MachineStopClassificationUpdated"`) — The event type, same as `eventType` in the body.
- `X-Pulsar-Event-Id` (string, required, e.g. `"8d2f6c1e-4b7a-4f0e-9a3c-5e1d7b9f2a64"`) — The event's ID, same as `eventId` in the body.
- `X-Pulsar-Timestamp` (string, required, e.g. `"2026-09-25T14:03:12.482Z"`) — Same as `eventTimestamp` in the body.
- `X-Pulsar-Request-Id` (string, required, e.g. `"3f9b2c7d-1e4a-4c8b-b6d2-9a0e5f7c1b38"`) — The ID of this delivery attempt. Include it when you contact Pulsar support about a delivery.

### Request body (`application/json`, required)

Type: object

- `eventId` (string (uuid), required) — Unique ID of the event. It stays the same across retries, so use it to detect duplicates.
- `eventTimestamp` (string (date-time), required) — When Pulsar queued the event, as an ISO 8601 UTC timestamp. This is not the time the change happened in Pulsar.
- `eventType` ("MachineStopClassificationUpdated", required) — The event type.
- `event` (object, required) — A machine stop and its classification. A stop is identified by its `machine` and its `start`.
  - `machine` (string, required, e.g. `"Injection molder 4"`) — The machine's name in Pulsar.
  - `machineExternalName` (string, required, nullable, e.g. `"INJ-004"`) — The machine's external name, for example its ID in your ERP. `null` if it has none.
  - `start` (string (date-time), required, e.g. `"2026-09-25T13:41:07.000Z"`) — When the stop started, as an ISO 8601 UTC timestamp.
  - `end` (string (date-time), required, nullable, e.g. `"2026-09-25T13:58:30.000Z"`) — When the stop ended, as an ISO 8601 UTC timestamp. Can be `null`.
  - `operator` (string, required, nullable, e.g. `"Ana Torres"`) — Full name of the operator on the machine when the stop started. `null` if nobody was logged in.
  - `generalCause` (string, required, nullable, e.g. `"Mechanical failure"`) — Name of the general cause.
  - `specificCause` (string, required, nullable, e.g. `"Mold jam"`) — Name of the specific cause.
  - `component` (string, required, nullable, e.g. `"Ejector pin"`) — Name of the component involved.
  - `description` (string, required, nullable, e.g. `"Part stuck in cavity 2, cleared manually"`) — Free-text description of the stop.
  - `isAutomated` (boolean, required, e.g. `false`) — `true` if the classification was applied automatically by a rule, `false` if a person entered it.

### Your response

#### 200 — Return any `2XX` within 10 seconds to acknowledge the delivery; Pulsar ignores the response body. A timeout, `408`, `429` or `5XX` is retried. Any other `4XX`, or a `3XX` redirect, is not.

### Example body

```json
{
  "eventId": "c41a7e09-2d6b-4f38-9e15-7b0c3a9d4f22",
  "eventTimestamp": "2026-09-25T14:20:45.117Z",
  "eventType": "MachineStopClassificationUpdated",
  "event": {
    "machine": "Injection molder 4",
    "machineExternalName": "INJ-004",
    "start": "2026-09-25T13:41:07.000Z",
    "end": "2026-09-25T13:58:30.000Z",
    "operator": "Ana Torres",
    "generalCause": "Mechanical failure",
    "specificCause": "Ejector failure",
    "component": "Ejector pin",
    "description": "Ejector pin bent, replaced",
    "isAutomated": false
  }
}
```