/v2/settings/{id}Account-Einstellungen ändern
Aktualisiert die übergebenen zentralen Account-Einstellungen. Es werden nur bekannte, schreibbare Structure-Felder verarbeitet; Datums-/Zahlen-/Schalterwerte werden gemäß dem jeweiligen Feld normalisiert. Dynamische Datenfeldnamen für Mehrfachanmeldung oder Zweitemail müssen zur aktuellen Teilnehmerdatenstruktur gehören. Sprach-, Präsenz-, Abrechnungs- und Buchungsregeln können weitere native Validierungen und Folgeänderungen auslösen; Abonnement-/Berechtigungsfreigaben bleiben maßgeblich.
Operation-ID put_v2_settings_id
Vertrag & Verhalten
- Dokumentationsstand
- reviewed
- Ändert Zustand
- Ja
- Als readOnly markiert
- Nein
- Für Automation markiert
- Nein
Authentifizierung
Eine der folgenden Alternativen muss erfüllt sein (ODER). Innerhalb jeder Alternative werden alle angegebenen Schemas gemeinsam benötigt (UND).
Alternative 1
bearerAuthhttp · bearerExisting edoobox v2 access token. Never substitute API key/secret headers.
Format: JWT
Security-Schema als JSON
{
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "Existing edoobox v2 access token. Never substitute API key/secret headers."
}accountContextapiKeySelected login/account context from the JWT, not a database primary key. Required even for a JWT with one account.
header: edid
Security-Schema als JSON
{
"type": "apiKey",
"in": "header",
"name": "edid",
"description": "Selected login/account context from the JWT, not a database primary key. Required even for a JWT with one account."
}Alternative 2
sessionCookieapiKeyExisting browser login session, with the same permission checks as Bearer authentication.
cookie: _edlogin
Security-Schema als JSON
{
"type": "apiKey",
"in": "cookie",
"name": "_edlogin",
"description": "Existing browser login session, with the same permission checks as Bearer authentication."
}accountContextapiKeySelected login/account context from the JWT, not a database primary key. Required even for a JWT with one account.
header: edid
Security-Schema als JSON
{
"type": "apiKey",
"in": "header",
"name": "edid",
"description": "Selected login/account context from the JWT, not a database primary key. Required even for a JWT with one account."
}Parameter
Pfadparameter
iderforderlichÖffentliche account-ID.
Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID.
- pattern
"^account_[a-f0-9]{12}_-?[0-9]+$"
Schema-Beispiel
"account_012345abcdef_123456"Vollständiges Schema als JSON
{
"type": "string",
"pattern": "^account_[a-f0-9]{12}_-?[0-9]+$",
"description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID.",
"examples": [
"account_012345abcdef_123456"
]
}Header
languageoptionalAccount language code, where the resource supports setLanguage().
Schema-Beispiel
"de"Vollständiges Schema als JSON
{
"type": "string",
"examples": [
"de"
]
}X-Edoobox-If-RevisionoptionalOptional account mutation revision from a preceding authenticated auth-context snapshot. The dispatcher compares it while holding the account lock; mismatch409 requires a new review.
- pattern
"^[a-f0-9]{32}$"
Schema-Beispiel
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"Vollständiges Schema als JSON
{
"type": "string",
"pattern": "^[a-f0-9]{32}$",
"examples": [
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
]
}Request Body
erforderlichapplication/json
data object erforderlich Source-declared fields; action-specific and account validation still apply.
- minProperties
1
id kein Wert zulässig firstweekday Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: integer. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 44,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}format_date Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: integer. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 53,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}format_time Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: integer. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 62,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}format_calendar_grid Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: integer. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 71,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}format_timezone string Existing IANA timezone name, for example Europe/Zurich; the update callback looks up zone_name.
Feld-Metadaten aus der Spezifikation
{
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 5,
"reason": "PUT consumes a zone-name string instead of the integer get placeholder.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 85,
"reason": "Response returns the account timezone zone_name.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}congress_module kein Wert zulässig format_number Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: integer. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 112,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}design string Opaque edoobox v2 object ID returned by this account. Never send a raw database ID. The synthetic example is illustrative and is not a real record.
- pattern
"^[a-z0-9]+_[a-f0-9]{12}_-?[0-9]+$"
Schema-Beispiel
"design_012345abcdef_123456"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 121
}root_category kein Wert zulässig shortcut kein Wert zulässig organization_name Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 200. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 150
}organization_contactperson Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 250. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 159
}organization_street Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 120. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 120,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 168
}organization_postcode Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 20. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 20,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 177
}organization_town Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 200. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 186
}organization_country kein Wert zulässig organization_language Typ nicht eingeschränkt Maps a configured language key to its internal language entry; unknown keys default internally. Response returns the configured language key or null for an unmatched legacy value. This is a language selector, not an externally exposed numeric ID.
Schema-Beispiel
"de"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 205,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/langedoobox_helper.php",
"line": 731,
"sha256": "6454b27d47a74f3cf236ef8e258fbe821228c1607165d00433a309b2e9127d3c",
"reason": "edLangIDByName returns configured entry, with fallback for unknown names."
},
{
"file": "application/helpers/langedoobox_helper.php",
"line": 566,
"sha256": "6454b27d47a74f3cf236ef8e258fbe821228c1607165d00433a309b2e9127d3c",
"reason": "edLangById converts internal entries back to public language keys."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}organization_phone Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 120. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 120,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 214
}organization_url Typ nicht eingeschränkt Removes exact lowercase leading http:// or https:// before aP trim/newline/truncation to 250 stored characters. No URL syntax is required; other schemes and uppercase prefixes are not normalized in that step.
Schema-Beispiel
"https://example.invalid"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 223,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "aP text storage normalization."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}organization_email string Trimmed input must pass PHP FILTER_VALIDATE_EMAIL. Native PUT rejects raw input over200 UTF-8 characters (including outer whitespace), escaped trimmed storage over200 characters, or any aP/aQ roundtrip change to the validated address. Rejection returns the existing invalid-email path before persistence; valid addresses are preserved.
Maximal gespeicherte Länge: 200. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
- maxLength
200
Feld-Metadaten aus der Spezifikation
{
"x-edoobox-validation": "PHP FILTER_VALIDATE_EMAIL after trim; raw UTF-8 length<=200; escaped trimmed length<=200; aQ(aP(trimmed,true,200))===trimmed",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 57,
"reason": "PUT callback validates the trimmed email syntax, checks raw and encoded lengths, and requires an exact aP/aQ identity before returning storage. False is rejected by generic update as ED90100 before a write.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"lineEnd": 75
},
{
"file": "application/models/v2/Settings.php",
"line": 237,
"reason": "Incoming model getter is bounded to200 characters; generic PUT uses the dedicated validation hook; response unescapes stored text.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"lineEnd": 246
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}organization_currency kein Wert zulässig billingaddress_organization Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 100. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 257
}billingaddress_user Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 50. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 50,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 266
}billingaddress_street Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 100. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 275
}billingaddress_postcode_town Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 100. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 284
}billingaddress_phone Typ nicht eingeschränkt Trims the value then applies aP text normalization (trim/newline replacement/truncation to 250 stored characters). It does not validate telephone syntax. Some nonscalar values cause a PHP type error before aP.
Schema-Beispiel
"+41 00 000 00 00"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 293,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "Actual aP string-only/truncating storage normalization."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}billingaddress_email Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 250. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 303
}billingaddress_status Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 312,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}user_duplicate_config Typ nicht eingeschränkt Accepts a decoded object/array or a JSON-encoded string; non-array/invalid JSON becomes defaults. Known keys are normalized: booleans; candidate threshold clamped0..100; nullable auto-merge threshold1..100; max_merge_users2..10; newest/oldest strategy with default; recognized unique field rules with weights1..10. Explicit rules:[] clears rules. Unknown keys/rules are discarded; hash/version are computed server-side. Changing matching rules invalidates cached duplicate candidates, indexes and worker state.
Schema-Beispiel
{
"enabled": true,
"candidate_threshold": 60,
"rules": []
}Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "object"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 321,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 28,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Actual normalizeConfigForSave preserves unchanged rule hashes and normalizes current state."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 40,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Full known config defaults, coercion, clamping, hash/version semantics."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 648,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Rule filtering, uniqueness and weight normalization."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 968,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Allowed public data-field selectors for duplicate matching."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 488,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Changed matching rules invalidate derived duplicate data, not only the stored JSON."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}admin_avatar_mode Typ nicht eingeschränkt String-casts the input; exact symbol selects symbol, every other value selects face. Unsupported values default rather than fail.
Schema-Beispiel
"symbol"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
"face",
"symbol"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 344,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}account_billing_recipient_type Typ nicht eingeschränkt Strict recognized strings organization, billing_address and admin are stored; legacy email and every other value normalize to organization. This is a defaulting normalizer, not a rejecting input enum.
Schema-Beispiel
"organization"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
"organization",
"billing_address",
"admin"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 363,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}account_billing_recipient_email Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 250. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 390
}account_billing_recipient_admin_id Typ nicht eingeschränkt Choose an account-owned administrator for billing. The exact clear sentinels null, false, 0, string 0 and the empty string normalize to no administrator. Positive database primary keys are rejected; numeric acceptance is confined to the literal clear sentinel 0.
3 Schema-Beispiele
"admin_012345abcdef_123456"nullfalseanyOf · Mindestens eine Variante muss passen
Variante 1 string Canonical public admin v2 ID issued in this account; server validates the account-bound checksum and rejects raw IDs.
- pattern
"^admin_[a-f0-9]{12}_(?:-35|[1-9][0-9]*)$"
Schema-Beispiel
"admin_012345abcdef_123456"Variante 2 Typ nicht eingeschränkt nullfalse0"0"""Feld-Metadaten aus der Spezifikation
{
"x-edoobox-id-kind": "empty-relation"
}Feld-Metadaten aus der Spezifikation
{
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 421,
"reason": "The corrected inbound getter accepts a canonical tenant-bound admin v2 reference and normalizes explicit clear sentinels; positive raw primary keys are rejected.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/Settings.php",
"line": 437,
"reason": "The outbound setter encodes a positive database admin key as a public v2 ID and emits false for zero.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"reason": "Join updates call the field getter before persisting; response serialization calls the field setter at line1068. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged.",
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}account_billing_auto_charge_enabled Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 440,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}account_billing_topup_enabled Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 459,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}account_billing_topup_threshold Typ nicht eingeschränkt Casts the input to PHP float and rounds to two decimal places. No positive minimum, currency range or rejecting numeric wire type is enforced by this getter.
Schema-Beispiel
25.5Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "number"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 478,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}account_billing_topup_amount Typ nicht eingeschränkt Casts the input to PHP float and rounds to two decimal places. No positive minimum, currency range or rejecting numeric wire type is enforced by this getter.
Schema-Beispiel
25.5Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "number"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 497,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}internal_all Typ nicht eingeschränkt Loose PHP comparison to true controls enable/disable. Enabling verifies the internal_function subscription feature; disabling bypasses that enablement check. Enable also regenerates the internal access code; disable clears it.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"An enabled subscription feature is an account-dependent runtime precondition, not an unconditional JSON requirement."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 516,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 23,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual field hook handles loose truthiness and subscription verification."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}notification_minimummaximum Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 526,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}notification_booking Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 535,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}vat_included Typ nicht eingeschränkt PHP loose comparison to exclusive stores 1, other values store 0. Response returns exclusive for stored 1 and including otherwise.
Schema-Beispiel
"including"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
"exclusive",
"including"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 544,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}vat_reverse_charge_texts Typ nicht eingeschränkt An associative language-to-text array is filtered to configured language keys; values pass through aP. Non-array input and unknown keys produce/are removed into an empty JSON list. Readback JSON-decodes storage; malformed legacy JSON yields null.
Schema-Beispiel
{
"de": "Example tax information"
}Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 553,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "Each recognized text is normalized by aP."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}offer_sort Typ nicht eingeschränkt PHP loose comparison to date selects date; every other input stores manuell. Readback maps the alternative to manual. Input and output spellings differ.
Schema-Beispiel
"date"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
"date",
"manual"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 580,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}offer_func_1 Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 589,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}offer_func_1_status Typ nicht eingeschränkt PHP loose comparison to numeric 3 selects storage text 3, otherwise 4. Readback emits numeric 3 or 4.
Schema-Beispiel
3Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 598,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}offer_archiving Typ nicht eingeschränkt Integer-casts the input, preserves modes 1/2/3 and maps all other values to 0. The output setter returns false for disabled.
Schema-Beispiel
0Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
0,
1,
2,
3
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 607,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}offer_archiving_reference_date Typ nicht eingeschränkt Exact string start selects start; every other value selects visibility. This is normalization, not a rejecting enum.
Schema-Beispiel
"visibility"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
"start",
"visibility"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 634,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}news_and_tricks Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 644,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_create_admin Typ nicht eingeschränkt Integer-casts the input. Modes 1 and 2 remain selected; all other inputs normalize to disabled 0. Readback uses false for disabled.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
0,
1,
2
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 653,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_userlogin Typ nicht eingeschränkt PHP integer-casts the input; 2, 3 and 4 remain their numeric modes, other inputs become 1. The mode list describes normalized output, not a rejecting input enum.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 686,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_login Typ nicht eingeschränkt Integer-casts input: 2 stores y, 3 stores p, all other values store n. Response maps n/y/p to 1/2/3 and unmatched stored values to null.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 713,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_login_global_users Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 738,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_cancellation Typ nicht eingeschränkt PHP integer-casts the input; 2, 3 and 4 remain their numeric modes, other inputs become 1. The mode list describes normalized output, not a rejecting input enum.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 757,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_cancellation_admin_confirmation_mail Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 784,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_reservation Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 803,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_paymentpage Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 812,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_sendinfo Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 822,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_label_notifications Typ nicht eingeschränkt Non-array input becomes []. For each rule: trim a nonempty label of at most 15 characters, retain its first occurrence, require a PHP-valid email and a selected-account custom non-PDF email template. Invalid/duplicate entries are skipped, not a whole-field rejection. Storage uses internal template IDs only; response emits public emailtemplate v2 IDs.
Schema-Beispiel
[]Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"email",
"emailtemplate"
],
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 15
},
"email": {
"type": "string"
},
"emailtemplate": {
"type": "string",
"pattern": "^emailtemplate_[a-f0-9]{12}_-?[0-9]+$"
}
},
"additionalProperties": false
}
},
"x-edoobox-preconditions": [
"The referenced template must already exist for this account; empty [] is a valid disabling input."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 831,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3060,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Actual rule filtering and per-account template lookup."
},
{
"file": "application/models/v2/Settings.php",
"line": 3105,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Response filter emits typed public emailtemplate IDs."
},
{
"file": "application/models/v2/Settings.php",
"line": 3159,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Template must belong to the account and be an email template, not PDF."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_send_pdf Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 850,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_send_ics Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 859,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_reminder Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 878,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_reminder_hours Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: integer. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 887,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_visitconfirmation Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 902,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_number Typ nicht eingeschränkt The hook integer-casts the supplied value, rejects results outside 1..999999999, and rejects an already-used booking number in the selected account. A successful update stores the counter; coercible text is accepted, so a rejecting integer wire type would be inaccurate.
Schema-Beispiel
100001Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 1,
"maximum": 999999999
},
"x-edoobox-preconditions": [
"The chosen number must not already occur in the selected account."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 937,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 288,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual hook range check and tenant-scoped uniqueness query."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_cert_percent Typ nicht eingeschränkt Integer-casts then clamps to 0 through 100. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.
Schema-Beispiel
50Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 948,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_cert_notvisitmail Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 975,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_cert_senddelayhours Typ nicht eingeschränkt Integer-casts then clamps to 0 through 1440. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.
Schema-Beispiel
50Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 1440
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 996,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_cert_validation_url Typ nicht eingeschränkt Loose PHP comparison to true controls enable/disable. Enabling verifies the certificate_validation subscription feature; disabling bypasses that enablement check. Writes the certificate-validation flag.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"An enabled subscription feature is an account-dependent runtime precondition, not an unconditional JSON requirement."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1024,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 40,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual field hook handles loose truthiness and subscription verification."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_cert_attachpdf Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1046,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_cert_attachpdfpercent Typ nicht eingeschränkt Integer-casts then clamps to 0 through 100. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.
Schema-Beispiel
50Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1206,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_cert_secondemail Typ nicht eingeschränkt Getter maps PHP truthiness to integer enable/disable. Disabling always updates the flag. Enabling requires an existing stored destination field, or a supplied recognized booking_cert_secondemail_field public field key. A missing/unrecognized destination returns false from the hook. The companion field is conditionally required based on stored account state, not on every request.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"When no destination is stored, enabling requires booking_cert_secondemail_field in the same data object."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1094,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 641,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual conditional second-email flag hook; getter called explicitly and destination checked against stored settings."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_cert_secondemail_field Typ nicht eingeschränkt A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.
Schema-Beispiel
"email"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1115,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_secondemail Typ nicht eingeschränkt Getter maps PHP truthiness to integer enable/disable. Disabling always updates the flag. Enabling requires an existing stored destination field, or a supplied recognized booking_secondemail_field public field key. A missing/unrecognized destination returns false from the hook. The companion field is conditionally required based on stored account state, not on every request.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"When no destination is stored, enabling requires booking_secondemail_field in the same data object."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1150,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 693,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual conditional second-email flag hook; getter called explicitly and destination checked against stored settings."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_secondemail_field Typ nicht eingeschränkt A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.
Schema-Beispiel
"email"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1171,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_offerlist_secondemail_field Typ nicht eingeschränkt A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.
Schema-Beispiel
"email"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1233,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}booking_offerlist_cancel_mail Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1268,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_allow_promotions Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1288,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}booking_designation_promotions Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 50. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 50,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 1297
}skip_counter kein Wert zulässig question_deliverables_show kein Wert zulässig multi_offer_show kein Wert zulässig multi_offer_child_limit kein Wert zulässig automatic_deletion Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: integer. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1367,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}edsupport_access Typ nicht eingeschränkt true or string true becomes 1; false, string false, null and empty string become 0; otherwise positive integer-cast values are retained, nonpositive values become 0. The getter does not reject noncanonical types.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "integer",
"minimum": 0
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1395,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}payment_confirmation_mail Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1428,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}barcode_type Typ nicht eingeschränkt Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.
Schema-Beispiel
"pdf417"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-knownInputs": [
"pdf417",
"qrcode",
"datamatrix"
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"x-edoobox-sourceLine": 1437
}barcode_mobile_wallet Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1461,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}mobile_wallet_background_color Typ nicht eingeschränkt Trims/string-casts; six hexadecimal digits with optional # normalize to uppercase #RRGGBB. Empty or malformed values become '#0068B0'. No rejecting input pattern is applied.
Schema-Beispiel
"#12ab34"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1470,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3181,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Shared color normalizer returns uppercase hex or the field-specific fallback."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}mobile_wallet_foreground_color Typ nicht eingeschränkt Trims/string-casts; six hexadecimal digits with optional # normalize to uppercase #RRGGBB. Empty or malformed values become ''. No rejecting input pattern is applied.
Schema-Beispiel
"#12ab34"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1479,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3181,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Shared color normalizer returns uppercase hex or the field-specific fallback."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}mobile_wallet_use_offer_image Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1488,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}mobile_wallet_fallback_image_url Typ nicht eingeschränkt String-casts, strips HTML tags, trims and byte-truncates to 500 bytes. Despite the field name, no URL syntax or scheme validator is applied.
Schema-Beispiel
"https://example.invalid/support"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1497,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}mobile_wallet_display_name Typ nicht eingeschränkt String-casts, strips HTML tags, trims and byte-truncates to 150 bytes. The response setter only string-casts stored data.
Schema-Beispiel
"Example organization"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1506,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}mobile_wallet_support_url Typ nicht eingeschränkt String-casts, strips HTML tags, trims and byte-truncates to 500 bytes. Despite the field name, no URL syntax or scheme validator is applied.
Schema-Beispiel
"https://example.invalid/support"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1515,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}barcode_ticket Typ nicht eingeschränkt Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-knownInputs": [
false,
"always",
"offer"
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"x-edoobox-sourceLine": 1524
}collective_booking_max Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: integer. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
1Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1548,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}collective_booking_identify Typ nicht eingeschränkt A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. Unknown keys return null; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.
Schema-Beispiel
"email"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1563,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}collective_booking_identify_privacy Typ nicht eingeschränkt A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. The clear sentinel is stored as NO; unknown keys store empty text. Readback is false for NO, a public key when recognized, and null otherwise. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.
Schema-Beispiel
"email"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1586,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}collective_booking_identify_obligatory Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1610,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}collective_booking_master Typ nicht eingeschränkt Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.
Schema-Beispiel
"manual"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-knownInputs": [
"manual",
"all",
false
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"x-edoobox-sourceLine": 1673
}security_headers_csp Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1654,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}design_subcategory Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1699,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}legaltext_atc Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1708,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}legaltext_ri Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1717,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}legaltext_pp Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1726,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}attendance_config array The converted statuses 0, 1 and 2 must each occur exactly once among processed items. Counter values outside 0..100 become 0. Extra statuses are supported; processing stops after 41 entries or on a missing status.
Array-Elemente
status number | string erforderlich Converted to integer by the callback.
order number | string counter Typ nicht eingeschränkt val Typ nicht eingeschränkt color Typ nicht eingeschränkt help Typ nicht eingeschränkt Zusätzliche, hier nicht aufgeführte Felder sind erlaubt.
Feld-Metadaten aus der Spezifikation
{
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 153,
"reason": "PUT sorts the status-record array, casts status/order and normalizes counter.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 208,
"reason": "Exactly three required-status occurrences are checked.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 1739,
"reason": "Response returns ordered status records as a JSON array.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}language object Active language codes in desired order. Unknown codes are ignored. Account language configuration governs availability.
active array erforderlich Array-Elemente
Zusätzliche, hier nicht aufgeführte Felder sind erlaubt.
Feld-Metadaten aus der Spezifikation
{
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 77,
"reason": "PUT expects an active language-code array inside an object.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 1759,
"reason": "The resource Structure response placeholder is false; enriched action responses may differ.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}edsubscription kein Wert zulässig edsubscription_testinguntildate kein Wert zulässig versions kein Wert zulässig pdf_engine Typ nicht eingeschränkt PHP switch maps input mode 1 to dompdf; mode 2 and other inputs default to mpdf. Readback maps stored dompdf/mpdf to numeric 1/2, with null for unknown stored text.
Schema-Beispiel
2Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"enum": [
1,
2
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1821,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}pdf_edit_restriction_password Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1851,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}pdf_paper_size string Requires an exact installed library paper-size key after case folding, before aP trim/storage normalization. Unknown values return strict false from the getter and the final generic joined writer rejects ED80100 before joined persistence. The existing case-insensitive pattern reflects those installed meaningful paper-size strings; the own parent and relation predicates remain independently checked.
- pattern
"^(?:4[aA]0|2[aA]0|[aA]0|[aA]1|[aA]2|[aA]3|[aA]4|[aA]5|[aA]6|[aA]7|[aA]8|[aA]9|[aA]10|[bB]0|[bB]1|[bB]2|[bB]3|[bB]4|[bB]5|[bB]6|[bB]7|[bB]8|[bB]9|[bB]10|[cC]0|[cC]1|[cC]2|[cC]3|[cC]4|[cC]5|[cC]6|[cC]7|[cC]8|[cC]9|[cC]10|[rR][aA]0|[rR][aA]1|[rR][aA]2|[rR][aA]3|[rR][aA]4|[sS][rR][aA]0|[sS][rR][aA]1|[sS][rR][aA]2|[sS][rR][aA]3|[sS][rR][aA]4|[lL][eE][tT][tT][eE][rR]|[hH][aA][lL][fF]\\-[lL][eE][tT][tT][eE][rR]|[lL][eE][gG][aA][lL]|[lL][eE][dD][gG][eE][rR]|[tT][aA][bB][lL][oO][iI][dD]|[eE][xX][eE][cC][uU][tT][iI][vV][eE]|[fF][oO][lL][iI][oO]|[cC][oO][mM][mM][eE][rR][cC][iI][aA][lL]\\ \\#10\\ [eE][nN][vV][eE][lL][oO][pP][eE]|[cC][aA][tT][aA][lL][oO][gG]\\ \\#10\\ 1/2\\ [eE][nN][vV][eE][lL][oO][pP][eE]|8\\.5[xX]11|8\\.5[xX]14|11[xX]17)$"
Schema-Beispiel
"a4"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-validation",
"x-edoobox-canonicalSchema": {
"enum": [
"4a0",
"2a0",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6",
"a7",
"a8",
"a9",
"a10",
"b0",
"b1",
"b2",
"b3",
"b4",
"b5",
"b6",
"b7",
"b8",
"b9",
"b10",
"c0",
"c1",
"c2",
"c3",
"c4",
"c5",
"c6",
"c7",
"c8",
"c9",
"c10",
"ra0",
"ra1",
"ra2",
"ra3",
"ra4",
"sra0",
"sra1",
"sra2",
"sra3",
"sra4",
"letter",
"half-letter",
"legal",
"ledger",
"tabloid",
"executive",
"folio",
"commercial #10 envelope",
"catalog #10 1/2 envelope",
"8.5x11",
"8.5x14",
"11x17"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1870,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "vendor/dompdf/dompdf/src/Adapter/CPDF.php",
"line": 42,
"sha256": "7dca4a096b08c006f12bfccd733068223d92e502b9a625c49bd919373f714001",
"reason": "Installed Dompdf paper-size key list, matched case-insensitively by the source getter."
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c",
"reason": "Normal fields check strict false; joined fields instead collect getter output at 1793 and execute it at 1827 without that rejection. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}pdf_custom_css Typ nicht eingeschränkt Parses CSS, removes non-declaration blocks, keeps selectors starting .custom_ or *, and filters rule value node classes. font-family is retained only when a family is among Pdf::$fonts. Stores compact CSS base64; readback decodes/formats it or returns empty text. Parser errors and PDF renderer prerequisites are not a closed JSON Schema grammar.
Schema-Beispiel
".custom_example { color: #123456; }"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-preconditions": [
"CSS parser grammar and configured font support are checked by source/parser, not replicated as a misleading JSON pattern."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1892,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/libraries/edoobox/integrations/pdf/Pdf.php",
"line": 16,
"sha256": "b286cdc4d20e02601db9acc35b06564357f10378961e72cb8f4e22e64b3a3254",
"reason": "Allowed PDF font keys used by the CSS normalizer."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}dinaco_client_id Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 250. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 1960
}dinaco_client_secret Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 250. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 1979
}gtm_mess_id Typ nicht eingeschränkt For input longer than five bytes, a non-anchored G-[a-zA-z0-9]{5,20} substring must occur or the value becomes empty. Short values are retained. aP then trims, replaces newlines and truncates. This is not a strict GA4-ID pattern validator.
Schema-Beispiel
"G-EXAMPLE1234"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1998,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "aP normalization after the substring test."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}gtm_container_id Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: string. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
Maximal gespeicherte Länge: 250. Diese Speichergrenze ist keine maxLength-Validierung der Eingabe.
The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.
Schema-Beispiel
"Example"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"x-edoobox-sourceLine": 2024
}meta_html Typ nicht eingeschränkt Parses supplied HTML and keeps only meta tags whose name is google-site-verification or facebook-domain-verification. Only their name/content attributes are serialized, then aP truncates to 250 stored characters. This is a lossy sanitizer, not a rejecting HTML schema.
Schema-Beispiel
"<meta name=\"google-site-verification\" content=\"synthetic-verification\">"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2044,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}system_attachments_file_naming object Map keyed by an emailtemplate public ID or ics. Each value maps language codes to file-name text. Filename characters and suffix are normalized; unknown templates/languages are ignored.
Schema für zusätzliche Felder
Schema für zusätzliche Felder
Feld-Metadaten aus der Spezifikation
{
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2076,
"reason": "Input iterates template/ics keys and language-to-name objects; edid occurs on map keys.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/Settings.php",
"line": 2106,
"reason": "Response maps stored keys back to public emailtemplate IDs or ics.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}website_integration Typ nicht eingeschränkt "iframe""wordpress"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-sourceLine": 2132
}website_url string Accepts empty string or a string accepted by PHP FILTER_VALIDATE_URL. Other values return strict false and API_DATA rejects the update. No restriction to HTTP/HTTPS is imposed by this getter.
Schema-Beispiel
"https://example.invalid"Feld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-reviewed-validation",
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-preconditions": [
"PHP FILTER_VALIDATE_URL is the rejecting syntax check; JSON Schema format:uri is not asserted as an exact equivalent."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2159,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c",
"reason": "Strict false getter rejects invalid URL inputs. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
}admin_custom_permissions Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 2172,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}admin_academic_title_use Typ nicht eingeschränkt Kanonischer Typ nach Normalisierung: boolean. Dies ist keine zusätzliche Einschränkung des Eingabetyps.
PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.
Schema-Beispiel
falseFeld-Metadaten aus der Spezifikation
{
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 2192,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction."
}Zusätzliche, hier nicht aufgeführte Felder sind erlaubt.
Feld-Metadaten aus der Spezifikation
{
"x-edoobox-readOnlyFields": [
"id",
"congress_module",
"root_category",
"shortcut",
"organization_country",
"organization_currency",
"skip_counter",
"question_deliverables_show",
"multi_offer_show",
"multi_offer_child_limit",
"edsubscription",
"edsubscription_testinguntildate",
"versions"
],
"x-edoobox-clientRestriction": "Read-only fields are forbidden by this client contract to prevent silently ignored writes; the legacy API itself skips them. Explicit source-marked update context fields remain accepted for hook validation without changing their immutable database columns."
}id string Opaque edoobox v2 object ID returned by this account. Never send a raw database ID. The synthetic example is illustrative and is not a real record.
- pattern
"^[a-z0-9]+_[a-f0-9]{12}_-?[0-9]+$"
Schema-Beispiel
"settings_012345abcdef_123456"Zusätzliche, hier nicht aufgeführte Felder sind erlaubt.
Vollständiges Schema als JSON
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": false,
"firstweekday": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 44,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"format_date": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 53,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"format_time": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 62,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"format_calendar_grid": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 71,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"format_timezone": {
"type": "string",
"description": "Existing IANA timezone name, for example Europe/Zurich; the update callback looks up zone_name.",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 5,
"reason": "PUT consumes a zone-name string instead of the integer get placeholder.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 85,
"reason": "Response returns the account timezone zone_name.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"congress_module": false,
"format_number": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 112,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"design": {
"type": "string",
"pattern": "^[a-z0-9]+_[a-f0-9]{12}_-?[0-9]+$",
"description": "Opaque edoobox v2 object ID returned by this account. Never send a raw database ID. The synthetic example is illustrative and is not a real record.",
"examples": [
"design_012345abcdef_123456"
],
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 121
},
"root_category": false,
"shortcut": false,
"organization_name": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 150
},
"organization_contactperson": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 159
},
"organization_street": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 120,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 168
},
"organization_postcode": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 20,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 177
},
"organization_town": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 186
},
"organization_country": false,
"organization_language": {
"description": "Maps a configured language key to its internal language entry; unknown keys default internally. Response returns the configured language key or null for an unmatched legacy value. This is a language selector, not an externally exposed numeric ID.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"de"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 205,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/langedoobox_helper.php",
"line": 731,
"sha256": "6454b27d47a74f3cf236ef8e258fbe821228c1607165d00433a309b2e9127d3c",
"reason": "edLangIDByName returns configured entry, with fallback for unknown names."
},
{
"file": "application/helpers/langedoobox_helper.php",
"line": 566,
"sha256": "6454b27d47a74f3cf236ef8e258fbe821228c1607165d00433a309b2e9127d3c",
"reason": "edLangById converts internal entries back to public language keys."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"organization_phone": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 120,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 214
},
"organization_url": {
"description": "Removes exact lowercase leading http:// or https:// before aP trim/newline/truncation to 250 stored characters. No URL syntax is required; other schemes and uppercase prefixes are not normalized in that step.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"https://example.invalid"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 223,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "aP text storage normalization."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"organization_email": {
"type": "string",
"maxLength": 200,
"description": "Trimmed input must pass PHP FILTER_VALIDATE_EMAIL. Native PUT rejects raw input over200 UTF-8 characters (including outer whitespace), escaped trimmed storage over200 characters, or any aP/aQ roundtrip change to the validated address. Rejection returns the existing invalid-email path before persistence; valid addresses are preserved.",
"x-edoobox-validation": "PHP FILTER_VALIDATE_EMAIL after trim; raw UTF-8 length<=200; escaped trimmed length<=200; aQ(aP(trimmed,true,200))===trimmed",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 57,
"reason": "PUT callback validates the trimmed email syntax, checks raw and encoded lengths, and requires an exact aP/aQ identity before returning storage. False is rejected by generic update as ED90100 before a write.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"lineEnd": 75
},
{
"file": "application/models/v2/Settings.php",
"line": 237,
"reason": "Incoming model getter is bounded to200 characters; generic PUT uses the dedicated validation hook; response unescapes stored text.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"lineEnd": 246
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"organization_currency": false,
"billingaddress_organization": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 257
},
"billingaddress_user": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 50,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 266
},
"billingaddress_street": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 275
},
"billingaddress_postcode_town": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 284
},
"billingaddress_phone": {
"description": "Trims the value then applies aP text normalization (trim/newline replacement/truncation to 250 stored characters). It does not validate telephone syntax. Some nonscalar values cause a PHP type error before aP.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"+41 00 000 00 00"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 293,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "Actual aP string-only/truncating storage normalization."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"billingaddress_email": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 303
},
"billingaddress_status": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 312,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"user_duplicate_config": {
"description": "Accepts a decoded object/array or a JSON-encoded string; non-array/invalid JSON becomes defaults. Known keys are normalized: booleans; candidate threshold clamped0..100; nullable auto-merge threshold1..100; max_merge_users2..10; newest/oldest strategy with default; recognized unique field rules with weights1..10. Explicit rules:[] clears rules. Unknown keys/rules are discarded; hash/version are computed server-side. Changing matching rules invalidates cached duplicate candidates, indexes and worker state.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
{
"enabled": true,
"candidate_threshold": 60,
"rules": []
}
],
"x-edoobox-canonicalSchema": {
"type": "object"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 321,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 28,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Actual normalizeConfigForSave preserves unchanged rule hashes and normalizes current state."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 40,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Full known config defaults, coercion, clamping, hash/version semantics."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 648,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Rule filtering, uniqueness and weight normalization."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 968,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Allowed public data-field selectors for duplicate matching."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 488,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Changed matching rules invalidate derived duplicate data, not only the stored JSON."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"admin_avatar_mode": {
"description": "String-casts the input; exact symbol selects symbol, every other value selects face. Unsupported values default rather than fail.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"symbol"
],
"x-edoobox-canonicalSchema": {
"enum": [
"face",
"symbol"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 344,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"account_billing_recipient_type": {
"description": "Strict recognized strings organization, billing_address and admin are stored; legacy email and every other value normalize to organization. This is a defaulting normalizer, not a rejecting input enum.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"organization"
],
"x-edoobox-canonicalSchema": {
"enum": [
"organization",
"billing_address",
"admin"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 363,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"account_billing_recipient_email": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 390
},
"account_billing_recipient_admin_id": {
"anyOf": [
{
"type": "string",
"pattern": "^admin_[a-f0-9]{12}_(?:-35|[1-9][0-9]*)$",
"examples": [
"admin_012345abcdef_123456"
],
"description": "Canonical public admin v2 ID issued in this account; server validates the account-bound checksum and rejects raw IDs."
},
{
"enum": [
null,
false,
0,
"0",
""
],
"x-edoobox-id-kind": "empty-relation"
}
],
"examples": [
"admin_012345abcdef_123456",
null,
false
],
"description": "Choose an account-owned administrator for billing. The exact clear sentinels null, false, 0, string 0 and the empty string normalize to no administrator. Positive database primary keys are rejected; numeric acceptance is confined to the literal clear sentinel 0.",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 421,
"reason": "The corrected inbound getter accepts a canonical tenant-bound admin v2 reference and normalizes explicit clear sentinels; positive raw primary keys are rejected.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/Settings.php",
"line": 437,
"reason": "The outbound setter encodes a positive database admin key as a public v2 ID and emits false for zero.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"reason": "Join updates call the field getter before persisting; response serialization calls the field setter at line1068. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged.",
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"account_billing_auto_charge_enabled": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 440,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"account_billing_topup_enabled": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 459,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"account_billing_topup_threshold": {
"description": "Casts the input to PHP float and rounds to two decimal places. No positive minimum, currency range or rejecting numeric wire type is enforced by this getter.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
25.5
],
"x-edoobox-canonicalSchema": {
"type": "number"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 478,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"account_billing_topup_amount": {
"description": "Casts the input to PHP float and rounds to two decimal places. No positive minimum, currency range or rejecting numeric wire type is enforced by this getter.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
25.5
],
"x-edoobox-canonicalSchema": {
"type": "number"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 497,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"internal_all": {
"description": "Loose PHP comparison to true controls enable/disable. Enabling verifies the internal_function subscription feature; disabling bypasses that enablement check. Enable also regenerates the internal access code; disable clears it.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"An enabled subscription feature is an account-dependent runtime precondition, not an unconditional JSON requirement."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 516,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 23,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual field hook handles loose truthiness and subscription verification."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"notification_minimummaximum": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 526,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"notification_booking": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 535,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"vat_included": {
"description": "PHP loose comparison to exclusive stores 1, other values store 0. Response returns exclusive for stored 1 and including otherwise.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"including"
],
"x-edoobox-canonicalSchema": {
"enum": [
"exclusive",
"including"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 544,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"vat_reverse_charge_texts": {
"description": "An associative language-to-text array is filtered to configured language keys; values pass through aP. Non-array input and unknown keys produce/are removed into an empty JSON list. Readback JSON-decodes storage; malformed legacy JSON yields null.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
{
"de": "Example tax information"
}
],
"x-edoobox-canonicalSchema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 553,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "Each recognized text is normalized by aP."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"offer_sort": {
"description": "PHP loose comparison to date selects date; every other input stores manuell. Readback maps the alternative to manual. Input and output spellings differ.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"date"
],
"x-edoobox-canonicalSchema": {
"enum": [
"date",
"manual"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 580,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"offer_func_1": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 589,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"offer_func_1_status": {
"description": "PHP loose comparison to numeric 3 selects storage text 3, otherwise 4. Readback emits numeric 3 or 4.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
3
],
"x-edoobox-canonicalSchema": {
"enum": [
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 598,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"offer_archiving": {
"description": "Integer-casts the input, preserves modes 1/2/3 and maps all other values to 0. The output setter returns false for disabled.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
0
],
"x-edoobox-canonicalSchema": {
"enum": [
0,
1,
2,
3
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 607,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"offer_archiving_reference_date": {
"description": "Exact string start selects start; every other value selects visibility. This is normalization, not a rejecting enum.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"visibility"
],
"x-edoobox-canonicalSchema": {
"enum": [
"start",
"visibility"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 634,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"news_and_tricks": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 644,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_create_admin": {
"description": "Integer-casts the input. Modes 1 and 2 remain selected; all other inputs normalize to disabled 0. Readback uses false for disabled.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
1
],
"x-edoobox-canonicalSchema": {
"enum": [
0,
1,
2
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 653,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_userlogin": {
"description": "PHP integer-casts the input; 2, 3 and 4 remain their numeric modes, other inputs become 1. The mode list describes normalized output, not a rejecting input enum.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
1
],
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 686,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_login": {
"description": "Integer-casts input: 2 stores y, 3 stores p, all other values store n. Response maps n/y/p to 1/2/3 and unmatched stored values to null.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
1
],
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 713,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_login_global_users": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 738,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_cancellation": {
"description": "PHP integer-casts the input; 2, 3 and 4 remain their numeric modes, other inputs become 1. The mode list describes normalized output, not a rejecting input enum.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
1
],
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 757,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cancellation_admin_confirmation_mail": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 784,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_reservation": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 803,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_paymentpage": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 812,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_sendinfo": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 822,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_label_notifications": {
"description": "Non-array input becomes []. For each rule: trim a nonempty label of at most 15 characters, retain its first occurrence, require a PHP-valid email and a selected-account custom non-PDF email template. Invalid/duplicate entries are skipped, not a whole-field rejection. Storage uses internal template IDs only; response emits public emailtemplate v2 IDs.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
[]
],
"x-edoobox-canonicalSchema": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"email",
"emailtemplate"
],
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 15
},
"email": {
"type": "string"
},
"emailtemplate": {
"type": "string",
"pattern": "^emailtemplate_[a-f0-9]{12}_-?[0-9]+$"
}
},
"additionalProperties": false
}
},
"x-edoobox-preconditions": [
"The referenced template must already exist for this account; empty [] is a valid disabling input."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 831,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3060,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Actual rule filtering and per-account template lookup."
},
{
"file": "application/models/v2/Settings.php",
"line": 3105,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Response filter emits typed public emailtemplate IDs."
},
{
"file": "application/models/v2/Settings.php",
"line": 3159,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Template must belong to the account and be an email template, not PDF."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_send_pdf": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 850,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_send_ics": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 859,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_reminder": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 878,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_reminder_hours": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 887,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"booking_visitconfirmation": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 902,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_number": {
"description": "The hook integer-casts the supplied value, rejects results outside 1..999999999, and rejects an already-used booking number in the selected account. A successful update stores the counter; coercible text is accepted, so a rejecting integer wire type would be inaccurate.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
100001
],
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 1,
"maximum": 999999999
},
"x-edoobox-preconditions": [
"The chosen number must not already occur in the selected account."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 937,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 288,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual hook range check and tenant-scoped uniqueness query."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_percent": {
"description": "Integer-casts then clamps to 0 through 100. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
50
],
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 948,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_notvisitmail": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 975,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_cert_senddelayhours": {
"description": "Integer-casts then clamps to 0 through 1440. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
50
],
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 1440
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 996,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_validation_url": {
"description": "Loose PHP comparison to true controls enable/disable. Enabling verifies the certificate_validation subscription feature; disabling bypasses that enablement check. Writes the certificate-validation flag.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"An enabled subscription feature is an account-dependent runtime precondition, not an unconditional JSON requirement."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1024,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 40,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual field hook handles loose truthiness and subscription verification."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_attachpdf": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1046,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_cert_attachpdfpercent": {
"description": "Integer-casts then clamps to 0 through 100. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
50
],
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1206,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_secondemail": {
"description": "Getter maps PHP truthiness to integer enable/disable. Disabling always updates the flag. Enabling requires an existing stored destination field, or a supplied recognized booking_cert_secondemail_field public field key. A missing/unrecognized destination returns false from the hook. The companion field is conditionally required based on stored account state, not on every request.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"When no destination is stored, enabling requires booking_cert_secondemail_field in the same data object."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1094,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 641,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual conditional second-email flag hook; getter called explicitly and destination checked against stored settings."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_secondemail_field": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1115,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_secondemail": {
"description": "Getter maps PHP truthiness to integer enable/disable. Disabling always updates the flag. Enabling requires an existing stored destination field, or a supplied recognized booking_secondemail_field public field key. A missing/unrecognized destination returns false from the hook. The companion field is conditionally required based on stored account state, not on every request.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"When no destination is stored, enabling requires booking_secondemail_field in the same data object."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1150,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 693,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual conditional second-email flag hook; getter called explicitly and destination checked against stored settings."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_secondemail_field": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1171,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_offerlist_secondemail_field": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1233,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_offerlist_cancel_mail": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1268,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_allow_promotions": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1288,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_designation_promotions": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 50,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 1297
},
"skip_counter": false,
"question_deliverables_show": false,
"multi_offer_show": false,
"multi_offer_child_limit": false,
"automatic_deletion": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1367,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"edsupport_access": {
"description": "true or string true becomes 1; false, string false, null and empty string become 0; otherwise positive integer-cast values are retained, nonpositive values become 0. The getter does not reject noncanonical types.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "integer",
"minimum": 0
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1395,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"payment_confirmation_mail": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1428,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"barcode_type": {
"x-edoobox-knownInputs": [
"pdf417",
"qrcode",
"datamatrix"
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"examples": [
"pdf417"
],
"x-edoobox-sourceLine": 1437
},
"barcode_mobile_wallet": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1461,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"mobile_wallet_background_color": {
"description": "Trims/string-casts; six hexadecimal digits with optional # normalize to uppercase #RRGGBB. Empty or malformed values become '#0068B0'. No rejecting input pattern is applied.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"#12ab34"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1470,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3181,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Shared color normalizer returns uppercase hex or the field-specific fallback."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"mobile_wallet_foreground_color": {
"description": "Trims/string-casts; six hexadecimal digits with optional # normalize to uppercase #RRGGBB. Empty or malformed values become ''. No rejecting input pattern is applied.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"#12ab34"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1479,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3181,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Shared color normalizer returns uppercase hex or the field-specific fallback."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"mobile_wallet_use_offer_image": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1488,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"mobile_wallet_fallback_image_url": {
"description": "String-casts, strips HTML tags, trims and byte-truncates to 500 bytes. Despite the field name, no URL syntax or scheme validator is applied.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"https://example.invalid/support"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1497,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"mobile_wallet_display_name": {
"description": "String-casts, strips HTML tags, trims and byte-truncates to 150 bytes. The response setter only string-casts stored data.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"Example organization"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1506,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"mobile_wallet_support_url": {
"description": "String-casts, strips HTML tags, trims and byte-truncates to 500 bytes. Despite the field name, no URL syntax or scheme validator is applied.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"https://example.invalid/support"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1515,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"barcode_ticket": {
"x-edoobox-knownInputs": [
false,
"always",
"offer"
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"examples": [
false
],
"x-edoobox-sourceLine": 1524
},
"collective_booking_max": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1548,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"collective_booking_identify": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. Unknown keys return null; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1563,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"collective_booking_identify_privacy": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. The clear sentinel is stored as NO; unknown keys store empty text. Readback is false for NO, a public key when recognized, and null otherwise. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1586,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"collective_booking_identify_obligatory": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1610,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"collective_booking_master": {
"x-edoobox-knownInputs": [
"manual",
"all",
false
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"examples": [
"manual"
],
"x-edoobox-sourceLine": 1673
},
"security_headers_csp": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1654,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"design_subcategory": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1699,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"legaltext_atc": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1708,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"legaltext_ri": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1717,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"legaltext_pp": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1726,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"attendance_config": {
"type": "array",
"items": {
"type": "object",
"properties": {
"status": {
"type": [
"number",
"string"
],
"description": "Converted to integer by the callback."
},
"order": {
"type": [
"number",
"string"
]
},
"counter": {},
"val": {},
"color": {},
"help": {}
},
"additionalProperties": true,
"required": [
"status"
]
},
"description": "The converted statuses 0, 1 and 2 must each occur exactly once among processed items. Counter values outside 0..100 become 0. Extra statuses are supported; processing stops after 41 entries or on a missing status.",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 153,
"reason": "PUT sorts the status-record array, casts status/order and normalizes counter.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 208,
"reason": "Exactly three required-status occurrences are checked.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 1739,
"reason": "Response returns ordered status records as a JSON array.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"language": {
"type": "object",
"properties": {
"active": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true,
"description": "Active language codes in desired order. Unknown codes are ignored. Account language configuration governs availability.",
"required": [
"active"
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 77,
"reason": "PUT expects an active language-code array inside an object.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 1759,
"reason": "The resource Structure response placeholder is false; enriched action responses may differ.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"edsubscription": false,
"edsubscription_testinguntildate": false,
"versions": false,
"pdf_engine": {
"description": "PHP switch maps input mode 1 to dompdf; mode 2 and other inputs default to mpdf. Readback maps stored dompdf/mpdf to numeric 1/2, with null for unknown stored text.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
2
],
"x-edoobox-canonicalSchema": {
"enum": [
1,
2
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1821,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"pdf_edit_restriction_password": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1851,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"pdf_paper_size": {
"description": "Requires an exact installed library paper-size key after case folding, before aP trim/storage normalization. Unknown values return strict false from the getter and the final generic joined writer rejects ED80100 before joined persistence. The existing case-insensitive pattern reflects those installed meaningful paper-size strings; the own parent and relation predicates remain independently checked.",
"x-edoobox-schemaStatus": "source-reviewed-validation",
"examples": [
"a4"
],
"x-edoobox-canonicalSchema": {
"enum": [
"4a0",
"2a0",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6",
"a7",
"a8",
"a9",
"a10",
"b0",
"b1",
"b2",
"b3",
"b4",
"b5",
"b6",
"b7",
"b8",
"b9",
"b10",
"c0",
"c1",
"c2",
"c3",
"c4",
"c5",
"c6",
"c7",
"c8",
"c9",
"c10",
"ra0",
"ra1",
"ra2",
"ra3",
"ra4",
"sra0",
"sra1",
"sra2",
"sra3",
"sra4",
"letter",
"half-letter",
"legal",
"ledger",
"tabloid",
"executive",
"folio",
"commercial #10 envelope",
"catalog #10 1/2 envelope",
"8.5x11",
"8.5x14",
"11x17"
]
},
"type": "string",
"pattern": "^(?:4[aA]0|2[aA]0|[aA]0|[aA]1|[aA]2|[aA]3|[aA]4|[aA]5|[aA]6|[aA]7|[aA]8|[aA]9|[aA]10|[bB]0|[bB]1|[bB]2|[bB]3|[bB]4|[bB]5|[bB]6|[bB]7|[bB]8|[bB]9|[bB]10|[cC]0|[cC]1|[cC]2|[cC]3|[cC]4|[cC]5|[cC]6|[cC]7|[cC]8|[cC]9|[cC]10|[rR][aA]0|[rR][aA]1|[rR][aA]2|[rR][aA]3|[rR][aA]4|[sS][rR][aA]0|[sS][rR][aA]1|[sS][rR][aA]2|[sS][rR][aA]3|[sS][rR][aA]4|[lL][eE][tT][tT][eE][rR]|[hH][aA][lL][fF]\\-[lL][eE][tT][tT][eE][rR]|[lL][eE][gG][aA][lL]|[lL][eE][dD][gG][eE][rR]|[tT][aA][bB][lL][oO][iI][dD]|[eE][xX][eE][cC][uU][tT][iI][vV][eE]|[fF][oO][lL][iI][oO]|[cC][oO][mM][mM][eE][rR][cC][iI][aA][lL]\\ \\#10\\ [eE][nN][vV][eE][lL][oO][pP][eE]|[cC][aA][tT][aA][lL][oO][gG]\\ \\#10\\ 1/2\\ [eE][nN][vV][eE][lL][oO][pP][eE]|8\\.5[xX]11|8\\.5[xX]14|11[xX]17)$",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1870,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "vendor/dompdf/dompdf/src/Adapter/CPDF.php",
"line": 42,
"sha256": "7dca4a096b08c006f12bfccd733068223d92e502b9a625c49bd919373f714001",
"reason": "Installed Dompdf paper-size key list, matched case-insensitively by the source getter."
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c",
"reason": "Normal fields check strict false; joined fields instead collect getter output at 1793 and execute it at 1827 without that rejection. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"pdf_custom_css": {
"description": "Parses CSS, removes non-declaration blocks, keeps selectors starting .custom_ or *, and filters rule value node classes. font-family is retained only when a family is among Pdf::$fonts. Stores compact CSS base64; readback decodes/formats it or returns empty text. Parser errors and PDF renderer prerequisites are not a closed JSON Schema grammar.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
".custom_example { color: #123456; }"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-preconditions": [
"CSS parser grammar and configured font support are checked by source/parser, not replicated as a misleading JSON pattern."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1892,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/libraries/edoobox/integrations/pdf/Pdf.php",
"line": 16,
"sha256": "b286cdc4d20e02601db9acc35b06564357f10378961e72cb8f4e22e64b3a3254",
"reason": "Allowed PDF font keys used by the CSS normalizer."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"dinaco_client_id": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 1960
},
"dinaco_client_secret": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 1979
},
"gtm_mess_id": {
"description": "For input longer than five bytes, a non-anchored G-[a-zA-z0-9]{5,20} substring must occur or the value becomes empty. Short values are retained. aP then trims, replaces newlines and truncates. This is not a strict GA4-ID pattern validator.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"G-EXAMPLE1234"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1998,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "aP normalization after the substring test."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"gtm_container_id": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 2024
},
"meta_html": {
"description": "Parses supplied HTML and keeps only meta tags whose name is google-site-verification or facebook-domain-verification. Only their name/content attributes are serialized, then aP truncates to 250 stored characters. This is a lossy sanitizer, not a rejecting HTML schema.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"<meta name=\"google-site-verification\" content=\"synthetic-verification\">"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2044,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"system_attachments_file_naming": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "string"
}
},
"description": "Map keyed by an emailtemplate public ID or ics. Each value maps language codes to file-name text. Filename characters and suffix are normalized; unknown templates/languages are ignored.",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2076,
"reason": "Input iterates template/ics keys and language-to-name objects; edid occurs on map keys.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/Settings.php",
"line": 2106,
"reason": "Response maps stored keys back to public emailtemplate IDs or ics.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"website_integration": {
"enum": [
"iframe",
"wordpress"
],
"x-edoobox-sourceLine": 2132
},
"website_url": {
"description": "Accepts empty string or a string accepted by PHP FILTER_VALIDATE_URL. Other values return strict false and API_DATA rejects the update. No restriction to HTTP/HTTPS is imposed by this getter.",
"x-edoobox-schemaStatus": "source-reviewed-validation",
"examples": [
"https://example.invalid"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"type": "string",
"x-edoobox-preconditions": [
"PHP FILTER_VALIDATE_URL is the rejecting syntax check; JSON Schema format:uri is not asserted as an exact equivalent."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2159,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c",
"reason": "Strict false getter rejects invalid URL inputs. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"admin_custom_permissions": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 2172,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"admin_academic_title_use": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 2192,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
}
},
"additionalProperties": true,
"description": "Source-declared fields; action-specific and account validation still apply.",
"minProperties": 1,
"x-edoobox-readOnlyFields": [
"id",
"congress_module",
"root_category",
"shortcut",
"organization_country",
"organization_currency",
"skip_counter",
"question_deliverables_show",
"multi_offer_show",
"multi_offer_child_limit",
"edsubscription",
"edsubscription_testinguntildate",
"versions"
],
"x-edoobox-clientRestriction": "Read-only fields are forbidden by this client contract to prevent silently ignored writes; the legacy API itself skips them. Explicit source-marked update context fields remain accepted for hook validation without changing their immutable database columns."
},
"id": {
"type": "string",
"pattern": "^[a-z0-9]+_[a-f0-9]{12}_-?[0-9]+$",
"description": "Opaque edoobox v2 object ID returned by this account. Never send a raw database ID. The synthetic example is illustrative and is not a real record.",
"examples": [
"settings_012345abcdef_123456"
]
}
},
"additionalProperties": true,
"required": [
"data"
]
}Account-Einstellungen ändern
{
"data": {
"organization_name": "Beispielorganisation",
"firstweekday": 1,
"automatic_deletion": 180
}
}Antworten
11HTTP-Status und Antwortinhalt gemeinsam auswerten. In dieser API können auch Antworten mit HTTP 200 einen Fehler enthalten.
200application/json
Öffentliche Account-ID und update-Ergebnis.
Response Header
X-Edoobox-Revision
Rotated account revision supplied for the next action in one reviewed sequence.
- pattern
"^[a-f0-9]{32}$"
Vollständiges Schema als JSON
{
"type": "string",
"pattern": "^[a-f0-9]{32}$"
}application/json
success boolean error boolean | string error_code string data object id string erforderlich Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID.
- pattern
"^account_[a-f0-9]{12}_-?[0-9]+$"
update boolean erforderlich Zusätzliche, hier nicht aufgeführte Felder sind erlaubt.
type string Zusätzliche, hier nicht aufgeführte Felder sind erlaubt.
Vollständiges Schema als JSON
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"error": {
"type": [
"boolean",
"string"
]
},
"error_code": {
"type": "string"
},
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^account_[a-f0-9]{12}_-?[0-9]+$",
"description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID."
},
"update": {
"type": "boolean"
}
},
"additionalProperties": true,
"required": [
"id",
"update"
]
},
"type": {
"type": "string"
}
},
"additionalProperties": true
}Beispiel
{
"success": true,
"error": false,
"data": {
"id": "account_012345abcdef_123456",
"update": true
}
}400application/json
Invalid request.
application/json
Kein Schema angegeben. Daraus lässt sich kein vollständiger Feldvertrag ableiten.
Beispiel
{
"success": false,
"error": "ED40006"
}401application/json
Missing/expired token, missing account context, account paused or model-specific authorization failure.
application/json
Kein Schema angegeben. Daraus lässt sich kein vollständiger Feldvertrag ableiten.
Beispiel
{
"success": false,
"error": "ED40103"
}402application/json
Missing/invalid action data or subscription/operation restriction.
application/json
Kein Schema angegeben. Daraus lässt sich kein vollständiger Feldvertrag ableiten.
Beispiel
{
"success": false,
"error": "ED80100"
}403application/json
Permission denied. Browser CORS rejection may have an empty body.
application/json
Kein Schema angegeben. Daraus lässt sich kein vollständiger Feldvertrag ableiten.
Beispiel
{
"success": false,
"error": "ED40340"
}404application/json
Unknown resource/action or unsupported method.
application/json
Kein Schema angegeben. Daraus lässt sich kein vollständiger Feldvertrag ableiten.
Beispiel
{
"success": false,
"error": "ED80019"
}409application/json
The account changed after the reviewed read. No domain operation is dispatched; obtain fresh state and review again.
application/json
Zusätzliche, hier nicht aufgeführte Felder sind erlaubt.
Vollständiges Schema als JSON
{
"type": "object",
"additionalProperties": true
}Beispiel
{
"error": "ED40901",
"error_code": "mutation_revision_conflict"
}422application/json
Validation failed.
application/json
Kein Schema angegeben. Daraus lässt sich kein vollständiger Feldvertrag ableiten.
Beispiel
{
"success": false,
"error": "ED80020"
}429application/json
Request/login rate limit exceeded. Honor Retry-After when supplied; legacy rate-limit paths may omit it. Retry only proven reads within a bounded deadline; a mutation is never automatically replayed after an ambiguous response.
Response Header
Retry-After
Optional server delay in whole seconds or an HTTP date. Absence is not permission for an immediate retry.
Schema-Beispiel
"30"Vollständiges Schema als JSON
{
"type": "string",
"examples": [
"30"
]
}application/json
Kein Schema angegeben. Daraus lässt sich kein vollständiger Feldvertrag ableiten.
Beispiel
{
"success": false,
"error": "ED42902"
}502application/json
Server-side operation failed.
application/json
Kein Schema angegeben. Daraus lässt sich kein vollständiger Feldvertrag ableiten.
Beispiel
{
"success": false,
"error": "ED50201"
}503application/json
The account mutation lock or revision store is unavailable. No unprotected fallback is executed.
Response Header
Retry-After
Fester Wert: 1
Vollständiges Schema als JSON
{
"type": "integer",
"const": 1
}application/json
Zusätzliche, hier nicht aufgeführte Felder sind erlaubt.
Vollständiges Schema als JSON
{
"type": "object",
"additionalProperties": true
}Beispiel
{
"error": "ED50301",
"error_code": "mutation_revision_busy"
}Quelle & Metadaten
application/models/v2/Settings.php:2324updateSettings()Diese Angaben stammen unverändert aus der gelieferten OpenAPI-Datei. Zusätzliche Freigaben, Vorbedingungen, sensible Felder und Hinweise stehen in den Erweiterungen.
x-edoobox-mutates-state
truex-edoobox-runtimeMutationGuard
truex-edoobox-documentationReview
{
"file": "docs/openapi/operation-contracts/06-admin-settings.json",
"notes": []
}x-edoobox-source
{
"file": "application/models/v2/Settings.php",
"method": "updateSettings",
"line": 2324
}x-edoobox-documentationStatus
"reviewed"x-edoobox-readOnly
falsex-edoobox-safeForAutomation
falsex-edoobox-permission
{
"resource": "settings",
"short": "setti",
"checkedByDispatcher": true,
"levels": [
3,
4
],
"description": "Resource permission mapping from APIPermissions(), Authfunc::_getCheckJWT. Additional model/admin/plugin checks may apply; resources absent from api_permission do not acquire a fictitious scope."
}Vollständige Operation als JSON
{
"operationId": "put_v2_settings_id",
"summary": "Account-Einstellungen ändern",
"description": "Aktualisiert die übergebenen zentralen Account-Einstellungen. Es werden nur bekannte, schreibbare Structure-Felder verarbeitet; Datums-/Zahlen-/Schalterwerte werden gemäß dem jeweiligen Feld normalisiert. Dynamische Datenfeldnamen für Mehrfachanmeldung oder Zweitemail müssen zur aktuellen Teilnehmerdatenstruktur gehören. Sprach-, Präsenz-, Abrechnungs- und Buchungsregeln können weitere native Validierungen und Folgeänderungen auslösen; Abonnement-/Berechtigungsfreigaben bleiben maßgeblich.",
"tags": [
"settings"
],
"security": [
{
"bearerAuth": [],
"accountContext": []
},
{
"sessionCookie": [],
"accountContext": []
}
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"description": "Öffentliche account-ID.",
"schema": {
"type": "string",
"pattern": "^account_[a-f0-9]{12}_-?[0-9]+$",
"description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID.",
"examples": [
"account_012345abcdef_123456"
]
}
},
{
"name": "language",
"in": "header",
"required": false,
"description": "Account language code, where the resource supports setLanguage().",
"schema": {
"type": "string",
"examples": [
"de"
]
}
},
{
"name": "X-Edoobox-If-Revision",
"in": "header",
"required": false,
"schema": {
"type": "string",
"pattern": "^[a-f0-9]{32}$",
"examples": [
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
]
},
"description": "Optional account mutation revision from a preceding authenticated auth-context snapshot. The dispatcher compares it while holding the account lock; mismatch409 requires a new review."
}
],
"responses": {
"200": {
"description": "Öffentliche Account-ID und update-Ergebnis.",
"content": {
"application/json": {
"example": {
"success": true,
"error": false,
"data": {
"id": "account_012345abcdef_123456",
"update": true
}
},
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"error": {
"type": [
"boolean",
"string"
]
},
"error_code": {
"type": "string"
},
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^account_[a-f0-9]{12}_-?[0-9]+$",
"description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID."
},
"update": {
"type": "boolean"
}
},
"additionalProperties": true,
"required": [
"id",
"update"
]
},
"type": {
"type": "string"
}
},
"additionalProperties": true
}
}
},
"headers": {
"X-Edoobox-Revision": {
"schema": {
"type": "string",
"pattern": "^[a-f0-9]{32}$"
},
"description": "Rotated account revision supplied for the next action in one reviewed sequence."
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"example": {
"success": false,
"error": "ED40006"
}
}
}
},
"401": {
"description": "Missing/expired token, missing account context, account paused or model-specific authorization failure.",
"content": {
"application/json": {
"example": {
"success": false,
"error": "ED40103"
}
}
}
},
"402": {
"description": "Missing/invalid action data or subscription/operation restriction.",
"content": {
"application/json": {
"example": {
"success": false,
"error": "ED80100"
}
}
}
},
"403": {
"description": "Permission denied. Browser CORS rejection may have an empty body.",
"content": {
"application/json": {
"example": {
"success": false,
"error": "ED40340"
}
}
}
},
"404": {
"description": "Unknown resource/action or unsupported method.",
"content": {
"application/json": {
"example": {
"success": false,
"error": "ED80019"
}
}
}
},
"409": {
"description": "The account changed after the reviewed read. No domain operation is dispatched; obtain fresh state and review again.",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": true
},
"example": {
"error": "ED40901",
"error_code": "mutation_revision_conflict"
}
}
}
},
"422": {
"description": "Validation failed.",
"content": {
"application/json": {
"example": {
"success": false,
"error": "ED80020"
}
}
}
},
"429": {
"description": "Request/login rate limit exceeded. Honor Retry-After when supplied; legacy rate-limit paths may omit it. Retry only proven reads within a bounded deadline; a mutation is never automatically replayed after an ambiguous response.",
"content": {
"application/json": {
"example": {
"success": false,
"error": "ED42902"
}
}
},
"headers": {
"Retry-After": {
"description": "Optional server delay in whole seconds or an HTTP date. Absence is not permission for an immediate retry.",
"schema": {
"type": "string",
"examples": [
"30"
]
}
}
}
},
"502": {
"description": "Server-side operation failed.",
"content": {
"application/json": {
"example": {
"success": false,
"error": "ED50201"
}
}
}
},
"503": {
"description": "The account mutation lock or revision store is unavailable. No unprotected fallback is executed.",
"headers": {
"Retry-After": {
"schema": {
"type": "integer",
"const": 1
}
}
},
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": true
},
"example": {
"error": "ED50301",
"error_code": "mutation_revision_busy"
}
}
}
}
},
"x-edoobox-mutates-state": true,
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": false,
"firstweekday": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 44,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"format_date": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 53,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"format_time": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 62,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"format_calendar_grid": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 71,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"format_timezone": {
"type": "string",
"description": "Existing IANA timezone name, for example Europe/Zurich; the update callback looks up zone_name.",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 5,
"reason": "PUT consumes a zone-name string instead of the integer get placeholder.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 85,
"reason": "Response returns the account timezone zone_name.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"congress_module": false,
"format_number": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 112,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"design": {
"type": "string",
"pattern": "^[a-z0-9]+_[a-f0-9]{12}_-?[0-9]+$",
"description": "Opaque edoobox v2 object ID returned by this account. Never send a raw database ID. The synthetic example is illustrative and is not a real record.",
"examples": [
"design_012345abcdef_123456"
],
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 121
},
"root_category": false,
"shortcut": false,
"organization_name": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 150
},
"organization_contactperson": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 159
},
"organization_street": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 120,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 168
},
"organization_postcode": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 20,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 177
},
"organization_town": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 186
},
"organization_country": false,
"organization_language": {
"description": "Maps a configured language key to its internal language entry; unknown keys default internally. Response returns the configured language key or null for an unmatched legacy value. This is a language selector, not an externally exposed numeric ID.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"de"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 205,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/langedoobox_helper.php",
"line": 731,
"sha256": "6454b27d47a74f3cf236ef8e258fbe821228c1607165d00433a309b2e9127d3c",
"reason": "edLangIDByName returns configured entry, with fallback for unknown names."
},
{
"file": "application/helpers/langedoobox_helper.php",
"line": 566,
"sha256": "6454b27d47a74f3cf236ef8e258fbe821228c1607165d00433a309b2e9127d3c",
"reason": "edLangById converts internal entries back to public language keys."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"organization_phone": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 120,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 214
},
"organization_url": {
"description": "Removes exact lowercase leading http:// or https:// before aP trim/newline/truncation to 250 stored characters. No URL syntax is required; other schemes and uppercase prefixes are not normalized in that step.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"https://example.invalid"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 223,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "aP text storage normalization."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"organization_email": {
"type": "string",
"maxLength": 200,
"description": "Trimmed input must pass PHP FILTER_VALIDATE_EMAIL. Native PUT rejects raw input over200 UTF-8 characters (including outer whitespace), escaped trimmed storage over200 characters, or any aP/aQ roundtrip change to the validated address. Rejection returns the existing invalid-email path before persistence; valid addresses are preserved.",
"x-edoobox-validation": "PHP FILTER_VALIDATE_EMAIL after trim; raw UTF-8 length<=200; escaped trimmed length<=200; aQ(aP(trimmed,true,200))===trimmed",
"x-edoobox-maxStoredLength": 200,
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 57,
"reason": "PUT callback validates the trimmed email syntax, checks raw and encoded lengths, and requires an exact aP/aQ identity before returning storage. False is rejected by generic update as ED90100 before a write.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"lineEnd": 75
},
{
"file": "application/models/v2/Settings.php",
"line": 237,
"reason": "Incoming model getter is bounded to200 characters; generic PUT uses the dedicated validation hook; response unescapes stored text.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"lineEnd": 246
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"organization_currency": false,
"billingaddress_organization": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 257
},
"billingaddress_user": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 50,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 266
},
"billingaddress_street": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 275
},
"billingaddress_postcode_town": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 100,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 284
},
"billingaddress_phone": {
"description": "Trims the value then applies aP text normalization (trim/newline replacement/truncation to 250 stored characters). It does not validate telephone syntax. Some nonscalar values cause a PHP type error before aP.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"+41 00 000 00 00"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 293,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "Actual aP string-only/truncating storage normalization."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"billingaddress_email": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 303
},
"billingaddress_status": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 312,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"user_duplicate_config": {
"description": "Accepts a decoded object/array or a JSON-encoded string; non-array/invalid JSON becomes defaults. Known keys are normalized: booleans; candidate threshold clamped0..100; nullable auto-merge threshold1..100; max_merge_users2..10; newest/oldest strategy with default; recognized unique field rules with weights1..10. Explicit rules:[] clears rules. Unknown keys/rules are discarded; hash/version are computed server-side. Changing matching rules invalidates cached duplicate candidates, indexes and worker state.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
{
"enabled": true,
"candidate_threshold": 60,
"rules": []
}
],
"x-edoobox-canonicalSchema": {
"type": "object"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 321,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 28,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Actual normalizeConfigForSave preserves unchanged rule hashes and normalizes current state."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 40,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Full known config defaults, coercion, clamping, hash/version semantics."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 648,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Rule filtering, uniqueness and weight normalization."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 968,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Allowed public data-field selectors for duplicate matching."
},
{
"file": "application/models/v2/Userduplicatefunc.php",
"line": 488,
"sha256": "10da9ce285a01836c403fec784c04775e7713b8f0c61d49c21de38cf3f8ea157",
"reason": "Changed matching rules invalidate derived duplicate data, not only the stored JSON."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"admin_avatar_mode": {
"description": "String-casts the input; exact symbol selects symbol, every other value selects face. Unsupported values default rather than fail.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"symbol"
],
"x-edoobox-canonicalSchema": {
"enum": [
"face",
"symbol"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 344,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"account_billing_recipient_type": {
"description": "Strict recognized strings organization, billing_address and admin are stored; legacy email and every other value normalize to organization. This is a defaulting normalizer, not a rejecting input enum.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"organization"
],
"x-edoobox-canonicalSchema": {
"enum": [
"organization",
"billing_address",
"admin"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 363,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"account_billing_recipient_email": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 390
},
"account_billing_recipient_admin_id": {
"anyOf": [
{
"type": "string",
"pattern": "^admin_[a-f0-9]{12}_(?:-35|[1-9][0-9]*)$",
"examples": [
"admin_012345abcdef_123456"
],
"description": "Canonical public admin v2 ID issued in this account; server validates the account-bound checksum and rejects raw IDs."
},
{
"enum": [
null,
false,
0,
"0",
""
],
"x-edoobox-id-kind": "empty-relation"
}
],
"examples": [
"admin_012345abcdef_123456",
null,
false
],
"description": "Choose an account-owned administrator for billing. The exact clear sentinels null, false, 0, string 0 and the empty string normalize to no administrator. Positive database primary keys are rejected; numeric acceptance is confined to the literal clear sentinel 0.",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 421,
"reason": "The corrected inbound getter accepts a canonical tenant-bound admin v2 reference and normalizes explicit clear sentinels; positive raw primary keys are rejected.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/Settings.php",
"line": 437,
"reason": "The outbound setter encodes a positive database admin key as a public v2 ID and emits false for zero.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"reason": "Join updates call the field getter before persisting; response serialization calls the field setter at line1068. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged.",
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"account_billing_auto_charge_enabled": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 440,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"account_billing_topup_enabled": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 459,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"account_billing_topup_threshold": {
"description": "Casts the input to PHP float and rounds to two decimal places. No positive minimum, currency range or rejecting numeric wire type is enforced by this getter.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
25.5
],
"x-edoobox-canonicalSchema": {
"type": "number"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 478,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"account_billing_topup_amount": {
"description": "Casts the input to PHP float and rounds to two decimal places. No positive minimum, currency range or rejecting numeric wire type is enforced by this getter.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
25.5
],
"x-edoobox-canonicalSchema": {
"type": "number"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 497,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"internal_all": {
"description": "Loose PHP comparison to true controls enable/disable. Enabling verifies the internal_function subscription feature; disabling bypasses that enablement check. Enable also regenerates the internal access code; disable clears it.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"An enabled subscription feature is an account-dependent runtime precondition, not an unconditional JSON requirement."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 516,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 23,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual field hook handles loose truthiness and subscription verification."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"notification_minimummaximum": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 526,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"notification_booking": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 535,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"vat_included": {
"description": "PHP loose comparison to exclusive stores 1, other values store 0. Response returns exclusive for stored 1 and including otherwise.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"including"
],
"x-edoobox-canonicalSchema": {
"enum": [
"exclusive",
"including"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 544,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"vat_reverse_charge_texts": {
"description": "An associative language-to-text array is filtered to configured language keys; values pass through aP. Non-array input and unknown keys produce/are removed into an empty JSON list. Readback JSON-decodes storage; malformed legacy JSON yields null.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
{
"de": "Example tax information"
}
],
"x-edoobox-canonicalSchema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 553,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "Each recognized text is normalized by aP."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"offer_sort": {
"description": "PHP loose comparison to date selects date; every other input stores manuell. Readback maps the alternative to manual. Input and output spellings differ.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"date"
],
"x-edoobox-canonicalSchema": {
"enum": [
"date",
"manual"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 580,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"offer_func_1": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 589,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"offer_func_1_status": {
"description": "PHP loose comparison to numeric 3 selects storage text 3, otherwise 4. Readback emits numeric 3 or 4.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
3
],
"x-edoobox-canonicalSchema": {
"enum": [
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 598,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"offer_archiving": {
"description": "Integer-casts the input, preserves modes 1/2/3 and maps all other values to 0. The output setter returns false for disabled.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
0
],
"x-edoobox-canonicalSchema": {
"enum": [
0,
1,
2,
3
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 607,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"offer_archiving_reference_date": {
"description": "Exact string start selects start; every other value selects visibility. This is normalization, not a rejecting enum.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"visibility"
],
"x-edoobox-canonicalSchema": {
"enum": [
"start",
"visibility"
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 634,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"news_and_tricks": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 644,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_create_admin": {
"description": "Integer-casts the input. Modes 1 and 2 remain selected; all other inputs normalize to disabled 0. Readback uses false for disabled.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
1
],
"x-edoobox-canonicalSchema": {
"enum": [
0,
1,
2
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 653,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_userlogin": {
"description": "PHP integer-casts the input; 2, 3 and 4 remain their numeric modes, other inputs become 1. The mode list describes normalized output, not a rejecting input enum.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
1
],
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 686,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_login": {
"description": "Integer-casts input: 2 stores y, 3 stores p, all other values store n. Response maps n/y/p to 1/2/3 and unmatched stored values to null.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
1
],
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 713,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_login_global_users": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 738,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_cancellation": {
"description": "PHP integer-casts the input; 2, 3 and 4 remain their numeric modes, other inputs become 1. The mode list describes normalized output, not a rejecting input enum.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
1
],
"x-edoobox-canonicalSchema": {
"enum": [
1,
2,
3,
4
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 757,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cancellation_admin_confirmation_mail": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 784,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_reservation": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 803,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_paymentpage": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 812,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_sendinfo": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 822,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_label_notifications": {
"description": "Non-array input becomes []. For each rule: trim a nonempty label of at most 15 characters, retain its first occurrence, require a PHP-valid email and a selected-account custom non-PDF email template. Invalid/duplicate entries are skipped, not a whole-field rejection. Storage uses internal template IDs only; response emits public emailtemplate v2 IDs.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
[]
],
"x-edoobox-canonicalSchema": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"email",
"emailtemplate"
],
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 15
},
"email": {
"type": "string"
},
"emailtemplate": {
"type": "string",
"pattern": "^emailtemplate_[a-f0-9]{12}_-?[0-9]+$"
}
},
"additionalProperties": false
}
},
"x-edoobox-preconditions": [
"The referenced template must already exist for this account; empty [] is a valid disabling input."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 831,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3060,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Actual rule filtering and per-account template lookup."
},
{
"file": "application/models/v2/Settings.php",
"line": 3105,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Response filter emits typed public emailtemplate IDs."
},
{
"file": "application/models/v2/Settings.php",
"line": 3159,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Template must belong to the account and be an email template, not PDF."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_send_pdf": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 850,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_send_ics": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 859,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_reminder": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 878,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_reminder_hours": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 887,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"booking_visitconfirmation": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 902,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_number": {
"description": "The hook integer-casts the supplied value, rejects results outside 1..999999999, and rejects an already-used booking number in the selected account. A successful update stores the counter; coercible text is accepted, so a rejecting integer wire type would be inaccurate.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
100001
],
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 1,
"maximum": 999999999
},
"x-edoobox-preconditions": [
"The chosen number must not already occur in the selected account."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 937,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 288,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual hook range check and tenant-scoped uniqueness query."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_percent": {
"description": "Integer-casts then clamps to 0 through 100. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
50
],
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 948,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_notvisitmail": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 975,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_cert_senddelayhours": {
"description": "Integer-casts then clamps to 0 through 1440. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
50
],
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 1440
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 996,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_validation_url": {
"description": "Loose PHP comparison to true controls enable/disable. Enabling verifies the certificate_validation subscription feature; disabling bypasses that enablement check. Writes the certificate-validation flag.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"An enabled subscription feature is an account-dependent runtime precondition, not an unconditional JSON requirement."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1024,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 40,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual field hook handles loose truthiness and subscription verification."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_attachpdf": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1046,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_cert_attachpdfpercent": {
"description": "Integer-casts then clamps to 0 through 100. Out-of-range/coercible input is normalized instead of rejected. The response setter integer-casts stored rows; malformed legacy rows are not clamped on read.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
50
],
"x-edoobox-canonicalSchema": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1206,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_secondemail": {
"description": "Getter maps PHP truthiness to integer enable/disable. Disabling always updates the flag. Enabling requires an existing stored destination field, or a supplied recognized booking_cert_secondemail_field public field key. A missing/unrecognized destination returns false from the hook. The companion field is conditionally required based on stored account state, not on every request.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"When no destination is stored, enabling requires booking_cert_secondemail_field in the same data object."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1094,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 641,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual conditional second-email flag hook; getter called explicitly and destination checked against stored settings."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_cert_secondemail_field": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1115,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_secondemail": {
"description": "Getter maps PHP truthiness to integer enable/disable. Disabling always updates the flag. Enabling requires an existing stored destination field, or a supplied recognized booking_secondemail_field public field key. A missing/unrecognized destination returns false from the hook. The companion field is conditionally required based on stored account state, not on every request.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"type": "boolean"
},
"x-edoobox-preconditions": [
"When no destination is stored, enabling requires booking_secondemail_field in the same data object."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1150,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 693,
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f",
"reason": "Actual conditional second-email flag hook; getter called explicitly and destination checked against stored settings."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_secondemail_field": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1171,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_offerlist_secondemail_field": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. An unknown scalar key clears it; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1233,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"booking_offerlist_cancel_mail": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1268,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_allow_promotions": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1288,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"booking_designation_promotions": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 50,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 1297
},
"skip_counter": false,
"question_deliverables_show": false,
"multi_offer_show": false,
"multi_offer_child_limit": false,
"automatic_deletion": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1367,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"edsupport_access": {
"description": "true or string true becomes 1; false, string false, null and empty string become 0; otherwise positive integer-cast values are retained, nonpositive values become 0. The getter does not reject noncanonical types.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
false
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "integer",
"minimum": 0
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1395,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"payment_confirmation_mail": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1428,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"barcode_type": {
"x-edoobox-knownInputs": [
"pdf417",
"qrcode",
"datamatrix"
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"examples": [
"pdf417"
],
"x-edoobox-sourceLine": 1437
},
"barcode_mobile_wallet": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1461,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"mobile_wallet_background_color": {
"description": "Trims/string-casts; six hexadecimal digits with optional # normalize to uppercase #RRGGBB. Empty or malformed values become '#0068B0'. No rejecting input pattern is applied.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"#12ab34"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1470,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3181,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Shared color normalizer returns uppercase hex or the field-specific fallback."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"mobile_wallet_foreground_color": {
"description": "Trims/string-casts; six hexadecimal digits with optional # normalize to uppercase #RRGGBB. Empty or malformed values become ''. No rejecting input pattern is applied.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"#12ab34"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1479,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Settings.php",
"line": 3181,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Shared color normalizer returns uppercase hex or the field-specific fallback."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"mobile_wallet_use_offer_image": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1488,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"mobile_wallet_fallback_image_url": {
"description": "String-casts, strips HTML tags, trims and byte-truncates to 500 bytes. Despite the field name, no URL syntax or scheme validator is applied.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"https://example.invalid/support"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1497,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"mobile_wallet_display_name": {
"description": "String-casts, strips HTML tags, trims and byte-truncates to 150 bytes. The response setter only string-casts stored data.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"Example organization"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1506,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"mobile_wallet_support_url": {
"description": "String-casts, strips HTML tags, trims and byte-truncates to 500 bytes. Despite the field name, no URL syntax or scheme validator is applied.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"https://example.invalid/support"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1515,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"barcode_ticket": {
"x-edoobox-knownInputs": [
false,
"always",
"offer"
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"examples": [
false
],
"x-edoobox-sourceLine": 1524
},
"collective_booking_max": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1548,
"x-edoobox-canonicalType": "integer",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
1
]
},
"collective_booking_identify": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. Unknown keys return null; readback is false when empty, a public key when recognized, and null for unmatched legacy columns. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1563,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"collective_booking_identify_privacy": {
"description": "A false-like input clears the setting. A recognized public data field key is mapped to its internal column; internal column names must not be submitted. The clear sentinel is stored as NO; unknown keys store empty text. Readback is false for NO, a public key when recognized, and null otherwise. Arrays/objects are not valid PHP array keys and may produce an error; the canonical shape is a public key or false.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"email"
],
"x-edoobox-canonicalSchema": {
"anyOf": [
{
"type": "string",
"enum": [
"status",
"gender",
"first_name",
"last_name",
"street",
"postcode",
"location",
"country",
"language",
"phone_number",
"email",
"company",
"data_1",
"data_2",
"data_3",
"data_4",
"data_5",
"data_6",
"data_7",
"data_8",
"data_9",
"data_10",
"data_11",
"data_12",
"data_13",
"data_14",
"data_15",
"data_16",
"data_17",
"data_18",
"data_19",
"data_20",
"data_21",
"data_22",
"data_23",
"data_24",
"data_25",
"data_26",
"data_27",
"data_28",
"data_29",
"data_30"
]
},
{
"const": false
}
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1586,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/Datastructure.php",
"line": 20,
"sha256": "256cfd2c1002e4708b342b6649fa6bfda780273306c30ae2a43d424fd0e2e6a8",
"reason": "Public field-key to storage-column map; this selector is not a database record ID."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"collective_booking_identify_obligatory": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1610,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"collective_booking_master": {
"x-edoobox-knownInputs": [
"manual",
"all",
false
],
"x-edoobox-normalization": "Switch default normalizes other input values; case labels are not an exhaustive accepted-input enum.",
"examples": [
"manual"
],
"x-edoobox-sourceLine": 1673
},
"security_headers_csp": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1654,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"design_subcategory": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1699,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"legaltext_atc": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1708,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"legaltext_ri": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1717,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"legaltext_pp": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1726,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"attendance_config": {
"type": "array",
"items": {
"type": "object",
"properties": {
"status": {
"type": [
"number",
"string"
],
"description": "Converted to integer by the callback."
},
"order": {
"type": [
"number",
"string"
]
},
"counter": {},
"val": {},
"color": {},
"help": {}
},
"additionalProperties": true,
"required": [
"status"
]
},
"description": "The converted statuses 0, 1 and 2 must each occur exactly once among processed items. Counter values outside 0..100 become 0. Extra statuses are supported; processing stops after 41 entries or on a missing status.",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 153,
"reason": "PUT sorts the status-record array, casts status/order and normalizes counter.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settingsfunc.php",
"line": 208,
"reason": "Exactly three required-status occurrences are checked.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 1739,
"reason": "Response returns ordered status records as a JSON array.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"language": {
"type": "object",
"properties": {
"active": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true,
"description": "Active language codes in desired order. Unknown codes are ignored. Account language configuration governs availability.",
"required": [
"active"
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settingsfunc.php",
"line": 77,
"reason": "PUT expects an active language-code array inside an object.",
"sha256": "7a289d246c7c6b70fd88c739a308a883f0f983913cc06f6e04b160792aef3c4f"
},
{
"file": "application/models/v2/Settings.php",
"line": 1759,
"reason": "The resource Structure response placeholder is false; enriched action responses may differ.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"edsubscription": false,
"edsubscription_testinguntildate": false,
"versions": false,
"pdf_engine": {
"description": "PHP switch maps input mode 1 to dompdf; mode 2 and other inputs default to mpdf. Readback maps stored dompdf/mpdf to numeric 1/2, with null for unknown stored text.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
2
],
"x-edoobox-canonicalSchema": {
"enum": [
1,
2
]
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1821,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"pdf_edit_restriction_password": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 1851,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"pdf_paper_size": {
"description": "Requires an exact installed library paper-size key after case folding, before aP trim/storage normalization. Unknown values return strict false from the getter and the final generic joined writer rejects ED80100 before joined persistence. The existing case-insensitive pattern reflects those installed meaningful paper-size strings; the own parent and relation predicates remain independently checked.",
"x-edoobox-schemaStatus": "source-reviewed-validation",
"examples": [
"a4"
],
"x-edoobox-canonicalSchema": {
"enum": [
"4a0",
"2a0",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6",
"a7",
"a8",
"a9",
"a10",
"b0",
"b1",
"b2",
"b3",
"b4",
"b5",
"b6",
"b7",
"b8",
"b9",
"b10",
"c0",
"c1",
"c2",
"c3",
"c4",
"c5",
"c6",
"c7",
"c8",
"c9",
"c10",
"ra0",
"ra1",
"ra2",
"ra3",
"ra4",
"sra0",
"sra1",
"sra2",
"sra3",
"sra4",
"letter",
"half-letter",
"legal",
"ledger",
"tabloid",
"executive",
"folio",
"commercial #10 envelope",
"catalog #10 1/2 envelope",
"8.5x11",
"8.5x14",
"11x17"
]
},
"type": "string",
"pattern": "^(?:4[aA]0|2[aA]0|[aA]0|[aA]1|[aA]2|[aA]3|[aA]4|[aA]5|[aA]6|[aA]7|[aA]8|[aA]9|[aA]10|[bB]0|[bB]1|[bB]2|[bB]3|[bB]4|[bB]5|[bB]6|[bB]7|[bB]8|[bB]9|[bB]10|[cC]0|[cC]1|[cC]2|[cC]3|[cC]4|[cC]5|[cC]6|[cC]7|[cC]8|[cC]9|[cC]10|[rR][aA]0|[rR][aA]1|[rR][aA]2|[rR][aA]3|[rR][aA]4|[sS][rR][aA]0|[sS][rR][aA]1|[sS][rR][aA]2|[sS][rR][aA]3|[sS][rR][aA]4|[lL][eE][tT][tT][eE][rR]|[hH][aA][lL][fF]\\-[lL][eE][tT][tT][eE][rR]|[lL][eE][gG][aA][lL]|[lL][eE][dD][gG][eE][rR]|[tT][aA][bB][lL][oO][iI][dD]|[eE][xX][eE][cC][uU][tT][iI][vV][eE]|[fF][oO][lL][iI][oO]|[cC][oO][mM][mM][eE][rR][cC][iI][aA][lL]\\ \\#10\\ [eE][nN][vV][eE][lL][oO][pP][eE]|[cC][aA][tT][aA][lL][oO][gG]\\ \\#10\\ 1/2\\ [eE][nN][vV][eE][lL][oO][pP][eE]|8\\.5[xX]11|8\\.5[xX]14|11[xX]17)$",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1870,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "vendor/dompdf/dompdf/src/Adapter/CPDF.php",
"line": 42,
"sha256": "7dca4a096b08c006f12bfccd733068223d92e502b9a625c49bd919373f714001",
"reason": "Installed Dompdf paper-size key list, matched case-insensitively by the source getter."
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c",
"reason": "Normal fields check strict false; joined fields instead collect getter output at 1793 and execute it at 1827 without that rejection. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"pdf_custom_css": {
"description": "Parses CSS, removes non-declaration blocks, keeps selectors starting .custom_ or *, and filters rule value node classes. font-family is retained only when a family is among Pdf::$fonts. Stores compact CSS base64; readback decodes/formats it or returns empty text. Parser errors and PDF renderer prerequisites are not a closed JSON Schema grammar.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
".custom_example { color: #123456; }"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-preconditions": [
"CSS parser grammar and configured font support are checked by source/parser, not replicated as a misleading JSON pattern."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1892,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/libraries/edoobox/integrations/pdf/Pdf.php",
"line": 16,
"sha256": "b286cdc4d20e02601db9acc35b06564357f10378961e72cb8f4e22e64b3a3254",
"reason": "Allowed PDF font keys used by the CSS normalizer."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"dinaco_client_id": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 1960
},
"dinaco_client_secret": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 1979
},
"gtm_mess_id": {
"description": "For input longer than five bytes, a non-anchored G-[a-zA-z0-9]{5,20} substring must occur or the value becomes empty. Short values are retained. aP then trims, replaces newlines and truncates. This is not a strict GA4-ID pattern validator.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"G-EXAMPLE1234"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 1998,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/helpers/edooboxhelp_helper.php",
"line": 11560,
"sha256": "090d351b5bde81813c7a829bedf2f1f9f978fce5765f246989779f996198934e",
"reason": "aP normalization after the substring test."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"gtm_container_id": {
"x-edoobox-canonicalType": "string",
"x-edoobox-maxStoredLength": 250,
"x-edoobox-normalization": "The aP getter trims text, replaces newlines and limits the legacy escaped storage representation to maxStoredLength UTF-8 characters without splitting escape pairs; aQ decodes the stored representation. Non-string input becomes empty text. This getter limit is normalization, not a rejecting input maxLength or proof of a custom action hook or database column capacity.",
"examples": [
"Example"
],
"x-edoobox-sourceLine": 2024
},
"meta_html": {
"description": "Parses supplied HTML and keeps only meta tags whose name is google-site-verification or facebook-domain-verification. Only their name/content attributes are serialized, then aP truncates to 250 stored characters. This is a lossy sanitizer, not a rejecting HTML schema.",
"x-edoobox-schemaStatus": "source-reviewed-normalization",
"examples": [
"<meta name=\"google-site-verification\" content=\"synthetic-verification\">"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2044,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"system_attachments_file_naming": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": "string"
}
},
"description": "Map keyed by an emailtemplate public ID or ics. Each value maps language codes to file-name text. Filename characters and suffix are normalized; unknown templates/languages are ignored.",
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2076,
"reason": "Input iterates template/ics keys and language-to-name objects; edid occurs on map keys.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "application/models/v2/Settings.php",
"line": 2106,
"reason": "Response maps stored keys back to public emailtemplate IDs or ics.",
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1"
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"website_integration": {
"enum": [
"iframe",
"wordpress"
],
"x-edoobox-sourceLine": 2132
},
"website_url": {
"description": "Accepts empty string or a string accepted by PHP FILTER_VALIDATE_URL. Other values return strict false and API_DATA rejects the update. No restriction to HTTP/HTTPS is imposed by this getter.",
"x-edoobox-schemaStatus": "source-reviewed-validation",
"examples": [
"https://example.invalid"
],
"x-edoobox-canonicalSchema": {
"type": "string"
},
"type": "string",
"x-edoobox-preconditions": [
"PHP FILTER_VALIDATE_URL is the rejecting syntax check; JSON Schema format:uri is not asserted as an exact equivalent."
],
"x-edoobox-contractSource": [
{
"file": "application/models/v2/Settings.php",
"line": 2159,
"sha256": "431e6774611828ce07fb932ead801e3b2e3b7a15214e5d9498487b545c0d73f1",
"reason": "Structure input getter, response setter and update flags."
},
{
"file": "application/models/v2/API_DATA.php",
"line": 1853,
"sha256": "c0e15d26a7a4f3fb3c25e35557d4420ad395b2af3925caec292de08e32ebf44c",
"reason": "Strict false getter rejects invalid URL inputs. Final joined writer rejects strict-false getters and unresolved/multi-join metadata before writes, anchors the joined row to the own parent (including account-key parents), and preserves constant join.where constraints as additional AND predicates. Join-only writes verify the own existing parent. Generic simple-owner hard/soft DELETE now verifies the own existing parent before hooks and repeats FID in DML; missing optional hook data no longer warns. Read, insert, signed authority and GET-effect classifications are unchanged."
},
{
"file": "docs/openapi/reviews/settings-fields.json",
"line": 1,
"reason": "Field-level Settings source review and runtime limitations; source-executing offline regressions are separate evidence.",
"sha256": "ba623ac262f6f53eec7d494cd53d3c45f91f0eaa6e0d5757b869d71df6423aa5"
}
]
},
"admin_custom_permissions": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 2172,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
},
"admin_academic_title_use": {
"x-edoobox-schemaStatus": "source-inferred",
"x-edoobox-sourceLine": 2192,
"x-edoobox-canonicalType": "boolean",
"x-edoobox-normalization": "PHP coercion/normalization is applied by the Structure getter; its return type is not a rejecting wire-input type restriction.",
"examples": [
false
]
}
},
"additionalProperties": true,
"description": "Source-declared fields; action-specific and account validation still apply.",
"minProperties": 1,
"x-edoobox-readOnlyFields": [
"id",
"congress_module",
"root_category",
"shortcut",
"organization_country",
"organization_currency",
"skip_counter",
"question_deliverables_show",
"multi_offer_show",
"multi_offer_child_limit",
"edsubscription",
"edsubscription_testinguntildate",
"versions"
],
"x-edoobox-clientRestriction": "Read-only fields are forbidden by this client contract to prevent silently ignored writes; the legacy API itself skips them. Explicit source-marked update context fields remain accepted for hook validation without changing their immutable database columns."
},
"id": {
"type": "string",
"pattern": "^[a-z0-9]+_[a-f0-9]{12}_-?[0-9]+$",
"description": "Opaque edoobox v2 object ID returned by this account. Never send a raw database ID. The synthetic example is illustrative and is not a real record.",
"examples": [
"settings_012345abcdef_123456"
]
}
},
"additionalProperties": true,
"required": [
"data"
]
},
"examples": {
"request": {
"summary": "Account-Einstellungen ändern",
"value": {
"data": {
"organization_name": "Beispielorganisation",
"firstweekday": 1,
"automatic_deletion": 180
}
}
}
}
}
}
},
"x-edoobox-runtimeMutationGuard": true,
"x-edoobox-documentationReview": {
"file": "docs/openapi/operation-contracts/06-admin-settings.json",
"notes": []
},
"x-edoobox-source": {
"file": "application/models/v2/Settings.php",
"method": "updateSettings",
"line": 2324
},
"x-edoobox-documentationStatus": "reviewed",
"x-edoobox-readOnly": false,
"x-edoobox-safeForAutomation": false,
"x-edoobox-permission": {
"resource": "settings",
"short": "setti",
"checkedByDispatcher": true,
"levels": [
3,
4
],
"description": "Resource permission mapping from APIPermissions(), Authfunc::_getCheckJWT. Additional model/admin/plugin checks may apply; resources absent from api_permission do not acquire a fictitious scope."
}
}