Skip to main content

 

Eptura Knowledge Center

Listener service

About the Listener service

The Eptura Engage webhook system is called the Listener service. When events happen in Eptura Engage - a booking is created, a space is updated, a visitor is registered, etc. - the system sends a notification payload to a URL you register.

Reference Enums


The tables show the values used by the Webhooks and Notification service. Use these reference tables to understand the valid values that can be returned in webhook payloads or supplied when configuring listeners. 

Event type
Value
Event type
Description
0 Action Generic action events
1 Meeting Meeting space booking events
2 Desk Personal space booking events
3 MeetingExternal External meeting space events
4 IPPhone IP phone events
5 MeetingProgression Meeting status progression events
6 DeskProgression Personal space status progression events
7 Resource Resource change events
8 Visitor Visitor management events
Queue Providers
Value
Name
Description
2 PublishNotificationProvider Default.HTTP POST to your notificationUr1
3 AzureQueueProvider Writes to an Azure storage queue
4 AzureQueueFilteredProvider Azure storage queue with filtering

For most webhook integrations, use value 2 PublishNotificationProvider.  The platform will POST directly to your endpoint.

Authentication


All listener API calls require the same authentication as any other Admin API request. The Postman collection handles this automatically (pre-request script generates the JWT and attaches the subscription key).

If calling manually, then:

Authorization: Bearer <JWT>
Ocp-Apim-Subscription-Key: <your-subscription-key>
Content-Type: application/json

Webhooks - registering and deleting Listeners


Register a listener

POST /api/V1/listener

Registers a new webhook. You specify which event types to listen for, where to send notifications, and a secret key your endpoint can use to verify that the payload came from Eptura Engage.

Request body

The fields used in the request are explained in the table below.

{
 "secretKey": "my-shared-secret",
 "eventTypes": [1, 2],
 "resourceIds": [],
 "notificationUrl: "https://your-endpoint.example.com/webhook",
 "queueProvider": 2
}
Field
Required
Description

secretKey

Yes

A shared secret string. Eptura Engage includes this in notifications, so your endpoint can verify authenticity.

eventTypes

Yes

Array of event type integers. Subscribe to one or more. See the enum reference table above.

resourceIds

No

Array of specific resource IDs to filter on. Leave empty ([]) to receive events for all resources.

notificationUrl

Yes

The public HTTPS URL where Eptura Engage will POST notification payloads.

queueProvider

No

Defaults to 2 (HTTP POST). Only change if using Azure Queue delivery.

Example: Subscribe to all meeting and personal space booking events

{
  "secretKey": "abc123supersecret",
  "eventTypes": [1, 2],
  "resourceIds": [],
  "notificationUrl": "https://integrations.mycompany.com/condeco/webhook",
  "queueProvider": 2
}

Example: Subscribe to visitor events for specific resources

{
  "secretKey": "abc123supersecret",
  "eventTypes": [8],
  "resourceIds": [1042, 1043],
  "notificationUrl": "https://integrations.mycompany.com/condeco/visitor-webhook",
  "queueProvider": 2
}

Response

If successful, Eptura Engage returns the created listener object, including its assigned listenerId. Save this ID - you need it to delete the listener later.

{
  "listenerId": 47,
  "notificationUrl": "https://integrations.mycompany.com/condeco/webhook",
  "eventTypes": [1, 2],
  "queueProvider": 2
}

Look up an existing Listener

GET /api/V1/listener?notificationUrl=<encoded-url>

Retrieves details for a listener registered against a given notification URL. Useful for checking if a listener already exists, or for retrieving the listenerId if you didn't save it at registration time.

Query parameter
Parameter
Required
Description

notificationUrl

Yes

The notification URL, HTML-encoded.

URL encoding

The URL must be percent-encoded. For example:

https://integrations.mycompany.com/condeco/webhook

becomes

https%3A%2F%2Fintegrations.mycompany.com%2Fcondeco%2Fwebhook

Full request example

GET {{baseUrl}}/api/V1/listener?notificationUrl=https%3A%2F%2Fintegrations.mycompany.com%2Fcondeco%2Fwebhook

Response

Returns the listener configuration, including the listenerId, event types, and queue provider settings.

Delete a Listener

DELETE /api/V1/listener

Removes a registered Listener so Eptura Engage stops sending notifications to that URL.

Note: Unlike typical REST deletes, this endpoint takes a JSON body (not a path parameter).

Request Body

{
  "listenerId": 47,
  "eventType": 1,
  "notificationUrl": "https://integrations.mycompany.com/condeco/webhook",
  "queueProvider": 2
}

Field
Required
Description

listenerId

Yes

The ID returned when the Listener was created (or retrieved via GET).

eventType

Yes

The event type integer for this Listener.

notificationUrl

Yes

The registered notification URL.

queueProvider

No

Queue provider value. Should match what was used at registration.

Using the Postman collection


All three listener endpoints are in the ExternalBooking folder of the Condeco_AdminAPI_Generic.json collection:

Request name
Operation

Listener_PostListener_V1

Register/subscribe a new listener

Listener_GetListenerByRegistrationUrl_V1

Look up listener by notification URL

Listener_DeleteListener_V1

Delete/unsubscribe a listener

Steps:
  1. Ensure your collection variables are set (apimHost, customerCmdb, subscriptionKey, audience, clientSecret) 
  2. Expand the ExternalBooking folder.
  3. Select the desired listener request.
  4. Edit the body (POST/DELETE) or the notificationUrl query parameter (GET).
  5. Click Send - the pre-request script handles authentication automatically.

Workflow summary


1. POST /api/V1/listener - Register webhook, note the returned listenerId
2. GET  /api/V1/listener?... - Verify it exists / retrieve listenerId later
3. DELETE /api/V1/listener - Unsubscribe using listenerId + notificationUrl

Notes
  • Your endpoint must be publicly reachable over HTTPS. Eptura Engage cannot POST to localhost or internal addresses.
  • Verify the secret key in your endpoint handler - Eptura Engage includes the secretKey in the notification payload, so you can reject spoofed requests.
  • resourceIds filtering - if you only care about events for specific rooms or desks, pass their IDs to reduce noise. Leave empty for all resources.
  • Multiple event types per registration - a single POST can subscribe to multiple event types (e.g., [1, 2, 8]). Each event type may appear as a separate listener entry when retrieved.
  • The listenerId is per-event-type - if you subscribed to [1, 2], you may get back two listener IDs, one per event type. You will need to delete each individually.