This document describes the Wheels.Next endpoints used by the Zapier integration. Zapier calls these endpoints to validate a user's API key, list event types, register or unregister Zapier webhook URLs, and fetch sample payloads for trigger setup. When a subscribed event occurs in Wheels.Next, Wheels.Next posts the event payload to the Zapier target_url stored during subscription.
This is not a general-purpose public API. These endpoints exist to support the Zapier integration lifecycle.
Production base URL:
https://openapi.wheelsys.io/webhooks/zapier
All paths below are relative to this base URL. The API version is part of the route (v1).
Every Zapier endpoint requires an API key in the X-Api-Key request header.
X-Api-Key: {api_key}
The API key must:
ZAPIER;Solution API-key scope;If the key is missing or invalid, the API returns 401 Unauthorized.
Zapier should send:
Accept: application/json
Content-Type: application/json
X-Api-Key: {api_key}
Content-Type is only required for requests with a JSON body.
Validates the user's Zapier API key and returns a display name for the Zapier connection.
POST /me
Request body: none.
Success response:
200 OK
{
"ConnectionName": "tenant-host.example.com"
}
Error responses:
401 Unauthorized
Returns the event types that a Zap can subscribe to. This endpoint is intended for Zapier dynamic dropdown/input loading.
GET /events
Request body: none.
Success response:
200 OK
{
"results": [
{
"id": 301,
"label": "New Rental"
},
{
"id": 307,
"label": "Rental Updated"
}
]
}
Response fields:
| Field | Type | Description |
|---|---|---|
results |
array | Available Zapier trigger event types. |
results[].id |
integer | Event id to pass as event_type when subscribing or requesting samples. |
results[].label |
string | Human-readable label shown in Zapier. |
Error responses:
401 Unauthorized
Registers or updates the Zapier REST Hook URL for the selected event type. Zapier calls this when a Zap is turned on.
POST /subscriptions
Request body:
{
"target_url": "https://hooks.zapier.com/hooks/catch/123456/abcdef/",
"event_type": "301"
}
Request fields:
| Field | Type | Required | Description |
|---|---|---|---|
target_url |
string | yes | Zapier-generated REST Hook URL. Wheels.Next stores this URL and posts event payloads to it. |
event_type |
string | yes | Event id from GET /events. The value must parse to an integer. |
Success response:
200 OK
{
"id": "sub_1001_45"
}
Response fields:
| Field | Type | Description |
|---|---|---|
id |
string | Subscription id. Zapier must store this value and pass it to the unsubscribe endpoint. Format: sub_{tenantId}_{databaseId}. |
Notes:
expiration_date is returned.target_url, marks the subscription active, and resets delivery counters.Error responses:
401 Unauthorized
Invalid or non-numeric event_type values may result in a server-side validation/error response.
Deletes a previously registered Zapier REST Hook URL. Zapier calls this when a Zap is turned off.
DELETE /subscriptions/{id}
Path parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Subscription id returned by POST /subscriptions. |
Success response:
204 No Content
Notes:
204 No Content.sub_{tenantId}_{databaseId}.Error responses:
401 Unauthorized
Returns sample trigger data for a selected event type. Zapier uses this during trigger setup/testing to discover fields.
GET /samples?event_type={event_id}
Query parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
event_type |
integer | yes | Event id from GET /events. |
Success response:
200 OK
[
{
"UID": "550e8400-e29b-41d4-a716-446655440000",
"EventType": 301,
"Timestamp": "2026-06-29T10:00:00Z",
"Data": {
"Id": 1234,
"RentalNo": "R-000123",
"Status": "Active"
}
}
]
Response fields:
| Field | Type | Description |
|---|---|---|
UID |
string | Unique event message id. |
EventType |
integer | Event id. |
Timestamp |
string | UTC timestamp when the sample payload was generated. |
Data |
object | Event-specific sample data. Its fields vary by selected event type. |
Notes:
Data contains at least the deleted entity id.Id and EventType.Error responses:
401 Unauthorized
Missing or non-numeric event_type values may result in a server-side validation/error response.
When a subscribed event occurs, Wheels.Next sends a JSON POST request to the Zapier target_url registered by POST /subscriptions.
Delivery request:
POST {target_url}
Content-Type: application/json
Payload:
{
"UID": "550e8400-e29b-41d4-a716-446655440000",
"EventType": 301,
"Timestamp": "2026-06-29T10:00:00Z",
"Data": {
"Id": 1234,
"RentalNo": "R-000123",
"Status": "Active"
}
}
Payload fields:
| Field | Type | Description |
|---|---|---|
UID |
string | Unique event delivery id generated by Wheels.Next. |
EventType |
integer | Event id matching the subscribed event type. |
Timestamp |
string | UTC timestamp when the event message was created. |
Data |
object | Event-specific payload. Its schema depends on the event type. |
Delivery behavior:
The following event types are currently registered for Zapier.
| ID | Key | Label | Sample/Data Source |
|---|---|---|---|
301 |
rental.created |
New Rental | ZappierRentalViewSample / ZappierRentalView |
307 |
rental.updated |
Rental Updated | ZappierRentalViewSample / ZappierRentalView |
310 |
rental.deleted |
Rental Deleted | zappierRentalViewSample / ZappierRentalView |
602 |
car.created |
New Car | ZappierCarViewSample / ZappierCarView |
603 |
car.updated |
Car Updated | ZappierCarViewSample / ZappierCarView |
1257 |
car.deleted |
Car Deleted | ZappierCarViewSample / ZappierCarView |
951 |
rental.invoice.created |
New Rental Invoice | ZappierInvoiceViewSample / ZappierInvoiceView |
952 |
rental.invoice.updated |
Rental Invoice Updated | ZappierInvoiceViewSample / ZappierInvoiceView |
954 |
rental.invoice.deleted |
Rental Invoice Deleted | ZappierInvoiceViewSample / ZappierInvoiceView |
4001 |
color.created |
New Color | ZappierColorViewSample / ZappierColorView |
4002 |
color.updated |
Color Updated | ZappierColorViewSample / ZappierColorView |
4003 |
color.deleted |
Color Deleted | ZappierColorViewSample / ZappierColorView |