# GET /v2/settings

Account-Einstellungen abrufen

Liest die zentralen Einstellungen des ausgewählten Accounts sowie Sprachen, Archiv-/Papierkorb-IDs, Währungen, Abonnement- und Versionsinformationen. Die Antwort reduziert die generische Auswahl auf das erste gefundene Einstellungsobjekt und ergänzt Account-Metadaten. Bei Bedarf werden Versions-Caches für Admin-Konfigurationsvorlagen und Mehrwertsteuer befüllt. Keine Zugangsdaten aus der Antwort veröffentlichen.

- Operation-ID: get_v2_settings
- Dokumentation: /docs/api/v2/operations/get-v2-settings-fec1627e5c2a/
- OpenAPI-Version: 3.2.1
- Vollständige Spezifikation: /docs/api/v2/openapi.json
- Dokumentationsstatus: reviewed
- Ändert Zustand: ja
- Für Automation freigegeben: nein

## Server

Serverwerte stammen unverändert aus der Datei. Eine lokale Entwicklungsadresse ist keine bestätigte Produktionsadresse. `API_ORIGIN` muss auf die passende Instanz gesetzt werden.

```json
[
  {
    "url": "https://app2.edoobox.com",
    "description": "edoobox API"
  }
]
```

## Authentifizierung

Eine der folgenden Alternativen genügt (ODER). Innerhalb einer Alternative müssen alle Verfahren gemeinsam erfüllt sein (UND).

1. **bearerAuth** (HTTP bearer) — Existing edoobox v2 access token. Never substitute API key/secret headers. **UND** **accountContext** (header: edid) — Selected login/account context from the JWT, not a database primary key. Required even for a JWT with one account.
2. **sessionCookie** (cookie: _edlogin) — Existing browser login session, with the same permission checks as Bearer authentication. **UND** **accountContext** (header: edid) — Selected login/account context from the JWT, not a database primary key. Required even for a JWT with one account.

### Wirksame Security Requirements und vollständige Verfahren

```json
{
  "security": [
    {
      "bearerAuth": [],
      "accountContext": []
    },
    {
      "sessionCookie": [],
      "accountContext": []
    }
  ],
  "securitySchemes": {
    "bearerAuth": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "JWT",
      "description": "Existing edoobox v2 access token. Never substitute API key/secret headers."
    },
    "accountContext": {
      "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."
    },
    "sessionCookie": {
      "type": "apiKey",
      "in": "cookie",
      "name": "_edlogin",
      "description": "Existing browser login session, with the same permission checks as Bearer authentication."
    }
  }
}
```

## Parameter

| Name | Ort | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| fields | query | nein | JSON-encoded fields value consumed by RequestAPIData / API_DATA; specific actions may ignore it. |
| filter | query | nein | JSON-encoded filter value consumed by RequestAPIData / API_DATA; specific actions may ignore it. |
| limit | query | nein | JSON-encoded limit value consumed by RequestAPIData / API_DATA; specific actions may ignore it. |
| order | query | nein | JSON-encoded order value consumed by RequestAPIData / API_DATA; specific actions may ignore it. |
| response_type | query | nein | Controls generic collection representation; default is an ID-keyed object. |
| language | header | nein | Account language code, where the resource supports setLanguage(). |

### Vollständige wirksame Parameterdefinitionen

```json
[
  {
    "name": "fields",
    "in": "query",
    "required": false,
    "description": "JSON-encoded fields value consumed by RequestAPIData / API_DATA; specific actions may ignore it.",
    "content": {
      "application/json": {
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "examples": [
            [
              "id"
            ]
          ]
        },
        "example": [
          "id"
        ]
      }
    }
  },
  {
    "name": "filter",
    "in": "query",
    "required": false,
    "description": "JSON-encoded filter value consumed by RequestAPIData / API_DATA; specific actions may ignore it.",
    "content": {
      "application/json": {
        "schema": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "property": {
                "type": "string"
              },
              "expression": {
                "type": "string"
              },
              "value": {}
            },
            "additionalProperties": true
          },
          "examples": [
            [
              {
                "property": "id",
                "expression": "=",
                "value": "settings_012345abcdef_123456"
              }
            ]
          ]
        },
        "example": [
          {
            "property": "id",
            "expression": "=",
            "value": "settings_012345abcdef_123456"
          }
        ]
      }
    }
  },
  {
    "name": "limit",
    "in": "query",
    "required": false,
    "description": "JSON-encoded limit value consumed by RequestAPIData / API_DATA; specific actions may ignore it.",
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "properties": {
            "start": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "reply": {
              "type": "integer",
              "maximum": 2000,
              "default": 100
            }
          },
          "examples": [
            {
              "start": 0,
              "reply": 25
            }
          ]
        },
        "example": {
          "start": 0,
          "reply": 25
        }
      }
    }
  },
  {
    "name": "order",
    "in": "query",
    "required": false,
    "description": "JSON-encoded order value consumed by RequestAPIData / API_DATA; specific actions may ignore it.",
    "content": {
      "application/json": {
        "schema": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "property": {
                "type": "string"
              },
              "value": {
                "type": "string",
                "enum": [
                  "ASC",
                  "DESC"
                ]
              }
            },
            "additionalProperties": true
          },
          "examples": [
            [
              {
                "property": "id",
                "value": "ASC"
              }
            ]
          ]
        },
        "example": [
          {
            "property": "id",
            "value": "ASC"
          }
        ]
      }
    }
  },
  {
    "name": "response_type",
    "in": "query",
    "required": false,
    "schema": {
      "type": "string",
      "enum": [
        "array",
        "object"
      ],
      "examples": [
        "array"
      ]
    },
    "description": "Controls generic collection representation; default is an ID-keyed object."
  },
  {
    "name": "language",
    "in": "header",
    "required": false,
    "description": "Account language code, where the resource supports setLanguage().",
    "schema": {
      "type": "string",
      "examples": [
        "de"
      ]
    }
  }
]
```

## Anfrage

Kein Request Body deklariert.

## Antworten

HTTP-Status und Antwortinhalt gemeinsam auswerten. Die folgenden Beschreibungen und Schemata sind die Angaben der Quelldatei.

```json
{
  "200": {
    "description": "Ein einzelnes Einstellungsobjekt mit zusätzlichen Account-Metadaten, auch bei /list.",
    "content": {
      "application/json": {
        "example": {
          "success": true,
          "error": false,
          "data": {
            "id": "account_012345abcdef_123456",
            "organization_name": "Beispielorganisation",
            "organization_language": "de",
            "root_archive": "category_012345abcdef_123456",
            "root_trash": "category_012345abcdef_123456",
            "language": {
              "languages": [
                "Deutsch",
                "English"
              ],
              "active": [
                "de"
              ],
              "inactive": [
                "en"
              ]
            },
            "user_currencys": [
              "CHF"
            ],
            "account_billing_recipient_admin_id": false
          },
          "limit": {
            "start": 0,
            "reply": 100,
            "total": 1
          }
        },
        "schema": {
          "type": "object",
          "properties": {
            "success": {
              "type": "boolean"
            },
            "error": {
              "type": [
                "boolean",
                "string"
              ]
            },
            "error_code": {
              "type": "string"
            },
            "data": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "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"
                      ]
                    },
                    "firstweekday": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 44,
                      "type": "integer"
                    },
                    "format_date": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 53,
                      "type": "integer"
                    },
                    "format_time": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 62,
                      "type": "integer"
                    },
                    "format_calendar_grid": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 71,
                      "type": "integer"
                    },
                    "format_timezone": {
                      "type": "string",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "congress_module": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 102,
                      "type": "boolean"
                    },
                    "format_number": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 112,
                      "type": "integer"
                    },
                    "design": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 121,
                      "anyOf": [
                        {
                          "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"
                          ]
                        },
                        {
                          "const": false
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "root_category": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 130,
                      "anyOf": [
                        {
                          "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": [
                            "rootcategory_012345abcdef_123456"
                          ]
                        },
                        {
                          "const": false
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "shortcut": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 140,
                      "type": "string"
                    },
                    "organization_name": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 150,
                      "type": "string"
                    },
                    "organization_contactperson": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 159,
                      "type": "string"
                    },
                    "organization_street": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 168,
                      "type": "string"
                    },
                    "organization_postcode": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 177,
                      "type": "string"
                    },
                    "organization_town": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 186,
                      "type": "string"
                    },
                    "organization_country": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 195,
                      "anyOf": [
                        {
                          "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": [
                            "organizationcountry_012345abcdef_123456"
                          ]
                        },
                        {
                          "const": false
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "organization_language": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "organization_phone": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 214,
                      "type": "string"
                    },
                    "organization_url": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "organization_email": {
                      "type": "string",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "organization_currency": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 247,
                      "type": "string"
                    },
                    "billingaddress_organization": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 257,
                      "type": "string"
                    },
                    "billingaddress_user": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 266,
                      "type": "string"
                    },
                    "billingaddress_street": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 275,
                      "type": "string"
                    },
                    "billingaddress_postcode_town": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 284,
                      "type": "string"
                    },
                    "billingaddress_phone": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "billingaddress_email": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 303,
                      "type": "string"
                    },
                    "billingaddress_status": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 312,
                      "type": "boolean"
                    },
                    "user_duplicate_config": {
                      "type": "object",
                      "required": [
                        "version",
                        "enabled",
                        "candidate_threshold",
                        "auto_merge_threshold",
                        "survivor_strategy",
                        "max_merge_users",
                        "rules",
                        "rules_hash",
                        "matching_rules_hash"
                      ],
                      "properties": {
                        "version": {
                          "const": 2
                        },
                        "enabled": {
                          "type": "boolean"
                        },
                        "candidate_threshold": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "auto_merge_threshold": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 1,
                          "maximum": 100
                        },
                        "survivor_strategy": {
                          "enum": [
                            "newest",
                            "oldest"
                          ]
                        },
                        "max_merge_users": {
                          "type": "integer",
                          "minimum": 2,
                          "maximum": 10
                        },
                        "rules": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "field",
                              "enabled",
                              "required",
                              "weight"
                            ],
                            "properties": {
                              "field": {
                                "enum": [
                                  "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"
                                ]
                              },
                              "enabled": {
                                "type": "boolean"
                              },
                              "required": {
                                "type": "boolean"
                              },
                              "weight": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 10
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "rules_hash": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{64}$"
                        },
                        "matching_rules_hash": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{64}$"
                        }
                      },
                      "additionalProperties": true,
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "admin_avatar_mode": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "account_billing_recipient_type": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "account_billing_recipient_email": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 390,
                      "type": "string"
                    },
                    "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."
                        },
                        {
                          "const": false,
                          "x-edoobox-id-kind": "empty-relation"
                        }
                      ],
                      "description": "Billing administrator as a public admin v2 ID; false when unset. Internal database primary keys are never serialized.",
                      "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": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 440,
                      "type": "boolean"
                    },
                    "account_billing_topup_enabled": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 459,
                      "type": "boolean"
                    },
                    "account_billing_topup_threshold": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "account_billing_topup_amount": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "internal_all": {
                      "type": "boolean",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "notification_minimummaximum": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 526,
                      "type": "boolean"
                    },
                    "notification_booking": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 535,
                      "type": "boolean"
                    },
                    "vat_included": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "vat_reverse_charge_texts": {
                      "anyOf": [
                        {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          }
                        },
                        {
                          "type": "array",
                          "maxItems": 0
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "offer_sort": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "offer_func_1": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 589,
                      "type": "boolean"
                    },
                    "offer_func_1_status": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "offer_archiving": {
                      "enum": [
                        1,
                        2,
                        3,
                        false
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "offer_archiving_reference_date": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "news_and_tricks": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 644,
                      "type": "boolean"
                    },
                    "booking_create_admin": {
                      "enum": [
                        1,
                        2,
                        false
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_userlogin": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_login": {
                      "enum": [
                        1,
                        2,
                        3,
                        null
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_login_global_users": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 738,
                      "type": "boolean"
                    },
                    "booking_cancellation": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_cancellation_admin_confirmation_mail": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 784,
                      "type": "boolean"
                    },
                    "booking_reservation": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 803,
                      "type": "boolean"
                    },
                    "booking_paymentpage": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 812,
                      "type": "boolean"
                    },
                    "booking_sendinfo": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 822,
                      "type": "boolean"
                    },
                    "booking_label_notifications": {
                      "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-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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_send_pdf": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 850,
                      "type": "boolean"
                    },
                    "booking_send_ics": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 859,
                      "type": "boolean"
                    },
                    "booking_reminder": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 878,
                      "type": "boolean"
                    },
                    "booking_reminder_hours": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 887,
                      "type": "integer"
                    },
                    "booking_visitconfirmation": {
                      "enum": [
                        1,
                        2,
                        false
                      ]
                    },
                    "booking_number": {
                      "type": "integer",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_cert_percent": {
                      "type": "integer",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_cert_notvisitmail": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 975,
                      "type": "boolean"
                    },
                    "booking_cert_senddelayhours": {
                      "type": "integer",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_cert_validation_url": {
                      "type": "boolean",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_cert_attachpdf": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1046,
                      "type": "boolean"
                    },
                    "booking_cert_attachpdfpercent": {
                      "type": "integer",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_cert_secondemail": {
                      "type": "boolean",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_cert_secondemail_field": {
                      "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
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_secondemail": {
                      "type": "boolean",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_secondemail_field": {
                      "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
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_offerlist_secondemail_field": {
                      "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
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "booking_offerlist_cancel_mail": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1268,
                      "type": "boolean"
                    },
                    "booking_allow_promotions": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1288,
                      "type": "boolean"
                    },
                    "booking_designation_promotions": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1297,
                      "type": "string"
                    },
                    "skip_counter": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1306,
                      "type": "integer"
                    },
                    "question_deliverables_show": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1316,
                      "type": "boolean"
                    },
                    "multi_offer_show": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1336,
                      "type": "boolean"
                    },
                    "multi_offer_child_limit": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1346,
                      "type": "integer"
                    },
                    "automatic_deletion": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1367
                    },
                    "edsupport_access": {
                      "type": "integer",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "payment_confirmation_mail": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1428,
                      "type": "boolean"
                    },
                    "barcode_type": {
                      "enum": [
                        "pdf417",
                        "qrcode",
                        "datamatrix"
                      ]
                    },
                    "barcode_mobile_wallet": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1461,
                      "type": "boolean"
                    },
                    "mobile_wallet_background_color": {
                      "type": "string",
                      "pattern": "^#[0-9A-F]{6}$",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "mobile_wallet_foreground_color": {
                      "type": "string",
                      "pattern": "^(?:#[0-9A-F]{6})?$",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "mobile_wallet_use_offer_image": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1488,
                      "type": "boolean"
                    },
                    "mobile_wallet_fallback_image_url": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "mobile_wallet_display_name": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "mobile_wallet_support_url": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "barcode_ticket": {
                      "enum": [
                        false,
                        "always",
                        "offer"
                      ]
                    },
                    "collective_booking_max": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1548,
                      "type": "integer"
                    },
                    "collective_booking_identify": {
                      "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
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "collective_booking_identify_privacy": {
                      "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
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "collective_booking_identify_obligatory": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1610,
                      "type": "boolean"
                    },
                    "collective_booking_master": {
                      "enum": [
                        "manual",
                        "all",
                        false
                      ]
                    },
                    "security_headers_csp": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1654,
                      "type": "boolean"
                    },
                    "design_subcategory": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1699,
                      "type": "boolean"
                    },
                    "legaltext_atc": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1708,
                      "type": "boolean"
                    },
                    "legaltext_ri": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1717,
                      "type": "boolean"
                    },
                    "legaltext_pp": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1726,
                      "type": "boolean"
                    },
                    "attendance_config": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": [
                              "integer",
                              "string"
                            ],
                            "description": "The key is derived with an integer cast; stored status representation is preserved in the record."
                          },
                          "order": {
                            "type": "integer"
                          },
                          "counter": {},
                          "val": {},
                          "color": {},
                          "help": {},
                          "lock": {
                            "type": "boolean"
                          }
                        },
                        "additionalProperties": true,
                        "required": [
                          "status",
                          "order"
                        ]
                      },
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "language": {
                      "type": "object",
                      "properties": {
                        "languages": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "active": {
                          "type": [
                            "object",
                            "array"
                          ]
                        },
                        "inactive": {
                          "type": [
                            "object",
                            "array"
                          ]
                        }
                      },
                      "additionalProperties": true
                    },
                    "edsubscription": {
                      "type": "string",
                      "pattern": "^edsubscription_[a-f0-9]{12}_-?[0-9]+$",
                      "description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID."
                    },
                    "edsubscription_testinguntildate": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1786
                    },
                    "versions": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true
                    },
                    "pdf_engine": {
                      "enum": [
                        1,
                        2,
                        null
                      ],
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "pdf_edit_restriction_password": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1851,
                      "type": "boolean"
                    },
                    "pdf_paper_size": {
                      "type": "string",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "pdf_custom_css": {
                      "type": "string",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "dinaco_client_id": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1960,
                      "type": "string"
                    },
                    "dinaco_client_secret": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 1979,
                      "x-edoobox-sensitive": true
                    },
                    "gtm_mess_id": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "gtm_container_id": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 2024,
                      "type": "string"
                    },
                    "meta_html": {
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "system_attachments_file_naming": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {},
                          "additionalProperties": {
                            "type": "object",
                            "properties": {},
                            "additionalProperties": {
                              "type": "string"
                            }
                          }
                        },
                        {
                          "type": "array",
                          "maxItems": 0
                        }
                      ],
                      "description": "Associative map, or [] when there are no naming rules.",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "website_integration": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 2132
                    },
                    "website_url": {
                      "type": "string",
                      "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                        }
                      ]
                    },
                    "admin_custom_permissions": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 2172,
                      "type": "boolean"
                    },
                    "admin_academic_title_use": {
                      "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                      "x-edoobox-sourceLine": 2192,
                      "type": "boolean"
                    },
                    "root_archive": {
                      "type": "string",
                      "pattern": "^category_[a-f0-9]{12}_-?[0-9]+$",
                      "description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID."
                    },
                    "root_trash": {
                      "type": "string",
                      "pattern": "^category_[a-f0-9]{12}_-?[0-9]+$",
                      "description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID."
                    },
                    "user_currencys": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "stripe_public_key": {
                      "type": [
                        "string",
                        "boolean"
                      ]
                    }
                  },
                  "additionalProperties": true
                }
              ],
              "description": "Einzelnes Account-Einstellungsobjekt; auch die Listenroute reduziert auf das erste gefundene Objekt."
            },
            "type": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      }
    }
  },
  "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"
        }
      }
    }
  },
  "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"
        }
      }
    }
  }
}
```

## Aufrufbeispiele

Anpassen vor dem Ausführen. Platzhalter und veröffentlichte Beispiele sind synthetisch. Die Beispiele senden hier keine Anfrage; sie ergänzen keine unbekannten Pflichtfelder.

### cURL

```sh
# Zeigt Authentifizierungsalternative 1; alle Verfahren dieser Alternative sind gemeinsam erforderlich.
: "${API_ORIGIN:?API_ORIGIN setzen}"
: "${AUTH_BEARERAUTH:?AUTH_BEARERAUTH setzen}"
: "${AUTH_ACCOUNTCONTEXT:?AUTH_ACCOUNTCONTEXT setzen}"
curl --request 'GET' \
  --url "${API_ORIGIN%/}"'/v2/settings' \
  --header 'Authorization: Bearer '"${AUTH_BEARERAUTH}" \
  --header 'edid: '"${AUTH_ACCOUNTCONTEXT}"
```

### JavaScript (Node.js)

```javascript
// Zeigt Authentifizierungsalternative 1; alle Verfahren dieser Alternative sind gemeinsam erforderlich.
const required = (name) => {
  const value = process.env[name];
  if (!value) throw new Error(`Set ${name}`);
  return value;
};
let path = "/v2/settings";
const origin = required('API_ORIGIN');
const url = new URL((origin.endsWith('/') ? origin.slice(0, -1) : origin) + path);
const headers = {};
headers["Authorization"] = "Bearer " + required("AUTH_BEARERAUTH");
headers["edid"] = "" + required("AUTH_ACCOUNTCONTEXT");
const response = await fetch(url, { method: "GET", headers, redirect: 'manual' });
const text = await response.text();
console.log(response.status, text);
// HTTP-Status und dokumentierte error/success-Felder gemeinsam prüfen.
```

### Python

```python
# Zeigt Authentifizierungsalternative 1; alle Verfahren dieser Alternative sind gemeinsam erforderlich.
import os
import urllib.parse
import urllib.request
import urllib.error

path = "/v2/settings"
url = os.environ["API_ORIGIN"].rstrip("/") + path
headers = {}
headers["Authorization"] = "Bearer " + os.environ["AUTH_BEARERAUTH"]
headers["edid"] = "" + os.environ["AUTH_ACCOUNTCONTEXT"]

# Redirects nicht automatisch verfolgen.
class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None
request = urllib.request.Request(url, headers=headers, method="GET")
try:
    response = urllib.request.build_opener(NoRedirect).open(request, timeout=30)
except urllib.error.HTTPError as error:
    response = error
print(response.status, response.read().decode("utf-8", errors="replace"))
# HTTP-Status und dokumentierte error/success-Felder gemeinsam prüfen.
```

## Vollständige Operationsdefinition und edoobox-Hinweise

Alle Originalfelder einschliesslich `x-edoobox-*`, requestBody und responses bleiben erhalten. Teilweise dokumentierte Schemata sind kein vollständiger Validierungsvertrag.

```json
{
  "operationId": "get_v2_settings",
  "summary": "Account-Einstellungen abrufen",
  "description": "Liest die zentralen Einstellungen des ausgewählten Accounts sowie Sprachen, Archiv-/Papierkorb-IDs, Währungen, Abonnement- und Versionsinformationen. Die Antwort reduziert die generische Auswahl auf das erste gefundene Einstellungsobjekt und ergänzt Account-Metadaten. Bei Bedarf werden Versions-Caches für Admin-Konfigurationsvorlagen und Mehrwertsteuer befüllt. Keine Zugangsdaten aus der Antwort veröffentlichen.",
  "tags": [
    "settings"
  ],
  "security": [
    {
      "bearerAuth": [],
      "accountContext": []
    },
    {
      "sessionCookie": [],
      "accountContext": []
    }
  ],
  "parameters": [
    {
      "name": "fields",
      "in": "query",
      "required": false,
      "description": "JSON-encoded fields value consumed by RequestAPIData / API_DATA; specific actions may ignore it.",
      "content": {
        "application/json": {
          "schema": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "examples": [
              [
                "id"
              ]
            ]
          },
          "example": [
            "id"
          ]
        }
      }
    },
    {
      "name": "filter",
      "in": "query",
      "required": false,
      "description": "JSON-encoded filter value consumed by RequestAPIData / API_DATA; specific actions may ignore it.",
      "content": {
        "application/json": {
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "property": {
                  "type": "string"
                },
                "expression": {
                  "type": "string"
                },
                "value": {}
              },
              "additionalProperties": true
            },
            "examples": [
              [
                {
                  "property": "id",
                  "expression": "=",
                  "value": "settings_012345abcdef_123456"
                }
              ]
            ]
          },
          "example": [
            {
              "property": "id",
              "expression": "=",
              "value": "settings_012345abcdef_123456"
            }
          ]
        }
      }
    },
    {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "JSON-encoded limit value consumed by RequestAPIData / API_DATA; specific actions may ignore it.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "start": {
                "type": "integer",
                "minimum": 0,
                "default": 0
              },
              "reply": {
                "type": "integer",
                "maximum": 2000,
                "default": 100
              }
            },
            "examples": [
              {
                "start": 0,
                "reply": 25
              }
            ]
          },
          "example": {
            "start": 0,
            "reply": 25
          }
        }
      }
    },
    {
      "name": "order",
      "in": "query",
      "required": false,
      "description": "JSON-encoded order value consumed by RequestAPIData / API_DATA; specific actions may ignore it.",
      "content": {
        "application/json": {
          "schema": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "property": {
                  "type": "string"
                },
                "value": {
                  "type": "string",
                  "enum": [
                    "ASC",
                    "DESC"
                  ]
                }
              },
              "additionalProperties": true
            },
            "examples": [
              [
                {
                  "property": "id",
                  "value": "ASC"
                }
              ]
            ]
          },
          "example": [
            {
              "property": "id",
              "value": "ASC"
            }
          ]
        }
      }
    },
    {
      "name": "response_type",
      "in": "query",
      "required": false,
      "schema": {
        "type": "string",
        "enum": [
          "array",
          "object"
        ],
        "examples": [
          "array"
        ]
      },
      "description": "Controls generic collection representation; default is an ID-keyed object."
    },
    {
      "name": "language",
      "in": "header",
      "required": false,
      "description": "Account language code, where the resource supports setLanguage().",
      "schema": {
        "type": "string",
        "examples": [
          "de"
        ]
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Ein einzelnes Einstellungsobjekt mit zusätzlichen Account-Metadaten, auch bei /list.",
      "content": {
        "application/json": {
          "example": {
            "success": true,
            "error": false,
            "data": {
              "id": "account_012345abcdef_123456",
              "organization_name": "Beispielorganisation",
              "organization_language": "de",
              "root_archive": "category_012345abcdef_123456",
              "root_trash": "category_012345abcdef_123456",
              "language": {
                "languages": [
                  "Deutsch",
                  "English"
                ],
                "active": [
                  "de"
                ],
                "inactive": [
                  "en"
                ]
              },
              "user_currencys": [
                "CHF"
              ],
              "account_billing_recipient_admin_id": false
            },
            "limit": {
              "start": 0,
              "reply": 100,
              "total": 1
            }
          },
          "schema": {
            "type": "object",
            "properties": {
              "success": {
                "type": "boolean"
              },
              "error": {
                "type": [
                  "boolean",
                  "string"
                ]
              },
              "error_code": {
                "type": "string"
              },
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "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"
                        ]
                      },
                      "firstweekday": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 44,
                        "type": "integer"
                      },
                      "format_date": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 53,
                        "type": "integer"
                      },
                      "format_time": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 62,
                        "type": "integer"
                      },
                      "format_calendar_grid": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 71,
                        "type": "integer"
                      },
                      "format_timezone": {
                        "type": "string",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "congress_module": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 102,
                        "type": "boolean"
                      },
                      "format_number": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 112,
                        "type": "integer"
                      },
                      "design": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 121,
                        "anyOf": [
                          {
                            "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"
                            ]
                          },
                          {
                            "const": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "root_category": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 130,
                        "anyOf": [
                          {
                            "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": [
                              "rootcategory_012345abcdef_123456"
                            ]
                          },
                          {
                            "const": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "shortcut": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 140,
                        "type": "string"
                      },
                      "organization_name": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 150,
                        "type": "string"
                      },
                      "organization_contactperson": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 159,
                        "type": "string"
                      },
                      "organization_street": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 168,
                        "type": "string"
                      },
                      "organization_postcode": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 177,
                        "type": "string"
                      },
                      "organization_town": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 186,
                        "type": "string"
                      },
                      "organization_country": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 195,
                        "anyOf": [
                          {
                            "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": [
                              "organizationcountry_012345abcdef_123456"
                            ]
                          },
                          {
                            "const": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "organization_language": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "organization_phone": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 214,
                        "type": "string"
                      },
                      "organization_url": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "organization_email": {
                        "type": "string",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "organization_currency": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 247,
                        "type": "string"
                      },
                      "billingaddress_organization": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 257,
                        "type": "string"
                      },
                      "billingaddress_user": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 266,
                        "type": "string"
                      },
                      "billingaddress_street": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 275,
                        "type": "string"
                      },
                      "billingaddress_postcode_town": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 284,
                        "type": "string"
                      },
                      "billingaddress_phone": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "billingaddress_email": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 303,
                        "type": "string"
                      },
                      "billingaddress_status": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 312,
                        "type": "boolean"
                      },
                      "user_duplicate_config": {
                        "type": "object",
                        "required": [
                          "version",
                          "enabled",
                          "candidate_threshold",
                          "auto_merge_threshold",
                          "survivor_strategy",
                          "max_merge_users",
                          "rules",
                          "rules_hash",
                          "matching_rules_hash"
                        ],
                        "properties": {
                          "version": {
                            "const": 2
                          },
                          "enabled": {
                            "type": "boolean"
                          },
                          "candidate_threshold": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 100
                          },
                          "auto_merge_threshold": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 1,
                            "maximum": 100
                          },
                          "survivor_strategy": {
                            "enum": [
                              "newest",
                              "oldest"
                            ]
                          },
                          "max_merge_users": {
                            "type": "integer",
                            "minimum": 2,
                            "maximum": 10
                          },
                          "rules": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "field",
                                "enabled",
                                "required",
                                "weight"
                              ],
                              "properties": {
                                "field": {
                                  "enum": [
                                    "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"
                                  ]
                                },
                                "enabled": {
                                  "type": "boolean"
                                },
                                "required": {
                                  "type": "boolean"
                                },
                                "weight": {
                                  "type": "integer",
                                  "minimum": 1,
                                  "maximum": 10
                                }
                              },
                              "additionalProperties": false
                            }
                          },
                          "rules_hash": {
                            "type": "string",
                            "pattern": "^[a-f0-9]{64}$"
                          },
                          "matching_rules_hash": {
                            "type": "string",
                            "pattern": "^[a-f0-9]{64}$"
                          }
                        },
                        "additionalProperties": true,
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "admin_avatar_mode": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "account_billing_recipient_type": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "account_billing_recipient_email": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 390,
                        "type": "string"
                      },
                      "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."
                          },
                          {
                            "const": false,
                            "x-edoobox-id-kind": "empty-relation"
                          }
                        ],
                        "description": "Billing administrator as a public admin v2 ID; false when unset. Internal database primary keys are never serialized.",
                        "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": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 440,
                        "type": "boolean"
                      },
                      "account_billing_topup_enabled": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 459,
                        "type": "boolean"
                      },
                      "account_billing_topup_threshold": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "account_billing_topup_amount": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "internal_all": {
                        "type": "boolean",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "notification_minimummaximum": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 526,
                        "type": "boolean"
                      },
                      "notification_booking": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 535,
                        "type": "boolean"
                      },
                      "vat_included": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "vat_reverse_charge_texts": {
                        "anyOf": [
                          {
                            "type": "object",
                            "additionalProperties": {
                              "type": "string"
                            }
                          },
                          {
                            "type": "array",
                            "maxItems": 0
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "offer_sort": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "offer_func_1": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 589,
                        "type": "boolean"
                      },
                      "offer_func_1_status": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "offer_archiving": {
                        "enum": [
                          1,
                          2,
                          3,
                          false
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "offer_archiving_reference_date": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "news_and_tricks": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 644,
                        "type": "boolean"
                      },
                      "booking_create_admin": {
                        "enum": [
                          1,
                          2,
                          false
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_userlogin": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_login": {
                        "enum": [
                          1,
                          2,
                          3,
                          null
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_login_global_users": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 738,
                        "type": "boolean"
                      },
                      "booking_cancellation": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_cancellation_admin_confirmation_mail": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 784,
                        "type": "boolean"
                      },
                      "booking_reservation": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 803,
                        "type": "boolean"
                      },
                      "booking_paymentpage": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 812,
                        "type": "boolean"
                      },
                      "booking_sendinfo": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 822,
                        "type": "boolean"
                      },
                      "booking_label_notifications": {
                        "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-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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_send_pdf": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 850,
                        "type": "boolean"
                      },
                      "booking_send_ics": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 859,
                        "type": "boolean"
                      },
                      "booking_reminder": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 878,
                        "type": "boolean"
                      },
                      "booking_reminder_hours": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 887,
                        "type": "integer"
                      },
                      "booking_visitconfirmation": {
                        "enum": [
                          1,
                          2,
                          false
                        ]
                      },
                      "booking_number": {
                        "type": "integer",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_cert_percent": {
                        "type": "integer",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_cert_notvisitmail": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 975,
                        "type": "boolean"
                      },
                      "booking_cert_senddelayhours": {
                        "type": "integer",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_cert_validation_url": {
                        "type": "boolean",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_cert_attachpdf": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1046,
                        "type": "boolean"
                      },
                      "booking_cert_attachpdfpercent": {
                        "type": "integer",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_cert_secondemail": {
                        "type": "boolean",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_cert_secondemail_field": {
                        "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
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_secondemail": {
                        "type": "boolean",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_secondemail_field": {
                        "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
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_offerlist_secondemail_field": {
                        "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
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "booking_offerlist_cancel_mail": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1268,
                        "type": "boolean"
                      },
                      "booking_allow_promotions": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1288,
                        "type": "boolean"
                      },
                      "booking_designation_promotions": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1297,
                        "type": "string"
                      },
                      "skip_counter": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1306,
                        "type": "integer"
                      },
                      "question_deliverables_show": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1316,
                        "type": "boolean"
                      },
                      "multi_offer_show": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1336,
                        "type": "boolean"
                      },
                      "multi_offer_child_limit": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1346,
                        "type": "integer"
                      },
                      "automatic_deletion": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1367
                      },
                      "edsupport_access": {
                        "type": "integer",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "payment_confirmation_mail": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1428,
                        "type": "boolean"
                      },
                      "barcode_type": {
                        "enum": [
                          "pdf417",
                          "qrcode",
                          "datamatrix"
                        ]
                      },
                      "barcode_mobile_wallet": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1461,
                        "type": "boolean"
                      },
                      "mobile_wallet_background_color": {
                        "type": "string",
                        "pattern": "^#[0-9A-F]{6}$",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "mobile_wallet_foreground_color": {
                        "type": "string",
                        "pattern": "^(?:#[0-9A-F]{6})?$",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "mobile_wallet_use_offer_image": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1488,
                        "type": "boolean"
                      },
                      "mobile_wallet_fallback_image_url": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "mobile_wallet_display_name": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "mobile_wallet_support_url": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "barcode_ticket": {
                        "enum": [
                          false,
                          "always",
                          "offer"
                        ]
                      },
                      "collective_booking_max": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1548,
                        "type": "integer"
                      },
                      "collective_booking_identify": {
                        "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
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "collective_booking_identify_privacy": {
                        "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
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "collective_booking_identify_obligatory": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1610,
                        "type": "boolean"
                      },
                      "collective_booking_master": {
                        "enum": [
                          "manual",
                          "all",
                          false
                        ]
                      },
                      "security_headers_csp": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1654,
                        "type": "boolean"
                      },
                      "design_subcategory": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1699,
                        "type": "boolean"
                      },
                      "legaltext_atc": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1708,
                        "type": "boolean"
                      },
                      "legaltext_ri": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1717,
                        "type": "boolean"
                      },
                      "legaltext_pp": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1726,
                        "type": "boolean"
                      },
                      "attendance_config": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "status": {
                              "type": [
                                "integer",
                                "string"
                              ],
                              "description": "The key is derived with an integer cast; stored status representation is preserved in the record."
                            },
                            "order": {
                              "type": "integer"
                            },
                            "counter": {},
                            "val": {},
                            "color": {},
                            "help": {},
                            "lock": {
                              "type": "boolean"
                            }
                          },
                          "additionalProperties": true,
                          "required": [
                            "status",
                            "order"
                          ]
                        },
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "language": {
                        "type": "object",
                        "properties": {
                          "languages": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "active": {
                            "type": [
                              "object",
                              "array"
                            ]
                          },
                          "inactive": {
                            "type": [
                              "object",
                              "array"
                            ]
                          }
                        },
                        "additionalProperties": true
                      },
                      "edsubscription": {
                        "type": "string",
                        "pattern": "^edsubscription_[a-f0-9]{12}_-?[0-9]+$",
                        "description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID."
                      },
                      "edsubscription_testinguntildate": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1786
                      },
                      "versions": {
                        "type": "object",
                        "properties": {},
                        "additionalProperties": true
                      },
                      "pdf_engine": {
                        "enum": [
                          1,
                          2,
                          null
                        ],
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "pdf_edit_restriction_password": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1851,
                        "type": "boolean"
                      },
                      "pdf_paper_size": {
                        "type": "string",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "pdf_custom_css": {
                        "type": "string",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "dinaco_client_id": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1960,
                        "type": "string"
                      },
                      "dinaco_client_secret": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 1979,
                        "x-edoobox-sensitive": true
                      },
                      "gtm_mess_id": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "gtm_container_id": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 2024,
                        "type": "string"
                      },
                      "meta_html": {
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "system_attachments_file_naming": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {},
                            "additionalProperties": {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          },
                          {
                            "type": "array",
                            "maxItems": 0
                          }
                        ],
                        "description": "Associative map, or [] when there are no naming rules.",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "website_integration": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 2132
                      },
                      "website_url": {
                        "type": "string",
                        "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": "be8942fdca4dbcf16a5c5767f778b5644e53284101fa8aa6d00d8f1de7cf3df9"
                          }
                        ]
                      },
                      "admin_custom_permissions": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 2172,
                        "type": "boolean"
                      },
                      "admin_academic_title_use": {
                        "description": "Response field from the resource Structure; dynamic values remain unconstrained.",
                        "x-edoobox-sourceLine": 2192,
                        "type": "boolean"
                      },
                      "root_archive": {
                        "type": "string",
                        "pattern": "^category_[a-f0-9]{12}_-?[0-9]+$",
                        "description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID."
                      },
                      "root_trash": {
                        "type": "string",
                        "pattern": "^category_[a-f0-9]{12}_-?[0-9]+$",
                        "description": "Öffentliche v2-ID aus dem ausgewählten Account; keine interne Datenbank-ID."
                      },
                      "user_currencys": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "stripe_public_key": {
                        "type": [
                          "string",
                          "boolean"
                        ]
                      }
                    },
                    "additionalProperties": true
                  }
                ],
                "description": "Einzelnes Account-Einstellungsobjekt; auch die Listenroute reduziert auf das erste gefundene Objekt."
              },
              "type": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      }
    },
    "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"
          }
        }
      }
    },
    "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"
          }
        }
      }
    }
  },
  "x-edoobox-mutates-state": true,
  "x-edoobox-sensitiveResponseFields": [
    "dinaco_client_secret"
  ],
  "x-edoobox-mutationReview": {
    "source": {
      "file": "application/models/v2/Settings.php",
      "line": 2586
    },
    "reason": "Settings object/dashboard query; sensitive field exposure is separately controlled."
  },
  "x-edoobox-runtimeMutationGuard": false,
  "x-edoobox-get-effect": "maintenance",
  "x-edoobox-documentationReview": {
    "file": "docs/openapi/operation-contracts/06-admin-settings.json",
    "notes": []
  },
  "x-edoobox-source": {
    "file": "application/models/v2/Settings.php",
    "method": "getSettings",
    "line": 2408
  },
  "x-edoobox-documentationStatus": "reviewed",
  "x-edoobox-readOnly": false,
  "x-edoobox-safeForAutomation": false,
  "x-edoobox-permission": {
    "resource": "settings",
    "short": "setti",
    "checkedByDispatcher": true,
    "levels": [
      1,
      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."
  }
}
```
