Skip to content
Developer

External Display

Locations and bookings9 EndpointsEvent / External Display

Returns a list of ExternalDisplays

GET/api/event/external_display

Query parameters

idinteger
deletedbooleanThis property is used to mark an entity as deleted / archived | Default value: false
namestring
deviceTypestringWhich kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.
deviceIdstringPublic identifier of the device, travelling in the request path. Deliberately not the secret: paths end up in access logs, proxy logs and support screenshots. Keeping an id there lets a device be identified in a log without the credential riding along.
contentProfilestringHow much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.
languagestringLanguage every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.
baseBookablestring
baseLocationstring
showBookingQrstringShow a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.
lastSeenAtstringLast successful fetch by the device. No log table on purpose: a display checks in every few minutes, which is roughly 288 rows per device per day, and only the last one is ever read.
createdstring
updatedstring
searchStringstringtext to search for in the list
orderFieldNamestringname of the order field
orderFieldSortstringsorting modeAllowed: DESCASC
pageintegerpage of the list
pageSizeintegernumber of entries for each page
withMaxPageNumberstringreturns the number of pages available as a header if this is set

Responses

200Returns a list of ExternalDisplaysarray<ExternalDisplay>

Show fields (22)
  • idinteger

    Primary key of the external display. Internal ID.

  • device_typestring

    Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

  • device_idstring

    Public identifier of the device, travelling in the request path. Deliberately not the secret: paths end up in access logs, proxy logs and support screenshots. Keeping an id there lets a device be identified in a log without the credential riding along.

  • previous_secret_valid_untilstring (date-time)

    Time until the previous secret of the display is still accepted.

  • base_bookableBaseBookable16

    Bookable the display shows.

    Show fields (49)
    • ticketSeatingPlanIdinteger

      Id of the seating plan of the room, also for the public serialization.

    • idinteger

      Primary key of the bookable. Internal ID.

    • tokenstring

      Public token of the bookable. Used in links instead of the ID.

    • bookable_typestring

      Type of the bookable, for example room, court or vehicle.

    • floor_levelstring

      Floor the bookable is on.

    • floor_sizeinteger

      Floor size in square meters.

    • pets_allowedboolean

      Pets are allowed.

    • barrier_freeboolean

      The bookable is barrier-free.

    • cargo_volumeinteger

      Cargo volume in liters.

    • fuel_typestring

      Fuel type of the vehicle.

    • seating_capacityinteger

      Number of seats.

    • has_wait_listboolean

      The bookable has a waiting list once it is fully booked.

    • booking_limitinteger

      Maximum number of bookings.

    • billing_modestring

      How bookings on this bookable are billed: BILLING_MODE_UPFRONT (null = upfront, invoice at booking time) or BILLING_MODE_USAGE (free reservation, deferred billing from real usage data) Also in Default: the member app shows "Nutzung erfassen" only for usage-billed bookables.

    • max_active_bookings_per_userinteger

      Maximum number of active (future, not cancelled) self-service bookings one person may hold on this bookable at the same time. Null = unlimited. Admin bookings are not limited.

    • max_advance_booking_hoursinteger

      Maximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.

    • inventory_managedboolean

      Kept as inventory (Inventar-Ausleihe): the office hands the item over and takes it back, with deposit and reminders. Only used while the setting event_inventory_enabled is on.

    • inventory_depositnumber (float)

      Deposit (Kaution) per piece asked on hand-over. Null = no deposit.

    • require_addressboolean

      The address must be entered when booking.

    • require_contactboolean

      Contact details must be entered when booking.

    • require_billingboolean

      Billing details must be entered when booking.

    • require_booking_titleboolean

      A title must be entered when booking.

    • allow_direct_billingboolean
    • require_ageboolean

      The age must be entered when booking.

    • counter_update_modestring

      How the usage counters of the bookable are updated.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

  • base_locationBaseLocation10

    Location the display is placed at.

    Show fields (29)
    • idinteger

      Primary key of the location. Internal ID.

    • tokenstring

      Public token of the location. Used in links instead of the ID.

    • location_typestring

      Type of the location, for example room, hall or outdoor area.

    • in_contact_centerboolean

      The location is shown in the contact center.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

    • is_ui_filterboolean

      This property is used to mark an entity as a filter for the frontend

  • content_profilestring

    How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

  • languagestring

    Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

  • show_booking_qrboolean

    Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

  • notice_textstring

    Free-text notice, rendered as a footer line.

  • refresh_secondsinteger

    Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

  • last_seen_atstring (date-time)

    Last successful fetch by the device. No log table on purpose: a display checks in every few minutes, which is roughly 288 rows per device per day, and only the last one is ever read.

  • battery_voltagenumber (float)

    Battery voltage of the display in volts.

  • battery_warn_voltagenumber (float)

    Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

  • battery_warning_sent_atstring (date-time)

    When the health check found the battery below the threshold. Cleared once a reading is clearly above it again, so a replaced battery re-arms the warning. This is the display's maintenance flag as much as a send marker: it is set even when no recipient is configured.

  • offline_warning_sent_atstring (date-time)

    When the health check found the display silent for too long. Cleared by the next fetch of the device.

  • firmware_versionstring

    Firmware version of the display.

  • rssiinteger

    Signal strength of the display in dBm.

  • namestring

    Name of the entity.

  • deletedboolean

    This property is used to mark an entity as deleted / archived

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/event/external_display \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
[
  {
    "id": 42,
    "language": "de",
    "notice_text": "Text",
    "name": "Beispiel",
    "device_type": "string",
    "device_id": "42",
    "previous_secret_valid_until": "2026-10-15T09:30:00+02:00",
    "base_bookable": {
      "id": 42,
      "require_booking_title": true,
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163",
      "address_country": "DE",
      "address_full_country": "DE",
      "main_phone": "+49 511 123456",
      "main_email": "lena.hartmann@example.org",
      "name": "Beispiel"
    },
    "base_location": {
      "id": 42,
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163",
      "address_country": "DE",
      "address_full_country": "DE",
      "main_phone": "+49 511 123456",
      "main_email": "lena.hartmann@example.org",
      "name": "Beispiel",
      "image_url": "https://vynst.de"
    },
    "content_profile": "string"
  }
]

Adds a new ExternalDisplay

POST/api/event/external_display

Request body application/json

  • dataExternalDisplay2
    Show fields (10)
    • device_typestring

      Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

    • base_bookableBaseBookable17

      Bookable the display shows.

    • base_locationBaseLocation6

      Location the display is placed at.

    • content_profilestring

      How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

    • languagestring

      Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

    • show_booking_qrboolean

      Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

    • notice_textstring

      Free-text notice, rendered as a footer line.

    • refresh_secondsinteger

      Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

    • battery_warn_voltagenumber (float)

      Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

    • deletedboolean

      This property is used to mark an entity as deleted / archived

Responses

200Add a new ExternalDisplayExternalDisplay

Show fields (22)
  • idinteger

    Primary key of the external display. Internal ID.

  • device_typestring

    Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

  • device_idstring

    Public identifier of the device, travelling in the request path. Deliberately not the secret: paths end up in access logs, proxy logs and support screenshots. Keeping an id there lets a device be identified in a log without the credential riding along.

  • previous_secret_valid_untilstring (date-time)

    Time until the previous secret of the display is still accepted.

  • base_bookableBaseBookable16

    Bookable the display shows.

    Show fields (49)
    • ticketSeatingPlanIdinteger

      Id of the seating plan of the room, also for the public serialization.

    • idinteger

      Primary key of the bookable. Internal ID.

    • tokenstring

      Public token of the bookable. Used in links instead of the ID.

    • bookable_typestring

      Type of the bookable, for example room, court or vehicle.

    • floor_levelstring

      Floor the bookable is on.

    • floor_sizeinteger

      Floor size in square meters.

    • pets_allowedboolean

      Pets are allowed.

    • barrier_freeboolean

      The bookable is barrier-free.

    • cargo_volumeinteger

      Cargo volume in liters.

    • fuel_typestring

      Fuel type of the vehicle.

    • seating_capacityinteger

      Number of seats.

    • has_wait_listboolean

      The bookable has a waiting list once it is fully booked.

    • booking_limitinteger

      Maximum number of bookings.

    • billing_modestring

      How bookings on this bookable are billed: BILLING_MODE_UPFRONT (null = upfront, invoice at booking time) or BILLING_MODE_USAGE (free reservation, deferred billing from real usage data) Also in Default: the member app shows "Nutzung erfassen" only for usage-billed bookables.

    • max_active_bookings_per_userinteger

      Maximum number of active (future, not cancelled) self-service bookings one person may hold on this bookable at the same time. Null = unlimited. Admin bookings are not limited.

    • max_advance_booking_hoursinteger

      Maximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.

    • inventory_managedboolean

      Kept as inventory (Inventar-Ausleihe): the office hands the item over and takes it back, with deposit and reminders. Only used while the setting event_inventory_enabled is on.

    • inventory_depositnumber (float)

      Deposit (Kaution) per piece asked on hand-over. Null = no deposit.

    • require_addressboolean

      The address must be entered when booking.

    • require_contactboolean

      Contact details must be entered when booking.

    • require_billingboolean

      Billing details must be entered when booking.

    • require_booking_titleboolean

      A title must be entered when booking.

    • allow_direct_billingboolean
    • require_ageboolean

      The age must be entered when booking.

    • counter_update_modestring

      How the usage counters of the bookable are updated.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

  • base_locationBaseLocation10

    Location the display is placed at.

    Show fields (29)
    • idinteger

      Primary key of the location. Internal ID.

    • tokenstring

      Public token of the location. Used in links instead of the ID.

    • location_typestring

      Type of the location, for example room, hall or outdoor area.

    • in_contact_centerboolean

      The location is shown in the contact center.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

    • is_ui_filterboolean

      This property is used to mark an entity as a filter for the frontend

  • content_profilestring

    How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

  • languagestring

    Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

  • show_booking_qrboolean

    Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

  • notice_textstring

    Free-text notice, rendered as a footer line.

  • refresh_secondsinteger

    Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

  • last_seen_atstring (date-time)

    Last successful fetch by the device. No log table on purpose: a display checks in every few minutes, which is roughly 288 rows per device per day, and only the last one is ever read.

  • battery_voltagenumber (float)

    Battery voltage of the display in volts.

  • battery_warn_voltagenumber (float)

    Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

  • battery_warning_sent_atstring (date-time)

    When the health check found the battery below the threshold. Cleared once a reading is clearly above it again, so a replaced battery re-arms the warning. This is the display's maintenance flag as much as a send marker: it is set even when no recipient is configured.

  • offline_warning_sent_atstring (date-time)

    When the health check found the display silent for too long. Cleared by the next fetch of the device.

  • firmware_versionstring

    Firmware version of the display.

  • rssiinteger

    Signal strength of the display in dBm.

  • namestring

    Name of the entity.

  • deletedboolean

    This property is used to mark an entity as deleted / archived

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/event/external_display \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "language": "de",
    "notice_text": "Text",
    "device_type": "string",
    "base_bookable": {
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163",
      "address_country": "DE",
      "address_full_country": "DE",
      "main_phone": "+49 511 123456"
    },
    "base_location": {
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163",
      "address_country": "DE",
      "address_full_country": "DE",
      "main_phone": "+49 511 123456"
    },
    "content_profile": "string"
  }
}
'
Response 200 application/json
{
  "id": 42,
  "language": "de",
  "notice_text": "Text",
  "name": "Beispiel",
  "device_type": "string",
  "device_id": "42",
  "previous_secret_valid_until": "2026-10-15T09:30:00+02:00",
  "base_bookable": {
    "id": 42,
    "require_booking_title": true,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel"
  },
  "base_location": {
    "id": 42,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel",
    "image_url": "https://vynst.de"
  },
  "content_profile": "string"
}

Returns a single ExternalDisplay

GET/api/event/external_display/{identifier}

Path parameters

identifierrequiredstring

Responses

200Returns a single ExternalDisplayExternalDisplay

Show fields (22)
  • idinteger

    Primary key of the external display. Internal ID.

  • device_typestring

    Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

  • device_idstring

    Public identifier of the device, travelling in the request path. Deliberately not the secret: paths end up in access logs, proxy logs and support screenshots. Keeping an id there lets a device be identified in a log without the credential riding along.

  • previous_secret_valid_untilstring (date-time)

    Time until the previous secret of the display is still accepted.

  • base_bookableBaseBookable16

    Bookable the display shows.

    Show fields (49)
    • ticketSeatingPlanIdinteger

      Id of the seating plan of the room, also for the public serialization.

    • idinteger

      Primary key of the bookable. Internal ID.

    • tokenstring

      Public token of the bookable. Used in links instead of the ID.

    • bookable_typestring

      Type of the bookable, for example room, court or vehicle.

    • floor_levelstring

      Floor the bookable is on.

    • floor_sizeinteger

      Floor size in square meters.

    • pets_allowedboolean

      Pets are allowed.

    • barrier_freeboolean

      The bookable is barrier-free.

    • cargo_volumeinteger

      Cargo volume in liters.

    • fuel_typestring

      Fuel type of the vehicle.

    • seating_capacityinteger

      Number of seats.

    • has_wait_listboolean

      The bookable has a waiting list once it is fully booked.

    • booking_limitinteger

      Maximum number of bookings.

    • billing_modestring

      How bookings on this bookable are billed: BILLING_MODE_UPFRONT (null = upfront, invoice at booking time) or BILLING_MODE_USAGE (free reservation, deferred billing from real usage data) Also in Default: the member app shows "Nutzung erfassen" only for usage-billed bookables.

    • max_active_bookings_per_userinteger

      Maximum number of active (future, not cancelled) self-service bookings one person may hold on this bookable at the same time. Null = unlimited. Admin bookings are not limited.

    • max_advance_booking_hoursinteger

      Maximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.

    • inventory_managedboolean

      Kept as inventory (Inventar-Ausleihe): the office hands the item over and takes it back, with deposit and reminders. Only used while the setting event_inventory_enabled is on.

    • inventory_depositnumber (float)

      Deposit (Kaution) per piece asked on hand-over. Null = no deposit.

    • require_addressboolean

      The address must be entered when booking.

    • require_contactboolean

      Contact details must be entered when booking.

    • require_billingboolean

      Billing details must be entered when booking.

    • require_booking_titleboolean

      A title must be entered when booking.

    • allow_direct_billingboolean
    • require_ageboolean

      The age must be entered when booking.

    • counter_update_modestring

      How the usage counters of the bookable are updated.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

  • base_locationBaseLocation10

    Location the display is placed at.

    Show fields (29)
    • idinteger

      Primary key of the location. Internal ID.

    • tokenstring

      Public token of the location. Used in links instead of the ID.

    • location_typestring

      Type of the location, for example room, hall or outdoor area.

    • in_contact_centerboolean

      The location is shown in the contact center.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

    • is_ui_filterboolean

      This property is used to mark an entity as a filter for the frontend

  • content_profilestring

    How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

  • languagestring

    Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

  • show_booking_qrboolean

    Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

  • notice_textstring

    Free-text notice, rendered as a footer line.

  • refresh_secondsinteger

    Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

  • last_seen_atstring (date-time)

    Last successful fetch by the device. No log table on purpose: a display checks in every few minutes, which is roughly 288 rows per device per day, and only the last one is ever read.

  • battery_voltagenumber (float)

    Battery voltage of the display in volts.

  • battery_warn_voltagenumber (float)

    Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

  • battery_warning_sent_atstring (date-time)

    When the health check found the battery below the threshold. Cleared once a reading is clearly above it again, so a replaced battery re-arms the warning. This is the display's maintenance flag as much as a send marker: it is set even when no recipient is configured.

  • offline_warning_sent_atstring (date-time)

    When the health check found the display silent for too long. Cleared by the next fetch of the device.

  • firmware_versionstring

    Firmware version of the display.

  • rssiinteger

    Signal strength of the display in dBm.

  • namestring

    Name of the entity.

  • deletedboolean

    This property is used to mark an entity as deleted / archived

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/event/external_display/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "id": 42,
  "language": "de",
  "notice_text": "Text",
  "name": "Beispiel",
  "device_type": "string",
  "device_id": "42",
  "previous_secret_valid_until": "2026-10-15T09:30:00+02:00",
  "base_bookable": {
    "id": 42,
    "require_booking_title": true,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel"
  },
  "base_location": {
    "id": 42,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel",
    "image_url": "https://vynst.de"
  },
  "content_profile": "string"
}

Updates an ExternalDisplay

PUT/api/event/external_display/{identifier}

Path parameters

identifierrequiredstring

Request body application/json

  • dataExternalDisplay2
    Show fields (10)
    • device_typestring

      Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

    • base_bookableBaseBookable17

      Bookable the display shows.

    • base_locationBaseLocation6

      Location the display is placed at.

    • content_profilestring

      How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

    • languagestring

      Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

    • show_booking_qrboolean

      Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

    • notice_textstring

      Free-text notice, rendered as a footer line.

    • refresh_secondsinteger

      Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

    • battery_warn_voltagenumber (float)

      Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

    • deletedboolean

      This property is used to mark an entity as deleted / archived

Responses

200Update an ExternalDisplayExternalDisplay

Show fields (22)
  • idinteger

    Primary key of the external display. Internal ID.

  • device_typestring

    Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

  • device_idstring

    Public identifier of the device, travelling in the request path. Deliberately not the secret: paths end up in access logs, proxy logs and support screenshots. Keeping an id there lets a device be identified in a log without the credential riding along.

  • previous_secret_valid_untilstring (date-time)

    Time until the previous secret of the display is still accepted.

  • base_bookableBaseBookable16

    Bookable the display shows.

    Show fields (49)
    • ticketSeatingPlanIdinteger

      Id of the seating plan of the room, also for the public serialization.

    • idinteger

      Primary key of the bookable. Internal ID.

    • tokenstring

      Public token of the bookable. Used in links instead of the ID.

    • bookable_typestring

      Type of the bookable, for example room, court or vehicle.

    • floor_levelstring

      Floor the bookable is on.

    • floor_sizeinteger

      Floor size in square meters.

    • pets_allowedboolean

      Pets are allowed.

    • barrier_freeboolean

      The bookable is barrier-free.

    • cargo_volumeinteger

      Cargo volume in liters.

    • fuel_typestring

      Fuel type of the vehicle.

    • seating_capacityinteger

      Number of seats.

    • has_wait_listboolean

      The bookable has a waiting list once it is fully booked.

    • booking_limitinteger

      Maximum number of bookings.

    • billing_modestring

      How bookings on this bookable are billed: BILLING_MODE_UPFRONT (null = upfront, invoice at booking time) or BILLING_MODE_USAGE (free reservation, deferred billing from real usage data) Also in Default: the member app shows "Nutzung erfassen" only for usage-billed bookables.

    • max_active_bookings_per_userinteger

      Maximum number of active (future, not cancelled) self-service bookings one person may hold on this bookable at the same time. Null = unlimited. Admin bookings are not limited.

    • max_advance_booking_hoursinteger

      Maximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.

    • inventory_managedboolean

      Kept as inventory (Inventar-Ausleihe): the office hands the item over and takes it back, with deposit and reminders. Only used while the setting event_inventory_enabled is on.

    • inventory_depositnumber (float)

      Deposit (Kaution) per piece asked on hand-over. Null = no deposit.

    • require_addressboolean

      The address must be entered when booking.

    • require_contactboolean

      Contact details must be entered when booking.

    • require_billingboolean

      Billing details must be entered when booking.

    • require_booking_titleboolean

      A title must be entered when booking.

    • allow_direct_billingboolean
    • require_ageboolean

      The age must be entered when booking.

    • counter_update_modestring

      How the usage counters of the bookable are updated.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

  • base_locationBaseLocation10

    Location the display is placed at.

    Show fields (29)
    • idinteger

      Primary key of the location. Internal ID.

    • tokenstring

      Public token of the location. Used in links instead of the ID.

    • location_typestring

      Type of the location, for example room, hall or outdoor area.

    • in_contact_centerboolean

      The location is shown in the contact center.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

    • is_ui_filterboolean

      This property is used to mark an entity as a filter for the frontend

  • content_profilestring

    How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

  • languagestring

    Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

  • show_booking_qrboolean

    Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

  • notice_textstring

    Free-text notice, rendered as a footer line.

  • refresh_secondsinteger

    Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

  • last_seen_atstring (date-time)

    Last successful fetch by the device. No log table on purpose: a display checks in every few minutes, which is roughly 288 rows per device per day, and only the last one is ever read.

  • battery_voltagenumber (float)

    Battery voltage of the display in volts.

  • battery_warn_voltagenumber (float)

    Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

  • battery_warning_sent_atstring (date-time)

    When the health check found the battery below the threshold. Cleared once a reading is clearly above it again, so a replaced battery re-arms the warning. This is the display's maintenance flag as much as a send marker: it is set even when no recipient is configured.

  • offline_warning_sent_atstring (date-time)

    When the health check found the display silent for too long. Cleared by the next fetch of the device.

  • firmware_versionstring

    Firmware version of the display.

  • rssiinteger

    Signal strength of the display in dBm.

  • namestring

    Name of the entity.

  • deletedboolean

    This property is used to mark an entity as deleted / archived

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request PUT \
  --url https://your-instance.iw-erp.de/api/event/external_display/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "language": "de",
    "notice_text": "Text",
    "device_type": "string",
    "base_bookable": {
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163",
      "address_country": "DE",
      "address_full_country": "DE",
      "main_phone": "+49 511 123456"
    },
    "base_location": {
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163",
      "address_country": "DE",
      "address_full_country": "DE",
      "main_phone": "+49 511 123456"
    },
    "content_profile": "string"
  }
}
'
Response 200 application/json
{
  "id": 42,
  "language": "de",
  "notice_text": "Text",
  "name": "Beispiel",
  "device_type": "string",
  "device_id": "42",
  "previous_secret_valid_until": "2026-10-15T09:30:00+02:00",
  "base_bookable": {
    "id": 42,
    "require_booking_title": true,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel"
  },
  "base_location": {
    "id": 42,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel",
    "image_url": "https://vynst.de"
  },
  "content_profile": "string"
}

Updates an ExternalDisplay

PATCH/api/event/external_display/{identifier}

Path parameters

identifierrequiredstring

Request body application/json

  • dataExternalDisplay2
    Show fields (10)
    • device_typestring

      Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

    • base_bookableBaseBookable17

      Bookable the display shows.

    • base_locationBaseLocation6

      Location the display is placed at.

    • content_profilestring

      How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

    • languagestring

      Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

    • show_booking_qrboolean

      Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

    • notice_textstring

      Free-text notice, rendered as a footer line.

    • refresh_secondsinteger

      Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

    • battery_warn_voltagenumber (float)

      Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

    • deletedboolean

      This property is used to mark an entity as deleted / archived

Responses

200Update an ExternalDisplayExternalDisplay

Show fields (22)
  • idinteger

    Primary key of the external display. Internal ID.

  • device_typestring

    Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

  • device_idstring

    Public identifier of the device, travelling in the request path. Deliberately not the secret: paths end up in access logs, proxy logs and support screenshots. Keeping an id there lets a device be identified in a log without the credential riding along.

  • previous_secret_valid_untilstring (date-time)

    Time until the previous secret of the display is still accepted.

  • base_bookableBaseBookable16

    Bookable the display shows.

    Show fields (49)
    • ticketSeatingPlanIdinteger

      Id of the seating plan of the room, also for the public serialization.

    • idinteger

      Primary key of the bookable. Internal ID.

    • tokenstring

      Public token of the bookable. Used in links instead of the ID.

    • bookable_typestring

      Type of the bookable, for example room, court or vehicle.

    • floor_levelstring

      Floor the bookable is on.

    • floor_sizeinteger

      Floor size in square meters.

    • pets_allowedboolean

      Pets are allowed.

    • barrier_freeboolean

      The bookable is barrier-free.

    • cargo_volumeinteger

      Cargo volume in liters.

    • fuel_typestring

      Fuel type of the vehicle.

    • seating_capacityinteger

      Number of seats.

    • has_wait_listboolean

      The bookable has a waiting list once it is fully booked.

    • booking_limitinteger

      Maximum number of bookings.

    • billing_modestring

      How bookings on this bookable are billed: BILLING_MODE_UPFRONT (null = upfront, invoice at booking time) or BILLING_MODE_USAGE (free reservation, deferred billing from real usage data) Also in Default: the member app shows "Nutzung erfassen" only for usage-billed bookables.

    • max_active_bookings_per_userinteger

      Maximum number of active (future, not cancelled) self-service bookings one person may hold on this bookable at the same time. Null = unlimited. Admin bookings are not limited.

    • max_advance_booking_hoursinteger

      Maximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.

    • inventory_managedboolean

      Kept as inventory (Inventar-Ausleihe): the office hands the item over and takes it back, with deposit and reminders. Only used while the setting event_inventory_enabled is on.

    • inventory_depositnumber (float)

      Deposit (Kaution) per piece asked on hand-over. Null = no deposit.

    • require_addressboolean

      The address must be entered when booking.

    • require_contactboolean

      Contact details must be entered when booking.

    • require_billingboolean

      Billing details must be entered when booking.

    • require_booking_titleboolean

      A title must be entered when booking.

    • allow_direct_billingboolean
    • require_ageboolean

      The age must be entered when booking.

    • counter_update_modestring

      How the usage counters of the bookable are updated.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

  • base_locationBaseLocation10

    Location the display is placed at.

    Show fields (29)
    • idinteger

      Primary key of the location. Internal ID.

    • tokenstring

      Public token of the location. Used in links instead of the ID.

    • location_typestring

      Type of the location, for example room, hall or outdoor area.

    • in_contact_centerboolean

      The location is shown in the contact center.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

    • is_ui_filterboolean

      This property is used to mark an entity as a filter for the frontend

  • content_profilestring

    How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

  • languagestring

    Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

  • show_booking_qrboolean

    Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

  • notice_textstring

    Free-text notice, rendered as a footer line.

  • refresh_secondsinteger

    Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

  • last_seen_atstring (date-time)

    Last successful fetch by the device. No log table on purpose: a display checks in every few minutes, which is roughly 288 rows per device per day, and only the last one is ever read.

  • battery_voltagenumber (float)

    Battery voltage of the display in volts.

  • battery_warn_voltagenumber (float)

    Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

  • battery_warning_sent_atstring (date-time)

    When the health check found the battery below the threshold. Cleared once a reading is clearly above it again, so a replaced battery re-arms the warning. This is the display's maintenance flag as much as a send marker: it is set even when no recipient is configured.

  • offline_warning_sent_atstring (date-time)

    When the health check found the display silent for too long. Cleared by the next fetch of the device.

  • firmware_versionstring

    Firmware version of the display.

  • rssiinteger

    Signal strength of the display in dBm.

  • namestring

    Name of the entity.

  • deletedboolean

    This property is used to mark an entity as deleted / archived

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request PATCH \
  --url https://your-instance.iw-erp.de/api/event/external_display/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "language": "de",
    "notice_text": "Text",
    "device_type": "string",
    "base_bookable": {
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163",
      "address_country": "DE",
      "address_full_country": "DE",
      "main_phone": "+49 511 123456"
    },
    "base_location": {
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163",
      "address_country": "DE",
      "address_full_country": "DE",
      "main_phone": "+49 511 123456"
    },
    "content_profile": "string"
  }
}
'
Response 200 application/json
{
  "id": 42,
  "language": "de",
  "notice_text": "Text",
  "name": "Beispiel",
  "device_type": "string",
  "device_id": "42",
  "previous_secret_valid_until": "2026-10-15T09:30:00+02:00",
  "base_bookable": {
    "id": 42,
    "require_booking_title": true,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel"
  },
  "base_location": {
    "id": 42,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel",
    "image_url": "https://vynst.de"
  },
  "content_profile": "string"
}

Deletes a single ExternalDisplay

DELETE/api/event/external_display/{identifier}

Path parameters

identifierrequiredstring

Responses

200Deletes a single ExternalDisplayExternalDisplay

Show fields (22)
  • idinteger

    Primary key of the external display. Internal ID.

  • device_typestring

    Which kind of device this is, and therefore which driver renders for it. Today only the built-in e-paper renderer exists; a third-party display API becomes an additional type plus an additional driver, nothing else.

  • device_idstring

    Public identifier of the device, travelling in the request path. Deliberately not the secret: paths end up in access logs, proxy logs and support screenshots. Keeping an id there lets a device be identified in a log without the credential riding along.

  • previous_secret_valid_untilstring (date-time)

    Time until the previous secret of the display is still accepted.

  • base_bookableBaseBookable16

    Bookable the display shows.

    Show fields (49)
    • ticketSeatingPlanIdinteger

      Id of the seating plan of the room, also for the public serialization.

    • idinteger

      Primary key of the bookable. Internal ID.

    • tokenstring

      Public token of the bookable. Used in links instead of the ID.

    • bookable_typestring

      Type of the bookable, for example room, court or vehicle.

    • floor_levelstring

      Floor the bookable is on.

    • floor_sizeinteger

      Floor size in square meters.

    • pets_allowedboolean

      Pets are allowed.

    • barrier_freeboolean

      The bookable is barrier-free.

    • cargo_volumeinteger

      Cargo volume in liters.

    • fuel_typestring

      Fuel type of the vehicle.

    • seating_capacityinteger

      Number of seats.

    • has_wait_listboolean

      The bookable has a waiting list once it is fully booked.

    • booking_limitinteger

      Maximum number of bookings.

    • billing_modestring

      How bookings on this bookable are billed: BILLING_MODE_UPFRONT (null = upfront, invoice at booking time) or BILLING_MODE_USAGE (free reservation, deferred billing from real usage data) Also in Default: the member app shows "Nutzung erfassen" only for usage-billed bookables.

    • max_active_bookings_per_userinteger

      Maximum number of active (future, not cancelled) self-service bookings one person may hold on this bookable at the same time. Null = unlimited. Admin bookings are not limited.

    • max_advance_booking_hoursinteger

      Maximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.

    • inventory_managedboolean

      Kept as inventory (Inventar-Ausleihe): the office hands the item over and takes it back, with deposit and reminders. Only used while the setting event_inventory_enabled is on.

    • inventory_depositnumber (float)

      Deposit (Kaution) per piece asked on hand-over. Null = no deposit.

    • require_addressboolean

      The address must be entered when booking.

    • require_contactboolean

      Contact details must be entered when booking.

    • require_billingboolean

      Billing details must be entered when booking.

    • require_booking_titleboolean

      A title must be entered when booking.

    • allow_direct_billingboolean
    • require_ageboolean

      The age must be entered when booking.

    • counter_update_modestring

      How the usage counters of the bookable are updated.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

  • base_locationBaseLocation10

    Location the display is placed at.

    Show fields (29)
    • idinteger

      Primary key of the location. Internal ID.

    • tokenstring

      Public token of the location. Used in links instead of the ID.

    • location_typestring

      Type of the location, for example room, hall or outdoor area.

    • in_contact_centerboolean

      The location is shown in the contact center.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

    • addressstring

      Address as text.

    • address_streetstring

      Street of the address.

    • address_house_numberstring

      House number of the address.

    • address_street_levelstring

      Street and house number of the address.

    • address_costring

      Care-of line of the address.

    • address_citystring

      City of the address.

    • address_zipstring

      Postal code of the address.

    • address_admin_level1string

      First administrative level of the address, e.g. the federal state.

    • address_countrystring

      Country code of the address.

    • address_full_countrystring

      Full name of the country of the address.

    • address_geo_latstring

      Latitude of the address.

    • address_geo_lngstring

      Longitude of the address.

    • address_external_provider_idstring

      field to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE

    • main_phonestring

      Main phone number.

    • main_faxstring

      Main fax number.

    • main_emailstring

      Main e-mail address.

    • websitestring

      Website address.

    • namestring

      Name of the entity.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • short_identifierstring

      Short identifier of the entity.

    • image_urlstring

      URL of the image of the entity.

    • slug_identifierstring

      Slug used in URLs of the entity.

    • is_ui_filterboolean

      This property is used to mark an entity as a filter for the frontend

  • content_profilestring

    How much this particular sign is allowed to say. A door sign is a publicly visible output channel: that the renderer may read the data does not mean the sign may show it. The profile sits on the display, not on the room, because the same room can carry a hallway sign and a staff-side sign.

  • languagestring

    Language every word on this frame is rendered in. Sits on the display, not on the installation: a foyer board in a bilingual building can want English while the door signs behind it stay German.

  • show_booking_qrboolean

    Show a booking QR code when the bookable is free. Only honoured when the bookable actually accepts self-service bookings - a code that leads nowhere is worse than no code.

  • notice_textstring

    Free-text notice, rendered as a footer line.

  • refresh_secondsinteger

    Baseline for the X-Refresh-After header, in seconds. The renderer shortens it when something happens sooner and never exceeds it by much.

  • last_seen_atstring (date-time)

    Last successful fetch by the device. No log table on purpose: a display checks in every few minutes, which is roughly 288 rows per device per day, and only the last one is ever read.

  • battery_voltagenumber (float)

    Battery voltage of the display in volts.

  • battery_warn_voltagenumber (float)

    Battery voltage below which this display counts as needing a new battery. Per display because the hardware differs by a factor of two: a LiPo door sign is flat around 3.5 V, a coin cell OpenDisplay tag around 2.4 V. Empty means the installation-wide default (event_external_display_battery_warn_voltage).

  • battery_warning_sent_atstring (date-time)

    When the health check found the battery below the threshold. Cleared once a reading is clearly above it again, so a replaced battery re-arms the warning. This is the display's maintenance flag as much as a send marker: it is set even when no recipient is configured.

  • offline_warning_sent_atstring (date-time)

    When the health check found the display silent for too long. Cleared by the next fetch of the device.

  • firmware_versionstring

    Firmware version of the display.

  • rssiinteger

    Signal strength of the display in dBm.

  • namestring

    Name of the entity.

  • deletedboolean

    This property is used to mark an entity as deleted / archived

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request DELETE \
  --url https://your-instance.iw-erp.de/api/event/external_display/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "id": 42,
  "language": "de",
  "notice_text": "Text",
  "name": "Beispiel",
  "device_type": "string",
  "device_id": "42",
  "previous_secret_valid_until": "2026-10-15T09:30:00+02:00",
  "base_bookable": {
    "id": 42,
    "require_booking_title": true,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel"
  },
  "base_location": {
    "id": 42,
    "address_street": "Jakobistr. 39",
    "address_city": "Hannover",
    "address_zip": "30163",
    "address_country": "DE",
    "address_full_country": "DE",
    "main_phone": "+49 511 123456",
    "main_email": "lena.hartmann@example.org",
    "name": "Beispiel",
    "image_url": "https://vynst.de"
  },
  "content_profile": "string"
}

Returns what has to be flashed onto a device: its image URL and its secret.

GET/api/event/external_display/{identifier}/credentials

Separate from the detail endpoint so the secret is fetched deliberately and appears in exactly one response, instead of riding along in every list the management UI loads.

Path parameters

identifierrequiredstring

Responses

200Device credentialsobject

Show fields (6)
  • device_idstring
  • image_urlstring
  • secretstring
  • previous_secretstring
  • previous_secret_valid_untilstring
  • refresh_secondsinteger
Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/event/external_display/42/credentials \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
{
  "image_url": "https://vynst.de",
  "device_id": "42",
  "secret": "string",
  "previous_secret": "string",
  "previous_secret_valid_until": "string",
  "refresh_seconds": 1
}

Issues a new secret, keeping the old one valid for a grace period.

POST/api/event/external_display/{identifier}/rotate_secret

Two secrets have to work at once: a rotation that does not reach the device would otherwise leave a dead sign on a customer wall, and nobody notices until someone walks past it.

Path parameters

identifierrequiredstring

Responses

default

Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/event/external_display/42/rotate_secret \
  --header 'x-iw-jwt-token: <TOKEN>'

Renders the current frame as a PNG for the management UI.

GET/api/event/external_display/{identifier}/preview.png

The same pixels the device receives, before packing, so what an admin sees on screen is what is hanging on the wall.

Path parameters

identifierrequiredstring

Query parameters

nowstringRender a different time of the same day (HH:MM)

Responses

200Current frame

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/event/external_display/42/preview.png \
  --header 'x-iw-jwt-token: <TOKEN>'