BaseBookableUsageCounter
Returns a list of base bookable usage counter entries.
GET/api/event/base_bookable_usage_counter
Query parameters
idinteger | |
deletedboolean | This property is used to mark an entity as deleted / archived |
namestring | |
tokenstring | |
baseBookablestring | |
baseBookableComponentstring | |
searchStringstring | text to search for in the list |
orderFieldNamestring | name of the order field |
orderFieldSortstring | sorting modeAllowed: DESCASC |
pageinteger | page of the list |
pageSizeinteger | number of entries for each page |
withMaxPageNumberstring | returns the number of pages available as a header if this is set |
Responses
200Returns a list of BaseBookableUsageCounter objectsarray<BaseBookableUsageCounter>
Show fields (11)
idintegerPrimary key of the usage counter. Internal ID.
tokenstringPublic token of the usage counter. Used instead of the ID.
counter_valuenumber (float)Value of the usage counter.
counter_unitstringUnit of the usage counter, for example hours or pieces.
use_real_usage_databooleanThe counter uses the recorded real usage instead of the planned value.
base_bookableBaseBookable16Bookable the counter belongs to.
Show fields (49)
ticketSeatingPlanIdintegerId of the seating plan of the room, also for the public serialization.
idintegerPrimary key of the bookable. Internal ID.
tokenstringPublic token of the bookable. Used in links instead of the ID.
bookable_typestringType of the bookable, for example room, court or vehicle.
floor_levelstringFloor the bookable is on.
floor_sizeintegerFloor size in square meters.
pets_allowedbooleanPets are allowed.
barrier_freebooleanThe bookable is barrier-free.
cargo_volumeintegerCargo volume in liters.
fuel_typestringFuel type of the vehicle.
seating_capacityintegerNumber of seats.
has_wait_listbooleanThe bookable has a waiting list once it is fully booked.
booking_limitintegerMaximum number of bookings.
billing_modestringHow 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_userintegerMaximum 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_hoursintegerMaximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.
inventory_managedbooleanKept 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_addressbooleanThe address must be entered when booking.
require_contactbooleanContact details must be entered when booking.
require_billingbooleanBilling details must be entered when booking.
require_booking_titlebooleanA title must be entered when booking.
allow_direct_billingbooleanrequire_agebooleanThe age must be entered when booking.
counter_update_modestringHow 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.
addressstringAddress as text.
address_streetstringStreet of the address.
address_house_numberstringHouse number of the address.
address_street_levelstringStreet and house number of the address.
address_costringCare-of line of the address.
address_citystringCity of the address.
address_zipstringPostal code of the address.
address_admin_level1stringFirst administrative level of the address, e.g. the federal state.
address_countrystringCountry code of the address.
address_full_countrystringFull name of the country of the address.
address_geo_latstringLatitude of the address.
address_geo_lngstringLongitude of the address.
address_external_provider_idstringfield to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE
main_phonestringMain phone number.
main_faxstringMain fax number.
main_emailstringMain e-mail address.
websitestringWebsite address.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
short_identifierstringShort identifier of the entity.
image_urlstringURL of the image of the entity.
slug_identifierstringSlug used in URLs of the entity.
base_bookable_componentBaseBookableComponentComponent of the bookable the counter belongs to.
Show fields (11)
idintegerPrimary key of the component. Internal ID.
tokenstringPublic token of the component. Used instead of the ID.
maintenance_due_datestring (date-time)Date the next maintenance is due.
counter_thresholdstringCounter value at which maintenance is due.
counter_unitstringUnit of the counter, for example hours or kilometers.
base_bookableBaseBookable16Bookable the component belongs to.
expiry_warning_sent_atstring (date-time)Set when an expiry warning was sent; cleared when the due date or threshold changes so the warning re-arms (see BookableComponentExpiryCheckCommand)
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/event_base_bookable_usage_counter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await EventBaseBookableUsageCounterController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"name": "Beispiel",
"token": "string",
"counter_value": 1.5,
"counter_unit": "string",
"use_real_usage_data": true,
"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_bookable_component": {
"id": 42,
"name": "Beispiel",
"token": "string",
"maintenance_due_date": "2026-10-15T09:30:00+02:00",
"counter_threshold": "string",
"counter_unit": "string",
"expiry_warning_sent_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}
]Creates a new base bookable usage counter entry.
POST/api/event/base_bookable_usage_counter
Request body application/json
dataBaseBookableUsageCounter2Show fields (1)
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Add a new BaseBookableUsageCounterBaseBookableUsageCounter
Show fields (11)
idintegerPrimary key of the usage counter. Internal ID.
tokenstringPublic token of the usage counter. Used instead of the ID.
counter_valuenumber (float)Value of the usage counter.
counter_unitstringUnit of the usage counter, for example hours or pieces.
use_real_usage_databooleanThe counter uses the recorded real usage instead of the planned value.
base_bookableBaseBookable16Bookable the counter belongs to.
Show fields (49)
ticketSeatingPlanIdintegerId of the seating plan of the room, also for the public serialization.
idintegerPrimary key of the bookable. Internal ID.
tokenstringPublic token of the bookable. Used in links instead of the ID.
bookable_typestringType of the bookable, for example room, court or vehicle.
floor_levelstringFloor the bookable is on.
floor_sizeintegerFloor size in square meters.
pets_allowedbooleanPets are allowed.
barrier_freebooleanThe bookable is barrier-free.
cargo_volumeintegerCargo volume in liters.
fuel_typestringFuel type of the vehicle.
seating_capacityintegerNumber of seats.
has_wait_listbooleanThe bookable has a waiting list once it is fully booked.
booking_limitintegerMaximum number of bookings.
billing_modestringHow 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_userintegerMaximum 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_hoursintegerMaximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.
inventory_managedbooleanKept 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_addressbooleanThe address must be entered when booking.
require_contactbooleanContact details must be entered when booking.
require_billingbooleanBilling details must be entered when booking.
require_booking_titlebooleanA title must be entered when booking.
allow_direct_billingbooleanrequire_agebooleanThe age must be entered when booking.
counter_update_modestringHow 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.
addressstringAddress as text.
address_streetstringStreet of the address.
address_house_numberstringHouse number of the address.
address_street_levelstringStreet and house number of the address.
address_costringCare-of line of the address.
address_citystringCity of the address.
address_zipstringPostal code of the address.
address_admin_level1stringFirst administrative level of the address, e.g. the federal state.
address_countrystringCountry code of the address.
address_full_countrystringFull name of the country of the address.
address_geo_latstringLatitude of the address.
address_geo_lngstringLongitude of the address.
address_external_provider_idstringfield to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE
main_phonestringMain phone number.
main_faxstringMain fax number.
main_emailstringMain e-mail address.
websitestringWebsite address.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
short_identifierstringShort identifier of the entity.
image_urlstringURL of the image of the entity.
slug_identifierstringSlug used in URLs of the entity.
base_bookable_componentBaseBookableComponentComponent of the bookable the counter belongs to.
Show fields (11)
idintegerPrimary key of the component. Internal ID.
tokenstringPublic token of the component. Used instead of the ID.
maintenance_due_datestring (date-time)Date the next maintenance is due.
counter_thresholdstringCounter value at which maintenance is due.
counter_unitstringUnit of the counter, for example hours or kilometers.
base_bookableBaseBookable16Bookable the component belongs to.
expiry_warning_sent_atstring (date-time)Set when an expiry warning was sent; cleared when the due date or threshold changes so the warning re-arms (see BookableComponentExpiryCheckCommand)
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
curl --request POST \
--url https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"deleted": true
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({data: {deleted: true}})
};
fetch('https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter"
payload = { "data": { "deleted": True } }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter', [
'body' => '{"data":{"deleted":true}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"deleted\":true}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"deleted\":true}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter"
payload := strings.NewReader("{\"data\":{\"deleted\":true}}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/event_base_bookable_usage_counter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/event_base_bookable_usage_counter.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await EventBaseBookableUsageCounterController.post(EventBaseBookableUsageCounter.fromJson({
"deleted": true
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"name": "Beispiel",
"token": "string",
"counter_value": 1.5,
"counter_unit": "string",
"use_real_usage_data": true,
"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_bookable_component": {
"id": 42,
"name": "Beispiel",
"token": "string",
"maintenance_due_date": "2026-10-15T09:30:00+02:00",
"counter_threshold": "string",
"counter_unit": "string",
"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"
},
"expiry_warning_sent_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Returns a single base bookable usage counter entry.
GET/api/event/base_bookable_usage_counter/{identifier}
Path parameters
identifierrequiredstring |
Responses
200Returns a single BaseBookableUsageCounterBaseBookableUsageCounter
Show fields (11)
idintegerPrimary key of the usage counter. Internal ID.
tokenstringPublic token of the usage counter. Used instead of the ID.
counter_valuenumber (float)Value of the usage counter.
counter_unitstringUnit of the usage counter, for example hours or pieces.
use_real_usage_databooleanThe counter uses the recorded real usage instead of the planned value.
base_bookableBaseBookable16Bookable the counter belongs to.
Show fields (49)
ticketSeatingPlanIdintegerId of the seating plan of the room, also for the public serialization.
idintegerPrimary key of the bookable. Internal ID.
tokenstringPublic token of the bookable. Used in links instead of the ID.
bookable_typestringType of the bookable, for example room, court or vehicle.
floor_levelstringFloor the bookable is on.
floor_sizeintegerFloor size in square meters.
pets_allowedbooleanPets are allowed.
barrier_freebooleanThe bookable is barrier-free.
cargo_volumeintegerCargo volume in liters.
fuel_typestringFuel type of the vehicle.
seating_capacityintegerNumber of seats.
has_wait_listbooleanThe bookable has a waiting list once it is fully booked.
booking_limitintegerMaximum number of bookings.
billing_modestringHow 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_userintegerMaximum 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_hoursintegerMaximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.
inventory_managedbooleanKept 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_addressbooleanThe address must be entered when booking.
require_contactbooleanContact details must be entered when booking.
require_billingbooleanBilling details must be entered when booking.
require_booking_titlebooleanA title must be entered when booking.
allow_direct_billingbooleanrequire_agebooleanThe age must be entered when booking.
counter_update_modestringHow 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.
addressstringAddress as text.
address_streetstringStreet of the address.
address_house_numberstringHouse number of the address.
address_street_levelstringStreet and house number of the address.
address_costringCare-of line of the address.
address_citystringCity of the address.
address_zipstringPostal code of the address.
address_admin_level1stringFirst administrative level of the address, e.g. the federal state.
address_countrystringCountry code of the address.
address_full_countrystringFull name of the country of the address.
address_geo_latstringLatitude of the address.
address_geo_lngstringLongitude of the address.
address_external_provider_idstringfield to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE
main_phonestringMain phone number.
main_faxstringMain fax number.
main_emailstringMain e-mail address.
websitestringWebsite address.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
short_identifierstringShort identifier of the entity.
image_urlstringURL of the image of the entity.
slug_identifierstringSlug used in URLs of the entity.
base_bookable_componentBaseBookableComponentComponent of the bookable the counter belongs to.
Show fields (11)
idintegerPrimary key of the component. Internal ID.
tokenstringPublic token of the component. Used instead of the ID.
maintenance_due_datestring (date-time)Date the next maintenance is due.
counter_thresholdstringCounter value at which maintenance is due.
counter_unitstringUnit of the counter, for example hours or kilometers.
base_bookableBaseBookable16Bookable the component belongs to.
expiry_warning_sent_atstring (date-time)Set when an expiry warning was sent; cleared when the due date or threshold changes so the warning re-arms (see BookableComponentExpiryCheckCommand)
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
curl --request GET \
--url https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/event_base_bookable_usage_counter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await EventBaseBookableUsageCounterController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"name": "Beispiel",
"token": "string",
"counter_value": 1.5,
"counter_unit": "string",
"use_real_usage_data": true,
"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_bookable_component": {
"id": 42,
"name": "Beispiel",
"token": "string",
"maintenance_due_date": "2026-10-15T09:30:00+02:00",
"counter_threshold": "string",
"counter_unit": "string",
"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"
},
"expiry_warning_sent_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Updates an existing base bookable usage counter entry.
PUT/api/event/base_bookable_usage_counter/{identifier}
Path parameters
identifierrequiredstring |
Request body application/json
dataBaseBookableUsageCounter2Show fields (1)
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Update a BaseBookableUsageCounterBaseBookableUsageCounter
Show fields (11)
idintegerPrimary key of the usage counter. Internal ID.
tokenstringPublic token of the usage counter. Used instead of the ID.
counter_valuenumber (float)Value of the usage counter.
counter_unitstringUnit of the usage counter, for example hours or pieces.
use_real_usage_databooleanThe counter uses the recorded real usage instead of the planned value.
base_bookableBaseBookable16Bookable the counter belongs to.
Show fields (49)
ticketSeatingPlanIdintegerId of the seating plan of the room, also for the public serialization.
idintegerPrimary key of the bookable. Internal ID.
tokenstringPublic token of the bookable. Used in links instead of the ID.
bookable_typestringType of the bookable, for example room, court or vehicle.
floor_levelstringFloor the bookable is on.
floor_sizeintegerFloor size in square meters.
pets_allowedbooleanPets are allowed.
barrier_freebooleanThe bookable is barrier-free.
cargo_volumeintegerCargo volume in liters.
fuel_typestringFuel type of the vehicle.
seating_capacityintegerNumber of seats.
has_wait_listbooleanThe bookable has a waiting list once it is fully booked.
booking_limitintegerMaximum number of bookings.
billing_modestringHow 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_userintegerMaximum 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_hoursintegerMaximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.
inventory_managedbooleanKept 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_addressbooleanThe address must be entered when booking.
require_contactbooleanContact details must be entered when booking.
require_billingbooleanBilling details must be entered when booking.
require_booking_titlebooleanA title must be entered when booking.
allow_direct_billingbooleanrequire_agebooleanThe age must be entered when booking.
counter_update_modestringHow 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.
addressstringAddress as text.
address_streetstringStreet of the address.
address_house_numberstringHouse number of the address.
address_street_levelstringStreet and house number of the address.
address_costringCare-of line of the address.
address_citystringCity of the address.
address_zipstringPostal code of the address.
address_admin_level1stringFirst administrative level of the address, e.g. the federal state.
address_countrystringCountry code of the address.
address_full_countrystringFull name of the country of the address.
address_geo_latstringLatitude of the address.
address_geo_lngstringLongitude of the address.
address_external_provider_idstringfield to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE
main_phonestringMain phone number.
main_faxstringMain fax number.
main_emailstringMain e-mail address.
websitestringWebsite address.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
short_identifierstringShort identifier of the entity.
image_urlstringURL of the image of the entity.
slug_identifierstringSlug used in URLs of the entity.
base_bookable_componentBaseBookableComponentComponent of the bookable the counter belongs to.
Show fields (11)
idintegerPrimary key of the component. Internal ID.
tokenstringPublic token of the component. Used instead of the ID.
maintenance_due_datestring (date-time)Date the next maintenance is due.
counter_thresholdstringCounter value at which maintenance is due.
counter_unitstringUnit of the counter, for example hours or kilometers.
base_bookableBaseBookable16Bookable the component belongs to.
expiry_warning_sent_atstring (date-time)Set when an expiry warning was sent; cleared when the due date or threshold changes so the warning re-arms (see BookableComponentExpiryCheckCommand)
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
curl --request PUT \
--url https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"deleted": true
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({data: {deleted: true}})
};
fetch('https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"
payload = { "data": { "deleted": True } }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42', [
'body' => '{"data":{"deleted":true}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"deleted\":true}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"deleted\":true}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42")
.put(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"
payload := strings.NewReader("{\"data\":{\"deleted\":true}}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/event_base_bookable_usage_counter_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/event_base_bookable_usage_counter.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await EventBaseBookableUsageCounterController.put(EventBaseBookableUsageCounter.fromJson({
"deleted": true
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"name": "Beispiel",
"token": "string",
"counter_value": 1.5,
"counter_unit": "string",
"use_real_usage_data": true,
"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_bookable_component": {
"id": 42,
"name": "Beispiel",
"token": "string",
"maintenance_due_date": "2026-10-15T09:30:00+02:00",
"counter_threshold": "string",
"counter_unit": "string",
"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"
},
"expiry_warning_sent_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}Updates an existing base bookable usage counter entry.
PATCH/api/event/base_bookable_usage_counter/{identifier}
Path parameters
identifierrequiredstring |
Request body application/json
dataBaseBookableUsageCounter2Show fields (1)
deletedbooleanThis property is used to mark an entity as deleted / archived
Responses
200Update a BaseBookableUsageCounterBaseBookableUsageCounter
Show fields (11)
idintegerPrimary key of the usage counter. Internal ID.
tokenstringPublic token of the usage counter. Used instead of the ID.
counter_valuenumber (float)Value of the usage counter.
counter_unitstringUnit of the usage counter, for example hours or pieces.
use_real_usage_databooleanThe counter uses the recorded real usage instead of the planned value.
base_bookableBaseBookable16Bookable the counter belongs to.
Show fields (49)
ticketSeatingPlanIdintegerId of the seating plan of the room, also for the public serialization.
idintegerPrimary key of the bookable. Internal ID.
tokenstringPublic token of the bookable. Used in links instead of the ID.
bookable_typestringType of the bookable, for example room, court or vehicle.
floor_levelstringFloor the bookable is on.
floor_sizeintegerFloor size in square meters.
pets_allowedbooleanPets are allowed.
barrier_freebooleanThe bookable is barrier-free.
cargo_volumeintegerCargo volume in liters.
fuel_typestringFuel type of the vehicle.
seating_capacityintegerNumber of seats.
has_wait_listbooleanThe bookable has a waiting list once it is fully booked.
booking_limitintegerMaximum number of bookings.
billing_modestringHow 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_userintegerMaximum 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_hoursintegerMaximum number of hours a self-service booking may start in the future. Null = unlimited. Admin bookings are not limited.
inventory_managedbooleanKept 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_addressbooleanThe address must be entered when booking.
require_contactbooleanContact details must be entered when booking.
require_billingbooleanBilling details must be entered when booking.
require_booking_titlebooleanA title must be entered when booking.
allow_direct_billingbooleanrequire_agebooleanThe age must be entered when booking.
counter_update_modestringHow 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.
addressstringAddress as text.
address_streetstringStreet of the address.
address_house_numberstringHouse number of the address.
address_street_levelstringStreet and house number of the address.
address_costringCare-of line of the address.
address_citystringCity of the address.
address_zipstringPostal code of the address.
address_admin_level1stringFirst administrative level of the address, e.g. the federal state.
address_countrystringCountry code of the address.
address_full_countrystringFull name of the country of the address.
address_geo_latstringLatitude of the address.
address_geo_lngstringLongitude of the address.
address_external_provider_idstringfield to store the external provider id of the address. e.g. Google Maps PlaceID like google:ChIJVcKw5r90sEcRhdjNq6NItqE
main_phonestringMain phone number.
main_faxstringMain fax number.
main_emailstringMain e-mail address.
websitestringWebsite address.
namestringName of the entity.
deletedbooleanThis property is used to mark an entity as deleted / archived
short_identifierstringShort identifier of the entity.
image_urlstringURL of the image of the entity.
slug_identifierstringSlug used in URLs of the entity.
base_bookable_componentBaseBookableComponentComponent of the bookable the counter belongs to.
Show fields (11)
idintegerPrimary key of the component. Internal ID.
tokenstringPublic token of the component. Used instead of the ID.
maintenance_due_datestring (date-time)Date the next maintenance is due.
counter_thresholdstringCounter value at which maintenance is due.
counter_unitstringUnit of the counter, for example hours or kilometers.
base_bookableBaseBookable16Bookable the component belongs to.
expiry_warning_sent_atstring (date-time)Set when an expiry warning was sent; cleared when the due date or threshold changes so the warning re-arms (see BookableComponentExpiryCheckCommand)
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
namestringName of the entity.
curl --request PATCH \
--url https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"deleted": true
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({data: {deleted: true}})
};
fetch('https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"
payload = { "data": { "deleted": True } }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42', [
'body' => '{"data":{"deleted":true}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"deleted\":true}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"deleted\":true}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42")
.patch(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42"
payload := strings.NewReader("{\"data\":{\"deleted\":true}}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with package:http (no controller in the iw_erp_api package)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.patch(
Uri.parse('https://your-instance.iw-erp.de/api/event/base_bookable_usage_counter/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"deleted": true
}
}),
);
print(response.body);{
"id": 42,
"name": "Beispiel",
"token": "string",
"counter_value": 1.5,
"counter_unit": "string",
"use_real_usage_data": true,
"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_bookable_component": {
"id": 42,
"name": "Beispiel",
"token": "string",
"maintenance_due_date": "2026-10-15T09:30:00+02:00",
"counter_threshold": "string",
"counter_unit": "string",
"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"
},
"expiry_warning_sent_at": "2026-10-15T09:30:00+02:00",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
},
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00"
}