From 672fc30d7e46970cec5a5e05787e518da6166d1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 16 Sep 2026 15:25:50 +0200 Subject: [PATCH] doc: update bpn xml api reference --- docs/bpn-xml-api-reference.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/bpn-xml-api-reference.md b/docs/bpn-xml-api-reference.md index c7dcacf..a644d40 100644 --- a/docs/bpn-xml-api-reference.md +++ b/docs/bpn-xml-api-reference.md @@ -166,6 +166,18 @@ genuinely missing, which is a useful way to audit an address: the placeholder ac fails on `Telefon-Mobil` and `Nationalität` because its `Vorgang_Details` record has only `telefonprivat` and no `nationalitaet`. +**Participants are held to less than the Anmelder** (measured 2026-09-16 on 2036, travel 12500, from a +real step-3 `Anfrage`). Once a room is present, every `teilnehmer` needs a `Mail-Adresse`, children +included: without `kommunikation` the answer is `650 … 1.Teilnehmer-Mail-Adresse, 2.Teilnehmer-Mail-Adresse`. +`telefonmobil` and an empty `anschrift` pass for participants. An email identical to the Anmelder's is +accepted. The field list above (Strasse, Plz, Ort, Telefon-Mobil for every participant) was measured on +the placeholder records and is stricter than what BusPro applies to ordinary participants. + +**The Anmelder does not have to travel.** An `` that matches no `teilnehmer` (a parent booking +for their children) returns `möglich` with the same price as the control where the Anmelder is +`teilnehmer 1`. Whether the committed booking binds to the Anmelder's existing customer record has not +been measured yet. + Note `650` again: both of those are hard rejections delivered under the code `Notification::isError()` treats as success. @@ -196,7 +208,7 @@ the same way. Ask `MOEGLICHEAENDERUNGEN` first (``), which answers: | `buchungsart` | yes | yes | Edit **hardcodes `Buchung`** (`ApiClient.php:233`) | | `status` | yes | yes | Edit replays the value read back from BusPro — see the caveat below | | `idreise`, `idpartner`, `idagentur` | yes | yes | `idpartner` sent unconditionally, even with no room | -| `anmelder` | yes | yes | Create builds it from participant[0]; edit uses `PersonalData::toPayload()` | +| `anmelder` | yes | yes | Create builds it from participant[0]; edit uses `PersonalData::toPayload()`. BusPro accepts an Anmelder who is not a participant | | `anmelder/bemerkung` | — | yes | Via `PersonalData::toPayload()` | | `teilnehmerliste` | yes | yes | | | `wünsche` (`unterbringungswunsch`, `beförderungswunsch`) | yes | yes | |