Bürowerk
availability resolve
Give it a search window, a meeting length, and for each participant a list of busy blocks — start and end, nothing else — and it returns the windows in which the meeting fits. Each participant carries their own IANA timezone and working hours, so nine-to-five means nine-to-five where they are, across daylight saving changes, and a meeting is only offered when it lies entirely inside one working-hours block for everyone counted as present. Windows are returned with the participants who can.
POST https://buero.halowerk.com/v1/availability-resolveEingaben
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| participants | array | Ja | One entry per person. Identifiers are free text and need not be real names. |
| window | object | Ja | The search window. Every load figure is measured over exactly this span for everyone. |
| duration_minutes | integer | Ja | How long the meeting needs to be. |
| granularity_minutes | integer | Nein | Step of the candidate grid. Start times fall on this grid. |
| default_timezone | string | Nein | Timezone for participants that do not name one. |
| working_hours | object | Nein | Default working hours for participants that do not name their own. Omit both this and per-participant hours to search around the clock. |
| ignore_working_hours | boolean | Nein | Search the whole window regardless of working hours. |
| min_attendees | integer | Nein | Also return windows where only this many can attend. Default: everyone who is not optional. |
| max_results | integer | Nein | How many windows to return. What is dropped is counted. |
| output_timezone | string | Nein | Additionally render every returned time in this zone. Defaults to default_timezone. |
Vollständiges Eingabeschema anzeigen
{
"type": "object",
"required": [
"participants",
"window",
"duration_minutes"
],
"additionalProperties": false,
"properties": {
"participants": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"description": "One entry per person. Identifiers are free text and need not be real names.",
"items": {
"type": "object",
"required": [
"id"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Any label, unique within the request. \"a\" is fine."
},
"busy": {
"type": "array",
"maxItems": 300,
"description": "Busy blocks. Overlapping blocks are merged.",
"items": {
"type": "object",
"required": [
"start",
"end"
],
"additionalProperties": false,
"properties": {
"start": {
"type": "string",
"maxLength": 40,
"description": "ISO 8601 with offset or Z."
},
"end": {
"type": "string",
"maxLength": 40,
"description": "ISO 8601 with offset or Z."
}
}
}
},
"timezone": {
"type": "string",
"maxLength": 60,
"description": "IANA zone for this person, e.g. Europe/Berlin. Falls back to the request default."
},
"working_hours": {
"type": "object",
"additionalProperties": false,
"description": "Working hours in this person local time. Omit to use the request default.",
"properties": {
"start": {
"type": "string",
"maxLength": 5,
"description": "HH:MM, e.g. 09:00."
},
"end": {
"type": "string",
"maxLength": 5,
"description": "HH:MM. An end before the start means the block runs past midnight."
},
"days": {
"type": "array",
"maxItems": 7,
"items": {
"type": "integer",
"minimum": 0,
"maximum": 6
},
"description": "0 is Sunday, 6 is Saturday. Default Monday to Friday."
}
}
},
"optional": {
"type": "boolean",
"default": false,
"description": "Optional participants may be missing from a returned window."
}
}
}
},
"window": {
"type": "object",
"required": [
"start",
"end"
],
"additionalProperties": false,
"description": "The search window. Every load figure is measured over exactly this span for everyone.",
"properties": {
"start": {
"type": "string",
"maxLength": 40,
"description": "ISO 8601."
},
"end": {
"type": "string",
"maxLength": 40,
"description": "ISO 8601."
}
}
},
"duration_minutes": {
"type": "integer",
"minimum": 5,
"maximum": 1440,
"description": "How long the meeting needs to be."
},
"granularity_minutes": {
"type": "integer",
"enum": [
5,
10,
15,
20,
30,
60
],
"default": 15,
"description": "Step of the candidate grid. Start times fall on this grid."
},
"default_timezone": {
"type": "string",
"maxLength": 60,
"default": "UTC",
"description": "Timezone for participants that do not name one."
},
"working_hours": {
"type": "object",
"additionalProperties": false,
"description": "Default working hours for participants that do not name their own. Omit both this and per-participant hours to search around the clock.",
"properties": {
"start": {
"type": "string",
"maxLength": 5
},
"end": {
"type": "string",
"maxLength": 5
},
"days": {
"type": "array",
"maxItems": 7,
"items": {
"type": "integer",
"minimum": 0,
"maximum": 6
}
}
}
},
"ignore_working_hours": {
"type": "boolean",
"default": false,
"description": "Search the whole window regardless of working hours."
},
"min_attendees": {
"type": "integer",
"minimum": 1,
"description": "Also return windows where only this many can attend. Default: everyone who is not optional."
},
"max_results": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20,
"description": "How many windows to return. What is dropped is counted."
},
"output_timezone": {
"type": "string",
"maxLength": 60,
"description": "Additionally render every returned time in this zone. Defaults to default_timezone."
}
}
}Veröffentlichtes Eingabebeispiel
{
"participants": [
{
"id": "a",
"timezone": "Europe/Berlin",
"busy": [
{
"start": "2026-08-17T08:00:00Z",
"end": "2026-08-17T10:00:00Z"
}
]
},
{
"id": "b",
"timezone": "America/New_York",
"busy": []
}
],
"window": {
"start": "2026-08-17T00:00:00Z",
"end": "2026-08-19T00:00:00Z"
},
"duration_minutes": 60,
"working_hours": {
"start": "09:00",
"end": "17:00"
},
"output_timezone": "Europe/Berlin"
}Ergebnis & Dokumentation
Maschinenlesbare Dokumentation dieses Hubs
Quelle dieser Seite: der veröffentlichte HALOWERK-Katalog. Stand: 2026-11-01, 15:19 UTC.
Weitere Endpunkte dieses Hubs
- Bürowerk0,004 USDC
mail / allowed domain partition
POSThttps://buero.halowerk.com/v1/baumarkt/mail/allowed-domain-partitionPartner campaign: partition rows by explicitly allowed domains. Reuses the existing email-list-clean motor. No SMTP probes or mailbox existence/catch-all proof. Local part case, plus and dots are never folded. Up to500 source rows;65s engin
- Bürowerk0,004 USDC
mail / baseline added
POSThttps://buero.halowerk.com/v1/baumarkt/mail/baseline-addedCRM synchronization: addresses newly appearing after baseline. Reuses the existing email-list-clean motor. No SMTP probes or mailbox existence/catch-all proof. Local part case, plus and dots are never folded. Up to500 source rows;65s engine
- Bürowerk0,004 USDC
mail / baseline removed
POSThttps://buero.halowerk.com/v1/baumarkt/mail/baseline-removedCRM synchronization: baseline addresses missing in current import. Reuses the existing email-list-clean motor. No SMTP probes or mailbox existence/catch-all proof. Local part case, plus and dots are never folded. Up to500 source rows;65s en