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

# Car Actually Placed Webhook

> Event payload sent when a car is placed at a station or track

## Event Overview

The **Car Actually Placed** webhook fires when a railcar is physically placed at a station or track in your network. It delivers equipment details, the placement location, loaded/empty status, and the associated work order (if any).

<Info>
  This webhook is triggered through ARMS workflow automation. Configure it in your workflow rules to notify external
  systems when cars arrive at specific locations.
</Info>

***

## Payload Schema

```json theme={null}
{
  "event_type": "car_actually_placed",
  "event_timestamp": "2026-03-05T14:30:00+00:00",
  "work_order_id": "12345",
  "linked_resources": {
    "equipment": [
      {
        "resource_id": 123,
        "car_number": "GCGO 12345"
      }
    ],
    "event_station": {
      "resource_id": 456,
      "grouping_type": "station"
    }
  },
  "attributes": {
    "is_loaded": true
  },
  "actor": {
    "resource_type": "User",
    "resource_id": 12345,
    "display_name": "ops@customer.com"
  }
}
```

***

## Field Reference

### Top-level Fields

| Field              | Type              | Required | Description                                                                                                                                         |
| ------------------ | ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `event_type`       | string            | Yes      | Always `"car_actually_placed"` for this event.                                                                                                      |
| `event_timestamp`  | string (ISO 8601) | No       | When the event occurred. `null` if unavailable.                                                                                                     |
| `work_order_id`    | string            | No       | ID of the associated work order. `null` if the event has no work order.                                                                             |
| `linked_resources` | object            | Yes      | Equipment and station involved in the event.                                                                                                        |
| `attributes`       | object            | Yes      | Event-specific attributes.                                                                                                                          |
| `actor`            | object or null    | Yes      | Who caused the triggering event. `null` for system-initiated events. See [Shared Payload Fields -> actor](/user-docs/arms/webhooks/overview#actor). |

### linked\_resources.equipment

An array of equipment items being placed. Always an array, even for a single car.

| Field         | Type           | Description                                |
| ------------- | -------------- | ------------------------------------------ |
| `resource_id` | integer        | Internal equipment identifier.             |
| `car_number`  | string or null | Railroad car number (e.g. `"GCGO 12345"`). |

### linked\_resources.event\_station

The station or track where the equipment is being placed. `null` if no station is associated.

| Field           | Type    | Description                                     |
| --------------- | ------- | ----------------------------------------------- |
| `resource_id`   | integer | Internal station identifier.                    |
| `grouping_type` | string  | Type of location (e.g. `"station"`, `"track"`). |

### attributes

| Field       | Type    | Description                                    |
| ----------- | ------- | ---------------------------------------------- |
| `is_loaded` | boolean | `true` if the car is loaded, `false` if empty. |

***

## Example HTTP Request

This is the full HTTP request your endpoint receives:

```http theme={null}
POST /your-webhook-endpoint HTTP/1.1
Content-Type: application/json
X-Webhook-Timestamp: 1709651400
X-Webhook-Signature: <base64-encoded-ed25519-signature>
X-Webhook-KeyId: cedar-webhooks-2026
X-Webhook-Id: 550e8400-e29b-41d4-a716-446655440000

{"actor":{"display_name":"ops@customer.com","resource_id":12345,"resource_type":"User"},"attributes":{"is_loaded":true},"event_timestamp":"2026-03-05T14:30:00+00:00","event_type":"car_actually_placed","linked_resources":{"equipment":[{"car_number":"GCGO 12345","resource_id":123}],"event_station":{"grouping_type":"station","resource_id":456}},"work_order_id":"12345"}
```

<Note>
  The JSON body is **canonically serialized** (sorted keys, no extra whitespace) so the signature can be verified
  deterministically. See the [Webhook Overview](/user-docs/arms/webhooks/overview#signature-verification) for verification
  instructions.
</Note>

***

## Setting Up This Webhook

<Steps>
  <Step title="Configure Workflow">In ARMS, create or edit a workflow rule that triggers on car placement events.</Step>

  <Step title="Add Webhook Effect">
    Add the **Car Actually Placed Webhook** effect to the workflow. Provide your endpoint URL.
  </Step>

  <Step title="Implement Your Endpoint">
    Build an HTTPS endpoint that receives the POST, verifies the signature, and processes the event.
  </Step>

  <Step title="Test">Trigger a test event and confirm your endpoint receives and verifies the payload correctly.</Step>
</Steps>

***

## Related

<CardGroup cols={2}>
  <Card title="Webhook Overview" icon="webhook" href="/user-docs/arms/webhooks/overview">
    Signing, verification, public key, and shared HTTP headers.
  </Card>
</CardGroup>
