resource enum Pin appointment, room, desk or rental, or allow any.
Generate coherent reservation lifecycles and deterministic IANA-timezone availability slots with exact capacity and DST behavior.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
resource | enum | default: any allowed: appointment | room | desk | rental | any example: appointment | Pin appointment, room, desk or rental, or allow any. |
status | enum | default: any allowed: pending | confirmed | checkedIn | completed | cancelled | noShow | any example: confirmed | Pin one exact lifecycle state, or allow any. |
timezone | string | default: UTC allowed: 1 – 100 example: Europe/Copenhagen | Case-insensitive canonical IANA timezone used for localStart/localEnd. |
partySize | int | default: 2 allowed: 1 – 12 example: 4 | Exact number of fictional attendees or guests. |
minDurationMinutes | int | default: 30 allowed: 15 – 480 example: 60 | Minimum elapsed booking duration. |
maxDurationMinutes | int | default: 120 allowed: 15 – 480 example: 180 | Maximum elapsed booking duration; must be at least minDurationMinutes. |
windowDays | int | default: 30 allowed: 1 – 90 example: 14 | Past/future lifecycle horizon around asOf. |
asOf | date | example: 2026-07-10T12:00:00.000Z | Replay instant controlling lifecycle state; defaults to the request clock and is echoed. |
resource enum Pin appointment, room, desk or rental, or allow any.
status enum Pin one exact lifecycle state, or allow any.
timezone string Case-insensitive canonical IANA timezone used for localStart/localEnd.
partySize int Exact number of fictional attendees or guests.
minDurationMinutes int Minimum elapsed booking duration.
maxDurationMinutes int Maximum elapsed booking duration; must be at least minDurationMinutes.
windowDays int Past/future lifecycle horizon around asOf.
asOf date Replay instant controlling lifecycle state; defaults to the request clock and is echoed.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 10 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: id,resource | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: cancellationReason | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
id | string | Distinct fictional booking ID. | booking_fixture_0_a12b34c56d78ef |
resource | object | Synthetic resource id, type and display name. | {"id":"room_fixture_12ab34cd","type":"room","name":"Room 1"} |
status | string | Exact booking lifecycle state. | confirmed |
timezone | string | Canonical IANA display timezone. | Europe/Copenhagen |
partySize | integer | Exact requested party size. | 4 |
start | string (ISO 8601) | Absolute booking start instant. | 2026-07-12T08:00:00.000Z |
end | string (ISO 8601) | Absolute booking end instant. | 2026-07-12T09:00:00.000Z |
localStart | string | Start rendered as a timezone-local wall-clock timestamp. | 2026-07-12T10:00:00 |
localEnd | string | End rendered as a timezone-local wall-clock timestamp. | 2026-07-12T11:00:00 |
durationMinutes | integer | Exact elapsed duration. | 60 |
customer | object | Synthetic customer id, name and reserved-domain email. | {"id":"customer_fixture_12ab34cd","name":"Avery Jensen","email":"customer-a1b2c3d4@example.com"} |
createdAt | string (ISO 8601) | Creation before booking start. | 2026-07-01T08:00:00.000Z |
confirmedAt nullable | string (ISO 8601) | Confirmation time for every non-pending state. | 2026-07-01T09:00:00.000Z |
checkedInAt nullable | string (ISO 8601) | Check-in time for checked-in or completed states. | null |
completedAt nullable | string (ISO 8601) | End instant for completed state only. | null |
cancelledAt nullable | string (ISO 8601) | Pre-start cancellation time for cancelled state only. | null |
noShowAt nullable | string (ISO 8601) | End instant for no-show state only. | null |
cancellationReason nullable | string | Fixture reason for cancelled state only. | null |
id string Distinct fictional booking ID.
example: booking_fixture_0_a12b34c56d78ef
resource object Synthetic resource id, type and display name.
example: {"id":"room_fixture_12ab34cd","type":"room","name":"Room 1"}
status string Exact booking lifecycle state.
example: confirmed
timezone string Canonical IANA display timezone.
example: Europe/Copenhagen
partySize integer Exact requested party size.
example: 4
start string (ISO 8601) Absolute booking start instant.
example: 2026-07-12T08:00:00.000Z
end string (ISO 8601) Absolute booking end instant.
example: 2026-07-12T09:00:00.000Z
localStart string Start rendered as a timezone-local wall-clock timestamp.
example: 2026-07-12T10:00:00
localEnd string End rendered as a timezone-local wall-clock timestamp.
example: 2026-07-12T11:00:00
durationMinutes integer Exact elapsed duration.
example: 60
customer object Synthetic customer id, name and reserved-domain email.
example: {"id":"customer_fixture_12ab34cd","name":"Avery Jensen","email":"customer-a1b2c3d4@example.com"}
createdAt string (ISO 8601) Creation before booking start.
example: 2026-07-01T08:00:00.000Z
confirmedAt string (ISO 8601) nullable Confirmation time for every non-pending state.
example: 2026-07-01T09:00:00.000Z
checkedInAt string (ISO 8601) nullable Check-in time for checked-in or completed states.
example: null
completedAt string (ISO 8601) nullable End instant for completed state only.
example: null
cancelledAt string (ISO 8601) nullable Pre-start cancellation time for cancelled state only.
example: null
noShowAt string (ISO 8601) nullable End instant for no-show state only.
example: null
cancellationReason string nullable Fixture reason for cancelled state only.
example: null
/api/bookings?resource=appointment&status=confirmed&timezone=Europe%2FCopenhagen&count=8&seed=42&asOf=2026-07-10T12%3A00%3A00.000Z {
"data": [
{
"id": "booking_fixture_0_8016cfb6a5c85e",
"resource": {
"id": "appointment_fixture_ac58cdd4",
"type": "appointment",
"name": "Appointment 1"
},
"status": "confirmed",
"timezone": "Europe/Copenhagen",
"partySize": 2,
"start": "2026-07-30T19:56:54.531Z",
"end": "2026-07-30T21:09:54.531Z",
"localStart": "2026-07-30T21:56:54",
"localEnd": "2026-07-30T23:09:54",
"durationMinutes": 73,
"customer": {
"id": "customer_fixture_0fb15863c1",
"name": "Kaylie Ziemann",
"email": "customer-d1cff872@example.com"
},
"createdAt": "2026-07-10T12:00:00.000Z",
"confirmedAt": "2026-07-10T12:00:00.000Z",
"checkedInAt": null,
"completedAt": null,
"cancelledAt": null,
"noShowAt": null,
"cancellationReason": null
},
{
"id": "booking_fixture_1_f248abeccba6fd",
"resource": {
"id": "appointment_fixture_45df91c3",
"type": "appointment",
"name": "Appointment 2"
},
"status": "confirmed",
"timezone": "Europe/Copenhagen",
"partySize": 2,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/bookings?resource=room&status=completed&partySize=6&count=5&seed=17&asOf=2026-07-10T12%3A00%3A00.000Z {
"data": [
{
"id": "booking_fixture_0_abf24f73252bc1",
"resource": {
"id": "room_fixture_d3605563",
"type": "room",
"name": "Room 1"
},
"status": "completed",
"timezone": "UTC",
"partySize": 6,
"start": "2026-06-25T18:16:10.902Z",
"end": "2026-06-25T19:32:10.902Z",
"localStart": "2026-06-25T18:16:10",
"localEnd": "2026-06-25T19:32:10",
"durationMinutes": 76,
"customer": {
"id": "customer_fixture_85bfa67721",
"name": "Miss Mary Hilpert-Welch",
"email": "customer-97c4b917@example.com"
},
"createdAt": "2026-06-11T13:16:10.902Z",
"confirmedAt": "2026-06-16T16:21:37.241Z",
"checkedInAt": "2026-06-25T18:41:37.234Z",
"completedAt": "2026-06-25T19:32:10.902Z",
"cancelledAt": null,
"noShowAt": null,
"cancellationReason": null
},
{
"id": "booking_fixture_1_7eea1d421a411b",
"resource": {
"id": "room_fixture_b239200a",
"type": "room",
"name": "Room 2"
},
"status": "completed",
"timezone": "UTC",
"partySize": 6,
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} | Parameter | Type | Default & allowed | Description |
|---|---|---|---|
date
required
| date | example: 2026-07-13 | Date-only local calendar value (YYYY-MM-DD), restricted to 1970–2100. Offset timestamps that resolve away from UTC midnight are rejected instead of changing the requested day. |
timezone | string | default: UTC allowed: 1 – 100 example: Europe/Copenhagen | Case-insensitive canonical IANA timezone for the local date/window. |
resource | enum | default: appointment allowed: appointment | room | desk | rental example: room | Fixture resource type used to derive capacity occupancy. |
openHour | int | default: 9 allowed: 0 – 22 example: 8 | Inclusive local opening hour. |
closeHour | int | default: 17 allowed: 1 – 23 example: 18 | Exclusive local closing boundary; must exceed openHour. |
slotMinutes | int | default: 30 allowed: 15 – 120 example: 30 | Start-time interval measured on the local wall clock. |
durationMinutes | int | default: 60 allowed: 15 – 480 example: 60 | Exact elapsed duration; must fit inside opening hours. |
capacity | int | default: 1 allowed: 1 – 20 example: 4 | Exact capacity shared by every slot. |
date date required Date-only local calendar value (YYYY-MM-DD), restricted to 1970–2100. Offset timestamps that resolve away from UTC midnight are rejected instead of changing the requested day.
timezone string Case-insensitive canonical IANA timezone for the local date/window.
resource enum Fixture resource type used to derive capacity occupancy.
openHour int Inclusive local opening hour.
closeHour int Exclusive local closing boundary; must exceed openHour.
slotMinutes int Start-time interval measured on the local wall clock.
durationMinutes int Exact elapsed duration; must fit inside opening hours.
capacity int Exact capacity shared by every slot.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: date,timezone | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: slots | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
date | string (YYYY-MM-DD) | Requested local calendar date. | 2026-07-13 |
timezone | string | Canonical IANA timezone. | Europe/Copenhagen |
resource | string | Fixture resource type. | room |
window | object | Resolved opening, interval and duration controls. | {"openHour":8,"closeHour":18,"slotMinutes":30,"durationMinutes":60} |
slotCount | integer | Exact returned slot count. | 19 |
availableCount | integer | Slots with remaining capacity above zero. | 14 |
slots | object[] | Ordered absolute slots with local labels and exact capacity arithmetic. | [{"start":"2026-07-13T06:00:00.000Z","end":"2026-07-13T07:00:00.000Z","localStart":"2026-07-13T08:00:00","localEnd":"2026-07-13T09:00:00","offsetMinutes":120,"capacity":4,"booked":1,"remaining":3,"available":true}] |
date string (YYYY-MM-DD) Requested local calendar date.
example: 2026-07-13
timezone string Canonical IANA timezone.
example: Europe/Copenhagen
resource string Fixture resource type.
example: room
window object Resolved opening, interval and duration controls.
example: {"openHour":8,"closeHour":18,"slotMinutes":30,"durationMinutes":60}
slotCount integer Exact returned slot count.
example: 19
availableCount integer Slots with remaining capacity above zero.
example: 14
slots object[] Ordered absolute slots with local labels and exact capacity arithmetic.
example: [{"start":"2026-07-13T06:00:00.000Z","end":"2026-07-13T07:00:00.000Z","localStart":"2026-07-13T08:00:00","localEnd":"2026-07-13T09:00:00","offsetMinutes":120,"capacity":4,"booked":1,"remaining":3,"available":true}]
/api/bookings/availability?date=2026-07-13&timezone=Europe%2FCopenhagen&resource=room&openHour=8&closeHour=18&capacity=4 {
"data": {
"date": "2026-07-13",
"timezone": "Europe/Copenhagen",
"resource": "room",
"window": {
"openHour": 8,
"closeHour": 18,
"slotMinutes": 30,
"durationMinutes": 60
},
"slotCount": 19,
"availableCount": 15,
"slots": [
{
"start": "2026-07-13T06:00:00.000Z",
"end": "2026-07-13T07:00:00.000Z",
"localStart": "2026-07-13T08:00:00",
"localEnd": "2026-07-13T09:00:00",
"offsetMinutes": 120,
"capacity": 4,
"booked": 3,
"remaining": 1,
"available": true
},
{
"start": "2026-07-13T06:30:00.000Z",
"end": "2026-07-13T07:30:00.000Z",
"localStart": "2026-07-13T08:30:00",
"localEnd": "2026-07-13T09:30:00",
"offsetMinutes": 120,
"capacity": 4,
"booked": 0,
"remaining": 4,
"available": true
},
{
"start": "2026-07-13T07:00:00.000Z",
"end": "2026-07-13T08:00:00.000Z",
"localStart": "2026-07-13T09:00:00",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/bookings/availability?date=2026-11-01&timezone=America%2FNew_York&openHour=0&closeHour=6&slotMinutes=30&durationMinutes=30 {
"data": {
"date": "2026-11-01",
"timezone": "America/New_York",
"resource": "appointment",
"window": {
"openHour": 0,
"closeHour": 6,
"slotMinutes": 30,
"durationMinutes": 30
},
"slotCount": 14,
"availableCount": 7,
"slots": [
{
"start": "2026-11-01T04:00:00.000Z",
"end": "2026-11-01T04:30:00.000Z",
"localStart": "2026-11-01T00:00:00",
"localEnd": "2026-11-01T00:30:00",
"offsetMinutes": -240,
"capacity": 1,
"booked": 1,
"remaining": 0,
"available": false
},
{
"start": "2026-11-01T04:30:00.000Z",
"end": "2026-11-01T05:00:00.000Z",
"localStart": "2026-11-01T00:30:00",
"localEnd": "2026-11-01T01:00:00",
"offsetMinutes": -240,
"capacity": 1,
"booked": 0,
"remaining": 1,
"available": true
},
{
"start": "2026-11-01T05:00:00.000Z",
"end": "2026-11-01T05:30:00.000Z",
"localStart": "2026-11-01T01:00:00",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Generates vendor-neutral fictional booking lifecycles for appointments, rooms, desks and rentals. Each status owns a strict timestamp mask: future pending/confirmed bookings have no attendance dates, checked-in bookings contain the replay instant, completed and no-show bookings end no later than asOf, and cancellation metadata exists only for cancelled bookings.
The /availability route is a deterministic compute fixture, not a live inventory feed. It resolves each bounded wall-clock start against the requested IANA timezone, so nonexistent minutes during a DST jump are absent and repeated minutes during a fold remain distinct absolute slots. Capacity, booked and remaining values reconcile exactly for every slot.
All customer identities are synthetic and use reserved domains. Availability generates at most 92 requested wall-clock labels before resolving real gap/fold candidates, and its date range is deliberately 1970–2100. Lifecycle records contain no unbounded event history.
Yes. Every lifecycle state has an exclusive, tested date mask relative to the echoed asOf anchor.
Yes. Slots are discovered from absolute instants in the selected IANA zone, so DST gaps are omitted and folded local times remain distinct instants.
No. It is deterministic mock capacity data for UI and integration tests, never a claim about a real resource.
Generate coherent fake calendar events with bounded durations, attendees, IANA timezones and correct timed or all-day date shapes.
Live IANA offsets, DST transitions, local-time ambiguity resolution and exact instant conversion — no guessed wall-clock mappings.
Add, count or inspect business days using verified national public-holiday rules for 61 countries, including observed substitute days.
Generate coherent fake authentication sessions and login attempts with exact expiry, revocation, MFA, risk and outcome states.
Deterministic offset and opaque-cursor pagination fixtures with exact totals, stable sorting and no duplicated or skipped records.