{
  "openapi": "3.1.0",
  "info": {
    "title": "ApptiveGrid REST API",
    "version": "2.4.1348",
    "summary": "Spaces, Grids, Einträge, Ansichten, Formulare und Seiten über HTTP.",
    "description": "Die ApptiveGrid-API ist eine HAL-artige Hypermedia-API: jede Antwort trägt unter\n`_links` die Operationen, die der aufrufenden Identität auf dieser Ressource\ntatsächlich erlaubt sind. Pfade lassen sich damit entdecken statt zusammenbauen.\n\nDiese Beschreibung wurde aus dem Backend-Image erzeugt\n(Version 2.4.1348, ausgelesen am 2026-08-30T19:52:30.500164+02:00).\nAls `x-unverified` markierte Felder sind nicht Teil des garantierten Vertrags dieser Version."
  },
  "servers": [
    {
      "url": "https://app.apptivegrid.de",
      "description": "Produktion"
    }
  ],
  "security": [
    {
      "apiKey": []
    },
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "API-Schlüssel"
    },
    {
      "name": "Ansichten"
    },
    {
      "name": "Benutzer"
    },
    {
      "name": "Einträge"
    },
    {
      "name": "Felder"
    },
    {
      "name": "Flows"
    },
    {
      "name": "Formulare"
    },
    {
      "name": "Freigaben"
    },
    {
      "name": "Grids"
    },
    {
      "name": "Hooks und Links"
    },
    {
      "name": "Meta"
    },
    {
      "name": "Seiten und Blöcke"
    },
    {
      "name": "Spaces"
    },
    {
      "name": "Öffentliche Links"
    }
  ],
  "paths": {
    "/api/nodeTypes": {
      "parameters": [],
      "get": {
        "tags": [
          "Meta"
        ],
        "summary": "/api/nodeTypes",
        "description": "Bedient von `AGPluggableCall`.",
        "operationId": "getNodeTypes",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Namen aller verfügbaren Flow-Knotentypen. Vor dem Anlegen eines Knotens (`addFlowNode`) hier den passenden Typ wählen; welche Konfiguration ein Typ danach erwartet, steht in `NodeType_<typeName>` in den Schema-Komponenten und lässt sich nach dem Anlegen zusätzlich über `readFlowNodePropertiesSchema` abfragen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "end",
                      "start",
                      "addEntity",
                      "editLink",
                      "flowInstanceLink",
                      "flowForm",
                      "listGridEntities",
                      "listViewEntities",
                      "sendEmail",
                      "sendHttpRequest",
                      "updateEntity",
                      "andJoin",
                      "orJoin",
                      "simpleMerge",
                      "andSplit",
                      "exclusiveGateway",
                      "multiChoiceGateway",
                      "parallelJoin",
                      "parallel"
                    ]
                  },
                  "examples": [
                    [
                      "end",
                      "start",
                      "addEntity",
                      "editLink",
                      "flowInstanceLink",
                      "flowForm",
                      "listGridEntities",
                      "listViewEntities",
                      "sendEmail",
                      "sendHttpRequest",
                      "updateEntity",
                      "andJoin",
                      "orJoin",
                      "simpleMerge",
                      "andSplit",
                      "exclusiveGateway",
                      "multiChoiceGateway",
                      "parallelJoin",
                      "parallel"
                    ]
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/api/version": {
      "parameters": [],
      "get": {
        "tags": [
          "Meta"
        ],
        "summary": "/api/version",
        "description": "Bedient von `AGPluggableCall`.",
        "operationId": "getBackendVersion",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Die Version des Backends als JSON-Zeichenkette.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/api/blocks": {
      "parameters": [],
      "get": {
        "tags": [
          "Meta"
        ],
        "summary": "/api/blocks",
        "description": "Bedient von `AGPluggableCall`.",
        "operationId": "getBlockTypes",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Beispielhafte Definition je Block- und Formular-Eingabetyp, nach Typname geschlüsselt. Enthält sowohl Seiten-Blöcke (`metaType: \"block\"`, siehe `Block_*`-Schemata) als auch Formular-Eingabefelder (`metaType: \"formInput\"`/`\"nestedFormInput\"`).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                },
                "examples": [
                  {
                    "paragraph": {
                      "paragraph": {
                        "properties": {},
                        "annotations": {},
                        "viewType": null,
                        "visible": null,
                        "text": null
                      },
                      "has_children": false,
                      "metaType": "block",
                      "type": "paragraph",
                      "children": []
                    },
                    "entityInput": {
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "type": "entityInput",
                      "children": [
                        {
                          "formKey": "uri",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        }
                      ],
                      "entityInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "reference": null,
                        "type": {
                          "name": "reference",
                          "gridUri": "a sample uri",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      }
                    },
                    "uriInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "uriInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "uri": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "uri",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "type": "uriInput",
                      "children": []
                    },
                    "entityCollectionInput": {
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "type": "entityCollectionInput",
                      "children": [
                        {
                          "formKey": "uri",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        }
                      ],
                      "entityCollectionInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "references": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "references",
                          "gridUri": "a sample uri",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      }
                    },
                    "emailInput": {
                      "emailInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "email": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "email",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "emailInput",
                      "children": []
                    },
                    "apptiveScriptInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "apptiveScriptInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "apptiveScript": null,
                        "type": {
                          "name": "apptiveScript",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "type": "apptiveScriptInput",
                      "children": []
                    },
                    "mimeEntityInput": {
                      "mimeEntityInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "mimeEntity": null,
                        "type": {
                          "name": "mimeEntity",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "type": "mimeEntityInput",
                      "children": [
                        {
                          "formKey": "fileName",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "mimeType",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "contents",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        }
                      ]
                    },
                    "resourceInput": {
                      "resourceInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "resource": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "resource",
                          "validResourceTypes": null,
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "type": "resourceInput",
                      "children": [
                        {
                          "formKey": "href",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        }
                      ]
                    },
                    "gridInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "gridInput",
                      "children": [],
                      "gridInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "grid": null,
                        "type": {
                          "name": "grid",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      }
                    },
                    "signatureInput": {
                      "signatureInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "signature": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "signature",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "signatureInput",
                      "children": []
                    },
                    "resourceBlock": {
                      "has_children": false,
                      "metaType": "block",
                      "type": "resourceBlock",
                      "children": [],
                      "resourceBlock": {
                        "properties": {},
                        "resource": null,
                        "annotations": {},
                        "height": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "resource",
                          "validResourceTypes": null,
                          "access": "write"
                        },
                        "width": null
                      }
                    },
                    "html": {
                      "has_children": false,
                      "metaType": "block",
                      "type": "html",
                      "html": {
                        "properties": {},
                        "annotations": {},
                        "viewType": null,
                        "visible": null,
                        "text": {
                          "evaluated": null,
                          "value": null
                        }
                      },
                      "children": []
                    },
                    "textInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "textInput",
                      "children": [],
                      "textInput": {
                        "multiline": null,
                        "visible": null,
                        "label": null,
                        "readonly": false,
                        "string": null,
                        "annotations": {},
                        "properties": {},
                        "required": false,
                        "type": {
                          "name": "string",
                          "access": "write"
                        },
                        "viewType": null,
                        "placeholder": null
                      }
                    },
                    "attachmentInput": {
                      "attachmentInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "attachment": null,
                        "type": {
                          "name": "attachment",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "type": "attachmentInput",
                      "children": [
                        {
                          "formKey": "name",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "url",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "type",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "largeThumbnail",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "smallThumbnail",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        }
                      ]
                    },
                    "page": {
                      "displayValue": null,
                      "has_children": false,
                      "metaType": "block",
                      "children": [],
                      "type": "page",
                      "page": {
                        "icon": null,
                        "headerImage": null,
                        "annotations": {},
                        "viewType": null,
                        "visible": null,
                        "name": null,
                        "properties": {}
                      }
                    },
                    "booleanInput": {
                      "booleanInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "boolean": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "boolean",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "booleanInput",
                      "children": []
                    },
                    "enumInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "enumInput",
                      "children": [],
                      "enumInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "enum": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "enum",
                          "extended": false,
                          "options": [
                            "A",
                            "B",
                            "C"
                          ],
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      }
                    },
                    "videoInput": {
                      "videoInput": {
                        "label": null,
                        "readonly": false,
                        "video": null,
                        "annotations": {},
                        "boolean": null,
                        "properties": {},
                        "required": false,
                        "type": {
                          "name": "boolean",
                          "access": "write"
                        },
                        "viewType": null,
                        "visible": null
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "videoInput",
                      "children": []
                    },
                    "mimeEntityCollectionInput": {
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "type": "mimeEntityCollectionInput",
                      "children": [
                        {
                          "formKey": "fileName",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "mimeType",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "contents",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        }
                      ],
                      "mimeEntityCollectionInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "mimeEntityCollection": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "mimeEntityCollection",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      }
                    },
                    "integerInput": {
                      "integerInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "integer": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "integer",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "integerInput",
                      "children": []
                    },
                    "addressInput": {
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "addressInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "address": null,
                        "type": {
                          "name": "address",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "type": "addressInput",
                      "children": [
                        {
                          "formKey": "line1",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "line2",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "city",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "state",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "country",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "postCode",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "geoLocation",
                          "has_children": true,
                          "metaType": "nestedFormInput",
                          "geoLocationInput": {
                            "properties": {},
                            "annotations": {},
                            "required": false,
                            "geolocation": null,
                            "viewType": null,
                            "visible": null,
                            "type": {
                              "name": "geolocation",
                              "access": "write"
                            },
                            "label": null,
                            "readonly": false
                          },
                          "type": "geoLocationInput",
                          "children": [
                            {
                              "decimalInput": {
                                "properties": {},
                                "annotations": {},
                                "required": false,
                                "decimal": null,
                                "viewType": null,
                                "visible": null,
                                "type": {
                                  "access": "write",
                                  "name": "decimal",
                                  "scale": null
                                },
                                "label": null,
                                "readonly": false
                              },
                              "formKey": "lat",
                              "has_children": false,
                              "metaType": "formInput",
                              "type": "decimalInput",
                              "children": []
                            },
                            {
                              "decimalInput": {
                                "properties": {},
                                "annotations": {},
                                "required": false,
                                "decimal": null,
                                "viewType": null,
                                "visible": null,
                                "type": {
                                  "access": "write",
                                  "name": "decimal",
                                  "scale": null
                                },
                                "label": null,
                                "readonly": false
                              },
                              "formKey": "lon",
                              "has_children": false,
                              "metaType": "formInput",
                              "type": "decimalInput",
                              "children": []
                            }
                          ]
                        }
                      ]
                    },
                    "entityList": {
                      "entityList": {
                        "annotations": {},
                        "itemBlock": null,
                        "viewType": null,
                        "visible": null,
                        "grid": null,
                        "properties": {}
                      },
                      "has_children": false,
                      "metaType": "block",
                      "type": "entityList",
                      "children": []
                    },
                    "enumCollectionInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "enumCollectionInput",
                      "children": [],
                      "enumCollectionInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "enumcollection": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "enumcollection",
                          "extended": false,
                          "options": [
                            "A",
                            "B",
                            "C"
                          ],
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      }
                    },
                    "dateInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "dateInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "date": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "date",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "type": "dateInput",
                      "children": []
                    },
                    "layout": {
                      "layout": {
                        "mainAxisAlignItems": null,
                        "wrap": null,
                        "properties": {},
                        "annotations": {},
                        "viewType": null,
                        "visible": null,
                        "layoutMode": null,
                        "counterAxisAlignItems": null
                      },
                      "has_children": false,
                      "metaType": "block",
                      "type": "layout",
                      "children": []
                    },
                    "IFrame": {
                      "IFrame": {
                        "uri": null,
                        "annotations": {},
                        "viewType": null,
                        "visible": null,
                        "height": null,
                        "properties": {}
                      },
                      "has_children": false,
                      "metaType": "block",
                      "type": "IFrame",
                      "children": []
                    },
                    "header": {
                      "has_children": false,
                      "metaType": "block",
                      "type": "header",
                      "children": [],
                      "header": {
                        "properties": {},
                        "annotations": {},
                        "level": null,
                        "viewType": null,
                        "visible": null,
                        "text": null
                      }
                    },
                    "dateAndTimeInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "dateAndTimeInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "date-time": null,
                        "type": {
                          "name": "date-time",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "type": "dateAndTimeInput",
                      "children": []
                    },
                    "stringDictionaryInput": {
                      "stringDictionaryInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "stringDictionary": null,
                        "type": {
                          "name": "stringDictionary",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "stringDictionaryInput",
                      "children": []
                    },
                    "decimalInput": {
                      "decimalInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "decimal": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "access": "write",
                          "name": "decimal",
                          "scale": null
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "decimalInput",
                      "children": []
                    },
                    "entity": {
                      "has_children": false,
                      "metaType": "block",
                      "type": "entity",
                      "entity": {
                        "annotations": {},
                        "viewType": null,
                        "visible": null,
                        "grid": null,
                        "properties": {}
                      },
                      "children": []
                    },
                    "currencyInput": {
                      "currencyInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "currency": null,
                        "type": {
                          "access": "write",
                          "name": "currency",
                          "currency": "AFN",
                          "scale": null
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "currencyInput",
                      "children": []
                    },
                    "userInput": {
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "userInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "user": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "user",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "type": "userInput",
                      "children": [
                        {
                          "formKey": "uri",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        }
                      ]
                    },
                    "phoneNumberInput": {
                      "phoneNumberInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "phoneNumber": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "phoneNumber",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "phoneNumberInput",
                      "children": []
                    },
                    "image": {
                      "image": {
                        "properties": {},
                        "annotations": {},
                        "url": null,
                        "height": null,
                        "viewType": null,
                        "visible": null,
                        "width": null
                      },
                      "has_children": false,
                      "metaType": "block",
                      "type": "image",
                      "children": []
                    },
                    "attachmentCollectionInput": {
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "type": "attachmentCollectionInput",
                      "children": [
                        {
                          "formKey": "name",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "url",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "type",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "largeThumbnail",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        },
                        {
                          "formKey": "smallThumbnail",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "textInput",
                          "children": [],
                          "textInput": {
                            "multiline": null,
                            "visible": null,
                            "label": null,
                            "readonly": false,
                            "string": null,
                            "annotations": {},
                            "properties": {},
                            "required": false,
                            "type": {
                              "name": "string",
                              "access": "write"
                            },
                            "viewType": null,
                            "placeholder": null
                          }
                        }
                      ],
                      "attachmentCollectionInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "attachments": null,
                        "type": {
                          "name": "attachments",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      }
                    },
                    "multiTextInput": {
                      "formKey": null,
                      "has_children": false,
                      "metaType": "formInput",
                      "type": "multiTextInput",
                      "children": [],
                      "multiTextInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "viewType": null,
                        "visible": null,
                        "stringcollection": null,
                        "type": {
                          "name": "stringcollection",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      }
                    },
                    "geoLocationInput": {
                      "formKey": null,
                      "has_children": true,
                      "metaType": "nestedFormInput",
                      "geoLocationInput": {
                        "properties": {},
                        "annotations": {},
                        "required": false,
                        "geolocation": null,
                        "viewType": null,
                        "visible": null,
                        "type": {
                          "name": "geolocation",
                          "access": "write"
                        },
                        "label": null,
                        "readonly": false
                      },
                      "type": "geoLocationInput",
                      "children": [
                        {
                          "decimalInput": {
                            "properties": {},
                            "annotations": {},
                            "required": false,
                            "decimal": null,
                            "viewType": null,
                            "visible": null,
                            "type": {
                              "access": "write",
                              "name": "decimal",
                              "scale": null
                            },
                            "label": null,
                            "readonly": false
                          },
                          "formKey": "lat",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "decimalInput",
                          "children": []
                        },
                        {
                          "decimalInput": {
                            "properties": {},
                            "annotations": {},
                            "required": false,
                            "decimal": null,
                            "viewType": null,
                            "visible": null,
                            "type": {
                              "access": "write",
                              "name": "decimal",
                              "scale": null
                            },
                            "label": null,
                            "readonly": false
                          },
                          "formKey": "lon",
                          "has_children": false,
                          "metaType": "formInput",
                          "type": "decimalInput",
                          "children": []
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/api/types": {
      "parameters": [],
      "get": {
        "tags": [
          "Meta"
        ],
        "summary": "/api/types",
        "description": "Bedient von `AGPluggableCall`.",
        "operationId": "getFieldTypes",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Alle nutzbaren Feldtypen. Für die Wertform beim Lesen/Schreiben von Einträgen siehe `FieldValue_<typeName>`, für die Typ-Definition beim Anlegen eines Feldes `FieldType_<typeName>` in den Schema-Komponenten.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "typeName": {
                        "type": "string",
                        "enum": [
                          "createdat",
                          "createdby",
                          "enum",
                          "formula",
                          "lookup",
                          "reducedLookupCollectionType",
                          "boolean",
                          "currency",
                          "date-time",
                          "date",
                          "decimal",
                          "email",
                          "integer",
                          "phoneNumber",
                          "richText",
                          "string",
                          "uri",
                          "attachments",
                          "enumcollection",
                          "mimeEntityCollection",
                          "references",
                          "stringcollection",
                          "address",
                          "reference",
                          "geolocation",
                          "resource",
                          "user",
                          "signature"
                        ]
                      },
                      "componentTypes": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Bei zusammengesetzten Typen (Sammlungen) der Name des Elementtyps."
                      }
                    }
                  },
                  "examples": [
                    [
                      {
                        "typeName": "createdat",
                        "componentTypes": []
                      },
                      {
                        "typeName": "createdby",
                        "componentTypes": []
                      },
                      {
                        "typeName": "enum",
                        "componentTypes": []
                      },
                      {
                        "typeName": "formula",
                        "componentTypes": []
                      },
                      {
                        "typeName": "lookup",
                        "componentTypes": []
                      },
                      {
                        "typeName": "reducedLookupCollectionType",
                        "componentTypes": []
                      },
                      {
                        "typeName": "boolean",
                        "componentTypes": []
                      },
                      {
                        "typeName": "currency",
                        "componentTypes": []
                      },
                      {
                        "typeName": "date-time",
                        "componentTypes": []
                      },
                      {
                        "typeName": "date",
                        "componentTypes": []
                      },
                      {
                        "typeName": "decimal",
                        "componentTypes": []
                      },
                      {
                        "typeName": "email",
                        "componentTypes": []
                      },
                      {
                        "typeName": "integer",
                        "componentTypes": []
                      },
                      {
                        "typeName": "phoneNumber",
                        "componentTypes": []
                      },
                      {
                        "typeName": "richText",
                        "componentTypes": []
                      },
                      {
                        "typeName": "string",
                        "componentTypes": []
                      },
                      {
                        "typeName": "uri",
                        "componentTypes": []
                      },
                      {
                        "typeName": "attachments",
                        "componentTypes": []
                      },
                      {
                        "typeName": "enumcollection",
                        "componentTypes": []
                      },
                      {
                        "typeName": "mimeEntityCollection",
                        "componentTypes": []
                      },
                      {
                        "typeName": "references",
                        "componentTypes": []
                      },
                      {
                        "typeName": "stringcollection",
                        "componentTypes": []
                      },
                      {
                        "typeName": "address",
                        "componentTypes": []
                      },
                      {
                        "typeName": "reference",
                        "componentTypes": []
                      },
                      {
                        "typeName": "geolocation",
                        "componentTypes": []
                      },
                      {
                        "typeName": "resource",
                        "componentTypes": []
                      },
                      {
                        "typeName": "user",
                        "componentTypes": []
                      },
                      {
                        "typeName": "signature",
                        "componentTypes": []
                      }
                    ]
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/api/a/{userId}/{externalHookId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "Get External Link",
        "description": "Operation `AGGetExternalLinkOperation` im Backend.\n\n**Benötigte Berechtigung:** im Code ist keine Permission-Klasse hinterlegt; die Zugriffsprüfung erfolgt an anderer Stelle (siehe Beschreibung der Ressource).\n\nDie Operation bekommt die vollständige HTTP-Anfrage übergeben (`AGHttpRequest`); Query-Parameter der Anfrage werden weitergereicht.\n\n**Veraltet.** Diese Route ist im Uri-Space nur noch für ältere Clients eingetragen und taucht in den `_links` der Antworten nicht mehr auf.",
        "operationId": "getExternalLink",
        "deprecated": true,
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [],
        "x-apptivegrid-permissions": [],
        "x-apptivegrid-roles": []
      },
      "post": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "Post External Link",
        "description": "Operation `AGPostExternalLinkOperation` im Backend.\n\n**Benötigte Berechtigung:** im Code ist keine Permission-Klasse hinterlegt; die Zugriffsprüfung erfolgt an anderer Stelle (siehe Beschreibung der Ressource).\n\nDie Operation bekommt die vollständige HTTP-Anfrage übergeben (`AGHttpRequest`); Query-Parameter der Anfrage werden weitergereicht.\n\n**Veraltet.** Diese Route ist im Uri-Space nur noch für ältere Clients eingetragen und taucht in den `_links` der Antworten nicht mehr auf.",
        "operationId": "postExternalLink",
        "deprecated": true,
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [],
        "x-apptivegrid-permissions": [],
        "x-apptivegrid-roles": []
      }
    },
    "/api/a/{userId}/{externalHookId}/{externalHookJson}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookJson",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "Get External Link",
        "description": "Operation `AGGetExternalLinkOperation` im Backend.\n\n**Benötigte Berechtigung:** im Code ist keine Permission-Klasse hinterlegt; die Zugriffsprüfung erfolgt an anderer Stelle (siehe Beschreibung der Ressource).\n\nDie Operation bekommt die vollständige HTTP-Anfrage übergeben (`AGHttpRequest`); Query-Parameter der Anfrage werden weitergereicht.",
        "operationId": "getExternalLink_a",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [],
        "x-apptivegrid-permissions": [],
        "x-apptivegrid-roles": []
      },
      "post": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "Post External Link",
        "description": "Operation `AGPostExternalLinkOperation` im Backend.\n\n**Benötigte Berechtigung:** im Code ist keine Permission-Klasse hinterlegt; die Zugriffsprüfung erfolgt an anderer Stelle (siehe Beschreibung der Ressource).\n\nDie Operation bekommt die vollständige HTTP-Anfrage übergeben (`AGHttpRequest`); Query-Parameter der Anfrage werden weitergereicht.",
        "operationId": "postExternalLink_a",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [],
        "x-apptivegrid-permissions": [],
        "x-apptivegrid-roles": []
      }
    },
    "/api/a/{userId}/{externalHookId}/{externalHookJson}/{nestedResourcePath}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookJson",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "nestedResourcePath",
          "in": "path",
          "required": true,
          "description": "Ein oder mehrere weitere Pfadsegmente. Das Backend hängt sie an die Ressource des Links an und ruft die dort registrierte Operation auf (Katch-All-Segment `*` im Uri-Space). Schrägstriche werden hier nicht kodiert.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "put": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "/api/a/{userId}/{externalHookId}/{externalHookJson}/{nestedResourcePath}",
        "description": "Bedient von `AGNestedCallMapping`.",
        "operationId": "put-api-a-userId-externalHookId-externalHookJson-nestedResourcePath",
        "x-apptivegrid-catch-all": true,
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      },
      "post": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "/api/a/{userId}/{externalHookId}/{externalHookJson}/{nestedResourcePath}",
        "description": "Bedient von `AGNestedCallMapping`.",
        "operationId": "post-api-a-userId-externalHookId-externalHookJson-nestedResourcePath",
        "x-apptivegrid-catch-all": true,
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      },
      "delete": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "/api/a/{userId}/{externalHookId}/{externalHookJson}/{nestedResourcePath}",
        "description": "Bedient von `AGNestedCallMapping`.",
        "operationId": "delete-api-a-userId-externalHookId-externalHookJson-nestedResourcePath",
        "x-apptivegrid-catch-all": true,
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      },
      "patch": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "/api/a/{userId}/{externalHookId}/{externalHookJson}/{nestedResourcePath}",
        "description": "Bedient von `AGNestedCallMapping`.",
        "operationId": "patch-api-a-userId-externalHookId-externalHookJson-nestedResourcePath",
        "x-apptivegrid-catch-all": true,
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      },
      "get": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "/api/a/{userId}/{externalHookId}/{externalHookJson}/{nestedResourcePath}",
        "description": "Bedient von `AGNestedCallMapping`.",
        "operationId": "get-api-a-userId-externalHookId-externalHookJson-nestedResourcePath",
        "x-apptivegrid-catch-all": true,
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die Rumpfform hängt vom Typ des Links ab: das Backend reicht die Anfrage an den hinterlegten Hook weiter (Formular, Eintrag anlegen, Eintrag bearbeiten, Ansicht). Welche Ressource dahinter steht, steht nicht im Link selbst.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/api/r/{userId}/{externalHookId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "/api/r/{userId}/{externalHookId}",
        "description": "Bedient von `AGPluggableCall`.",
        "operationId": "resolvePublicLink",
        "deprecated": true,
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "302": {
            "description": "Weiterleitung auf das Ziel des Links. Der Pfad steht im Header `Location`.",
            "headers": {
              "Location": {
                "description": "Weiterleitungsziel.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/api/r/{userId}/{externalHookId}/{externalHookJson}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookJson",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Öffentliche Links"
        ],
        "summary": "/api/r/{userId}/{externalHookId}/{externalHookJson}",
        "description": "Bedient von `AGPluggableCall`.",
        "operationId": "resolvePublicLinkPayload",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "302": {
            "description": "Weiterleitung auf das Ziel des Links. Der Pfad steht im Header `Location`.",
            "headers": {
              "Location": {
                "description": "Weiterleitungsziel.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/api/users/me": {
      "parameters": [],
      "get": {
        "tags": [
          "Benutzer"
        ],
        "summary": "/api/users/me",
        "description": "Bedient von `AGUsersMeCall`.",
        "operationId": "getCurrentUser",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "302": {
            "description": "Weiterleitung auf `/api/users/{userId}` der aufrufenden Identität. Der Pfad steht im Header `Location`.",
            "headers": {
              "Location": {
                "description": "Pfad der eigenen Benutzerressource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },
    "/api/users/{userId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Benutzer"
        ],
        "summary": "Read User",
        "description": "Operation `AGReadUserOperation` im Backend.\n\n**Benötigte Berechtigung:** `readUser` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readUser",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readUser"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/copyRemoteSpace": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Benutzer"
        ],
        "summary": "Copy Remote Space",
        "description": "Operation `AGCopyRemoteSpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `addSpace` — erlaubt für admin (verwalten).",
        "operationId": "copyRemoteSpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "includeEntities": {
                    "type": "boolean"
                  },
                  "spaceUri": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/acceptSharedSpace": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Benutzer"
        ],
        "summary": "Accept Shared Space",
        "description": "Operation `AGAcceptSharedSpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `acceptSharedspace` — erlaubt für admin (verwalten).",
        "operationId": "acceptSharedSpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "urn",
            "in": "query",
            "required": true,
            "description": "Die URN des freigegebenen Space.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "in": "query",
            "required": true,
            "description": "Der Name des freigegebenen Space.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "belongsTo",
            "in": "query",
            "required": false,
            "description": "Ein `belongsTo`-Wert für den freigegebenen Space.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "query",
            "required": false,
            "description": "Ein `key`-Wert für den freigegebenen Space.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "acceptSharedspace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/hooks": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Add Legacy Hook",
        "description": "Operation `AGAddLegacyHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `addHook` — erlaubt für admin (verwalten).",
        "operationId": "addLegacyHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Der Rumpf wird als Rohtext gelesen (`AGHttpRawBody`) und von der Operation interpretiert; ein festes JSON-Schema ist im Code nicht hinterlegt.",
          "content": {
            "application/json": {
              "schema": {},
              "x-unverified": true
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addHook"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/SpacePositionChange": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Benutzer"
        ],
        "summary": "Change Space Position",
        "description": "Operation `AGChangeSpacePositionOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateUser` — erlaubt für admin (verwalten).",
        "operationId": "changeSpacePosition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "position": {
                    "type": "integer"
                  },
                  "uri": {
                    "type": "string"
                  }
                },
                "required": [
                  "position",
                  "uri"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateUser"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/flows": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Flows"
        ],
        "summary": "Add Flow",
        "description": "Operation `AGAddFlowOperation` im Backend.\n\n**Benötigte Berechtigung:** `addFlow` — erlaubt für admin (verwalten).\n\nBenötigt die Space-Adresse aus `addSpace` (über `parentResource`).",
        "operationId": "addFlow",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "parentResource": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{flowId}`) wird anschließend u. a. gebraucht bei: `addTransition`, `addFlowNode`, `patchFlow`, `readFlow`, `removeFlow`, `listFlowResources`, `removeTransition`, `listFlowInstances`, `readFlowInstance`, `flowInstanceHookUri`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addFlow"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "List Flows",
        "description": "Operation `AGListFlowsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listFlows` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listFlows",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listFlows"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "tags": [
          "Flows"
        ],
        "summary": "Patch Flow",
        "description": "Operation `AGPatchFlowOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFlow` — erlaubt für admin (verwalten).",
        "operationId": "patchFlow",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFlow"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "Read Flow",
        "description": "Operation `AGReadFlowOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlow` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "readFlow",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlow"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      },
      "delete": {
        "tags": [
          "Flows"
        ],
        "summary": "Remove Flow",
        "description": "Operation `AGRemoveFlowOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeFlow` — erlaubt für admin (verwalten).",
        "operationId": "removeFlow",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeFlow"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/resources": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "List Flow Resources",
        "description": "Operation `AGListFlowResourcesOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlow` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listFlowResources",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          },
          {
            "name": "types",
            "in": "query",
            "required": true,
            "description": "Eine Liste von Bezeichnungen für die Art der zu sammelnden Ressourcen. Mehrere Angaben durch Komma getrennt. Erlaubte Bezeichnungen: `block`, `entity`, `eventhook`, `externalHook`, `field`, `flow`, `flow activation`, `flow instance`, `flow node`, `form`, `formlink`, `grid`, `linkedGrid`, `node view`, `share`, `space`, `user`, `view`, `virtualGrid`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlow"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/removeTransition": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Flows"
        ],
        "summary": "Remove Transition",
        "description": "Operation `AGRemoveTransitionOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFlow` — erlaubt für admin (verwalten).",
        "operationId": "removeTransition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "source": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFlow"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/instances": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "List Flow Instances",
        "description": "Operation `AGListFlowInstancesOperation` im Backend.\n\n**Benötigte Berechtigung:** `listInstances` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listFlowInstances",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listInstances"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/instances/{flowInstanceId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowInstanceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowInstance).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "Read Flow Instance",
        "description": "Operation `AGReadFlowInstanceOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlowInstance` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "readFlowInstance",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlowInstance"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/instances/{flowInstanceId}/hookUri": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowInstanceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowInstance).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Flows"
        ],
        "summary": "Flow Instance Hook Uri",
        "description": "Operation `AGFlowInstanceHookUriOperation` im Backend.\n\n**Benötigte Berechtigung:** `readExternalHook` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).",
        "operationId": "flowInstanceHookUri",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "nodeId": {
                    "type": "string"
                  },
                  "viewId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readExternalHook"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/instances/{flowInstanceId}/steps/{steps}/events": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowInstanceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowInstance).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "steps",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (FBBaseActivation).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "List Flow Activation Events",
        "description": "Operation `AGListFlowActivationEventsOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlowActivation` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listFlowActivationEvents",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlowActivation"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/instances/{flowInstanceId}/steps/{steps}/rerun": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowInstanceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowInstance).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "steps",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (FBBaseActivation).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Flows"
        ],
        "summary": "Rerun Flow Activation",
        "description": "Operation `AGRerunFlowActivationOperation` im Backend.\n\n**Benötigte Berechtigung:** `executeFlowInstance` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).",
        "operationId": "rerunFlowActivation",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "nodeId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "executeFlowInstance"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/transitions": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Flows"
        ],
        "summary": "Add Transition",
        "description": "Operation `AGAddTransitionOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFlow` — erlaubt für admin (verwalten).\n\nVerbindet zwei bereits über `addFlowNode` angelegte Knoten (`source`/`target`, jeweils deren Adresse).",
        "operationId": "addTransition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "source": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "condition": {
                    "type": "string"
                  }
                },
                "required": [
                  "source",
                  "target"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{flowTransitionId}`) wird anschließend gebraucht bei: `patchFlowTransition`, `readFlowTransition`, `removeFlowTransition`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFlow"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "List Flow Transitions",
        "description": "Operation `AGListFlowTransitionsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listNodes` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listFlowTransitions",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listNodes"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/transitions/{flowTransitionId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowTransitionId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowTransition). Entsteht bei `addTransition`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "tags": [
          "Flows"
        ],
        "summary": "Patch Flow Transition",
        "description": "Operation `AGPatchFlowTransitionOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFlow` — erlaubt für admin (verwalten).",
        "operationId": "patchFlowTransition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "condition": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFlow"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "Read Flow Transition",
        "description": "Operation `AGReadFlowTransitionOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlow` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "readFlowTransition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlow"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      },
      "delete": {
        "tags": [
          "Flows"
        ],
        "summary": "Remove Flow Transition",
        "description": "Operation `AGRemoveFlowTransitionOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFlow` — erlaubt für admin (verwalten).",
        "operationId": "removeFlowTransition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFlow"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/nodes": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "List Flow Nodes",
        "description": "Operation `AGListFlowNodesOperation` im Backend.\n\n**Benötigte Berechtigung:** `listNodes` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listFlowNodes",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listNodes"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      },
      "post": {
        "tags": [
          "Flows"
        ],
        "summary": "Add Flow Node",
        "description": "Operation `AGAddFlowNodeOperation` im Backend.\n\n**Benötigte Berechtigung:** `addNode` — erlaubt für admin (verwalten).\n\n**Ablauf:** `getNodeTypes` aufrufen, um einen gültigen `type` zu wählen, dann hier anlegen. Anschließend `readFlowNodePropertiesSchema` für das Konfigurationsschema dieses konkreten Knotens aufrufen, dann `updateFlowNodeProperties` zum Setzen der Werte.",
        "operationId": "addFlowNode",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag": {
                    "type": "string"
                  },
                  "properties": {
                    "description": "Form hängt vom Knotentyp ab (`type` bei `addFlowNode`, sonst der bereits angelegte Typ des Knotens) - siehe `NodeType_<typeName>` in den Schema-Komponenten, oder `readFlowNodePropertiesSchema` für das Schema eines bereits angelegten Knotens."
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "end",
                      "start",
                      "addEntity",
                      "editLink",
                      "flowInstanceLink",
                      "flowForm",
                      "listGridEntities",
                      "listViewEntities",
                      "sendEmail",
                      "sendHttpRequest",
                      "updateEntity",
                      "andJoin",
                      "orJoin",
                      "simpleMerge",
                      "andSplit",
                      "exclusiveGateway",
                      "multiChoiceGateway",
                      "parallelJoin",
                      "parallel"
                    ],
                    "description": "Knotentyp. Verfügbare Typen und ihre jeweilige Konfiguration: `getNodeTypes` aufrufen, dann `NodeType_<typeName>` in den Schema-Komponenten nachschlagen."
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "type"
                ],
                "examples": [
                  {
                    "name": "Fahrzeug anlegen",
                    "type": "addEntity",
                    "properties": {
                      "grid": {
                        "href": "/api/users/64…/spaces/64…/grids/64…"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{nodes}`) wird anschließend gebraucht bei: `patchFlowNode`, `readFlowNode`, `removeFlowNode`, `listOutgoingTransitions`, `readSetupBlock`, `listIncomingTransitions`, `readFlowNodeProperties`, `updateFlowNodeProperties`, `readFlowNodePropertiesSchema`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addNode"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/nodes/{nodes}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "nodes",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (FBNode). Entsteht bei `addFlowNode`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "tags": [
          "Flows"
        ],
        "summary": "Patch Flow Node",
        "description": "Operation `AGPatchFlowNodeOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFlowNode` — erlaubt für admin (verwalten), writer (schreiben).\n\nTeiländerung; `properties` wird nur bei Angabe überschrieben (anders als bei `updateFlowNodeProperties`, das immer vollständig ersetzt).",
        "operationId": "patchFlowNode",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "properties": {
                    "description": "Form hängt vom Knotentyp ab (`type` bei `addFlowNode`, sonst der bereits angelegte Typ des Knotens) - siehe `NodeType_<typeName>` in den Schema-Komponenten, oder `readFlowNodePropertiesSchema` für das Schema eines bereits angelegten Knotens."
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer"
        ]
      },
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "Read Flow Node",
        "description": "Operation `AGReadFlowNodeOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlowNode` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "readFlowNode",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      },
      "delete": {
        "tags": [
          "Flows"
        ],
        "summary": "Remove Flow Node",
        "description": "Operation `AGRemoveFlowNodeOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeFlowNode` — erlaubt für admin (verwalten).",
        "operationId": "removeFlowNode",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/nodes/{nodes}/outgoing": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "nodes",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (FBNode). Entsteht bei `addFlowNode`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "List Outgoing Transitions",
        "description": "Operation `AGListOutgoingTransitionsOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlowNode` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listOutgoingTransitions",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/nodes/{nodes}/setupBlock": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "nodes",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (FBNode). Entsteht bei `addFlowNode`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "Read Setup Block",
        "description": "Operation `AGReadSetupBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlowNode` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "readSetupBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/nodes/{nodes}/incoming": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "nodes",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (FBNode). Entsteht bei `addFlowNode`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "List Incoming Transitions",
        "description": "Operation `AGListIncomingTransitionsOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlowNode` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listIncomingTransitions",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/nodes/{nodes}/properties": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "nodes",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (FBNode). Entsteht bei `addFlowNode`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "Read Flow Node Properties",
        "description": "Operation `AGReadFlowNodePropertiesOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlowNode` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.\n\nLiefert die aktuell gesetzten Werte; das dafür gültige Schema liefert `readFlowNodePropertiesSchema`.",
        "operationId": "readFlowNodeProperties",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      },
      "put": {
        "tags": [
          "Flows"
        ],
        "summary": "Update Flow Node Properties",
        "description": "Operation `AGUpdateFlowNodePropertiesOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFlowNode` — erlaubt für admin (verwalten), writer (schreiben).\n\nErsetzt alle Eigenschaften vollständig. Vorher mit `readFlowNodePropertiesSchema` das gültige Schema für diesen Knoten abrufen. Für Teiländerungen einzelner Werte stattdessen `patchFlowNode` verwenden.",
        "operationId": "updateFlowNodeProperties",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "properties": {
                    "description": "Form hängt vom Knotentyp ab (`type` bei `addFlowNode`, sonst der bereits angelegte Typ des Knotens) - siehe `NodeType_<typeName>` in den Schema-Komponenten, oder `readFlowNodePropertiesSchema` für das Schema eines bereits angelegten Knotens."
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "properties"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer"
        ]
      }
    },
    "/api/users/{userId}/flows/{flowId}/nodes/{nodes}/properties/schema": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "flowId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGFlowHolder). Entsteht bei `addFlow`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "nodes",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (FBNode). Entsteht bei `addFlowNode`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Flows"
        ],
        "summary": "Read Flow Node Properties Schema",
        "description": "Operation `AGReadFlowNodePropertiesSchemaOperation` im Backend.\n\n**Benötigte Berechtigung:** `readFlowNode` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.\n\n**Ablauf:** `getNodeTypes` (verfügbare Typen) → `addFlowNode` (Knoten anlegen) → **hier** (Konfigurationsschema des angelegten Knotens) → `updateFlowNodeProperties` (Eigenschaften entsprechend diesem Schema setzen) → `addTransition` (Knoten verbinden). Antwort ist `node.apptiveSchema` - Form identisch zu den `NodeType_<typeName>`-Schemata in den Komponenten, aber erst hier für den konkret angelegten Knoten abrufbar.",
        "operationId": "readFlowNodePropertiesSchema",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readFlowNode"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/accessKeys": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "API-Schlüssel"
        ],
        "summary": "List Access Credentials",
        "description": "Operation `AGListAccessCredentialsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listAccessKeys` — erlaubt für admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listAccessCredentials",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listAccessKeys"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "post": {
        "tags": [
          "API-Schlüssel"
        ],
        "summary": "Add Access Credentials",
        "description": "Operation `AGAddAccessCredentialsOperation` im Backend.\n\n**Benötigte Berechtigung:** `addAccessKey` — erlaubt für admin (verwalten).",
        "operationId": "addAccessCredentials",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "role": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "role"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addAccessKey"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/accessKeys/{accessCredentialsId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "accessCredentialsId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAccessCredentials).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "API-Schlüssel"
        ],
        "summary": "Read Access Credentials",
        "description": "Operation `AGReadAccessCredentialsOperation` im Backend.\n\n**Benötigte Berechtigung:** `readAccessCredentials` — erlaubt für admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readAccessCredentials",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg. Die genaue Rumpfform dieser Operation ist nicht Teil des dokumentierten Vertrags — verlassen Sie sich nicht auf eine feste Struktur.",
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "x-unverified": true
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readAccessCredentials"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "delete": {
        "tags": [
          "API-Schlüssel"
        ],
        "summary": "Remove Access Credentials",
        "description": "Operation `AGRemoveAccessCredentialsOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeAccessKey` — erlaubt für admin (verwalten).",
        "operationId": "removeAccessCredentials",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeAccessKey"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Spaces"
        ],
        "summary": "List Spaces",
        "description": "Operation `AGListSpacesOperation` im Backend.\n\n**Benötigte Berechtigung:** `listSpaces` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listSpaces",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          },
          {
            "name": "matching",
            "in": "query",
            "required": false,
            "description": "Ein Schlüssel-Wert-Paar; aufgelistet werden die Spaces, die darauf passen.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listSpaces"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "post": {
        "tags": [
          "Spaces"
        ],
        "summary": "Add Space",
        "description": "Operation `AGAddSpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `addSpace` — erlaubt für admin (verwalten).\n\nErster Schritt: legt den Behälter für Grids, Seiten und Flows an.",
        "operationId": "addSpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "belongsTo": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "icon": {}
                },
                "examples": [
                  {
                    "name": "Fuhrpark"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{spaceId}`) wird anschließend u. a. gebraucht bei: `addSpaceFlow`, `addHook`, `addGrid`, `addAddEntityHook`, `addField`, `addEditEntityHook`, `addVirtualGrid`, `addView`, `addGridViewHook`, `addGridView`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "tags": [
          "Spaces"
        ],
        "summary": "Patch Space",
        "description": "Operation `AGPatchSpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateSpace` — erlaubt für admin (verwalten).",
        "operationId": "patchSpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "spaceIcon": {},
                  "belongsTo": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "properties": {}
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Spaces"
        ],
        "summary": "Read Space",
        "description": "Operation `AGReadSpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `readSpace` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readSpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readSpace"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "delete": {
        "tags": [
          "Spaces"
        ],
        "summary": "Remove Space",
        "description": "Operation `AGRemoveSpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeSpace` — erlaubt für admin (verwalten).",
        "operationId": "removeSpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/Rename": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Spaces"
        ],
        "summary": "Rename Space",
        "description": "Operation `AGRenameSpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateSpace` — erlaubt für admin (verwalten).",
        "operationId": "renameSpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Der Rumpf wird als Rohtext gelesen (`AGHttpRawBody`) und von der Operation interpretiert; ein festes JSON-Schema ist im Code nicht hinterlegt.",
          "content": {
            "application/json": {
              "schema": {},
              "x-unverified": true
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/resources": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Spaces"
        ],
        "summary": "List Space Resources",
        "description": "Operation `AGListSpaceResourcesOperation` im Backend.\n\n**Benötigte Berechtigung:** `readSpace` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listSpaceResources",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          },
          {
            "name": "types",
            "in": "query",
            "required": true,
            "description": "Eine Liste von Bezeichnungen für die Art der zu sammelnden Ressourcen. Mehrere Angaben durch Komma getrennt. Erlaubte Bezeichnungen: `block`, `entity`, `eventhook`, `externalHook`, `field`, `flow`, `flow activation`, `flow instance`, `flow node`, `form`, `formlink`, `grid`, `linkedGrid`, `node view`, `share`, `space`, `user`, `view`, `virtualGrid`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readSpace"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/invite": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Freigaben"
        ],
        "summary": "Invite",
        "description": "Operation `AGInviteOperation` im Backend.\n\n**Benötigte Berechtigung:** `shareSpace` — erlaubt für admin (verwalten).\n\nDie Operation bekommt die vollständige HTTP-Anfrage übergeben (`AGHttpRequest`); Query-Parameter der Anfrage werden weitergereicht.",
        "operationId": "invite",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string"
                  },
                  "role": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "shareSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/PersistentGridPositionChange": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Spaces"
        ],
        "summary": "Change Persistent Grid Position",
        "description": "Operation `AGChangePersistentGridPositionOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateSpace` — erlaubt für admin (verwalten).",
        "operationId": "changePersistentGridPosition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "position": {
                    "type": "integer"
                  },
                  "uri": {
                    "type": "string"
                  }
                },
                "required": [
                  "position",
                  "uri"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/uploadUri": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Spaces"
        ],
        "summary": "Create S3Pre Signed URL",
        "description": "Operation `AGCreateS3PreSignedURL` im Backend.\n\n**Benötigte Berechtigung:** im Code ist keine Permission-Klasse hinterlegt; die Zugriffsprüfung erfolgt an anderer Stelle (siehe Beschreibung der Ressource).\n\nDie Operation verändert keine Daten.",
        "operationId": "createS3PreSignedURL",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Der Rumpf der Anfrage.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [],
        "x-apptivegrid-permissions": [],
        "x-apptivegrid-roles": []
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/VirtualGridPositionChange": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Spaces"
        ],
        "summary": "Change Virtual Grid Position",
        "description": "Operation `AGChangeVirtualGridPositionOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateSpace` — erlaubt für admin (verwalten).",
        "operationId": "changeVirtualGridPosition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "position": {
                    "type": "integer"
                  },
                  "uri": {
                    "type": "string"
                  }
                },
                "required": [
                  "position",
                  "uri"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/uploadCSV": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Spaces"
        ],
        "summary": "Create Grid From CSV",
        "description": "Operation `AGCreateGridFromCSVOperation` im Backend.\n\n**Benötigte Berechtigung:** `addGrid` — erlaubt für admin (verwalten).",
        "operationId": "createGridFromCSV",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/flows": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Spaces"
        ],
        "summary": "Add Space Flow",
        "description": "Operation `AGAddSpaceFlowOperation` im Backend.\n\n**Benötigte Berechtigung:** `addSpaceFlow` — erlaubt für admin (verwalten).\n\nBenötigt die Space-Adresse aus `addSpace`.",
        "operationId": "addSpaceFlow",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addSpaceFlow"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Spaces"
        ],
        "summary": "List Space Flows",
        "description": "Operation `AGListSpaceFlowsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listSpaceFlows` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listSpaceFlows",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listSpaceFlows"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/copy": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Spaces"
        ],
        "summary": "Copy Space",
        "description": "Operation `AGCopySpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `readSpace` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation bekommt die vollständige HTTP-Anfrage übergeben (`AGHttpRequest`); Query-Parameter der Anfrage werden weitergereicht.",
        "operationId": "copySpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "includeEntities": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readSpace"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/invitations": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Freigaben"
        ],
        "summary": "List Space Invitations",
        "description": "Operation `AGListSpaceInvitationsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listSpaceInvitations` — erlaubt für admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listSpaceInvitations",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listSpaceInvitations"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/invitations/{invitation}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "invitation",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGSpaceInvitation).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Freigaben"
        ],
        "summary": "Read Space Invitation",
        "description": "Operation `AGReadSpaceInvitationOperation` im Backend.\n\n**Benötigte Berechtigung:** `readSpaceInvitation` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readSpaceInvitation",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readSpaceInvitation"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "delete": {
        "tags": [
          "Freigaben"
        ],
        "summary": "Remove Space Invitation",
        "description": "Operation `AGRemoveSpaceInvitationOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeSpaceInvitation` — erlaubt für admin (verwalten).",
        "operationId": "removeSpaceInvitation",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeSpaceInvitation"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/hooks": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Add Hook",
        "description": "Operation `AGAddHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `addHook` — erlaubt für admin (verwalten).",
        "operationId": "addHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "event": {
                    "type": "string"
                  },
                  "condition": {},
                  "uri": {
                    "type": "string"
                  },
                  "object": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "properties": {}
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{hook}`) wird anschließend gebraucht bei: `removeHook`, `readHook`, `updateHook`, `testHook`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addHook"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "List Hooks",
        "description": "Operation `AGListHooksOperation` im Backend.\n\n**Benötigte Berechtigung:** `listHooks` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listHooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listHooks"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/hooks/{hook}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "hook",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGEventHook). Entsteht bei `addHook`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Remove Hook",
        "description": "Operation `AGRemoveHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeHook` — erlaubt für admin (verwalten).",
        "operationId": "removeHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeHook"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Read Hook",
        "description": "Operation `AGReadHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `readHook` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readHook"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "put": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Update Hook",
        "description": "Operation `AGUpdateHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateHook` — erlaubt für admin (verwalten).",
        "operationId": "updateHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uri": {
                    "type": "string"
                  },
                  "object": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "event": {
                    "type": "string"
                  },
                  "conditon": {}
                },
                "required": [
                  "object",
                  "event"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateHook"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/hooks/{hook}/test": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "hook",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGEventHook). Entsteht bei `addHook`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Test Hook",
        "description": "Operation `AGTestHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `testHook` — erlaubt für admin (verwalten).",
        "operationId": "testHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "testHook"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/externalHooks": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "List Space External Hooks",
        "description": "Operation `AGListSpaceExternalHooksOperation` im Backend.\n\n**Benötigte Berechtigung:** `listSpaceExternalHooks` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listSpaceExternalHooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listSpaceExternalHooks"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/externalHooks/{externalHookInternalId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookInternalId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Patch External Hook",
        "description": "Operation `AGPatchExternalHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateExternalLink` — erlaubt für admin (verwalten).",
        "operationId": "patchExternalHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "password": {
                    "type": "string"
                  },
                  "requiresPassword": {
                    "type": "boolean"
                  },
                  "requiresAuthorization": {
                    "type": "boolean"
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "reader",
                      "writer",
                      "admin"
                    ]
                  },
                  "publicAccess": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "username": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateExternalLink"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Read External Hook",
        "description": "Operation `AGReadExternalHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `readExternalHook` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readExternalHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readExternalHook"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "delete": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Remove External Link",
        "description": "Operation `AGRemoveExternalLinkOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeExternalLink` — erlaubt für admin (verwalten).",
        "operationId": "removeExternalLink",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeExternalLink"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/externalHooks/{externalHookInternalId}/editEntityUri": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "externalHookInternalId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGExternalHook).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "Edit Entity Uri",
        "description": "Operation `AGEditEntityUriOperation` im Backend.\n\n**Benötigte Berechtigung:** `readExternalHook` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "editEntityUri",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readExternalHook"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/shares": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Freigaben"
        ],
        "summary": "Share Space",
        "description": "Operation `AGShareSpaceOperation` im Backend.\n\n**Benötigte Berechtigung:** `shareSpace` — erlaubt für admin (verwalten).",
        "operationId": "shareSpace",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string"
                  },
                  "role": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{share}`) wird anschließend gebraucht bei: `removeSpaceShare`, `readSpaceShare`, `updateSpaceShare`, `removeViewShare`, `readViewShare`, `updateViewShare`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "shareSpace"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Freigaben"
        ],
        "summary": "List Shares",
        "description": "Operation `AGListSharesOperation` im Backend.\n\n**Benötigte Berechtigung:** `listShares` — erlaubt für admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listShares",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listShares"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/shares/{share}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "share",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGViewShare). Entsteht bei `shareSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "tags": [
          "Freigaben"
        ],
        "summary": "Remove Space Share",
        "description": "Operation `AGRemoveSpaceShareOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeShare` — erlaubt für admin (verwalten).",
        "operationId": "removeSpaceShare",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeShare"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Freigaben"
        ],
        "summary": "Read Space Share",
        "description": "Operation `AGReadSpaceShareOperation` im Backend.\n\n**Benötigte Berechtigung:** `readShare` — erlaubt für admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readSpaceShare",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readShare"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "put": {
        "tags": [
          "Freigaben"
        ],
        "summary": "Update Space Share",
        "description": "Operation `AGUpdateSpaceShareOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateShare` — erlaubt für admin (verwalten).",
        "operationId": "updateSpaceShare",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Der Rumpf wird als Rohtext gelesen (`AGHttpRawBody`) und von der Operation interpretiert; ein festes JSON-Schema ist im Code nicht hinterlegt.",
          "content": {
            "application/json": {
              "schema": {},
              "x-unverified": true
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateShare"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Grids"
        ],
        "summary": "List Grids",
        "description": "Operation `AGListGridsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listGrids` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listGrids",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Der Grid-Typ, falls eingeschränkt werden soll (`persistent` oder `virtual`).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listGrids"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Add Grid",
        "description": "Operation `AGAddGridOperation` im Backend.\n\n**Benötigte Berechtigung:** `addGrid` — erlaubt für admin (verwalten).\n\nBenötigt die Space-Adresse aus `addSpace`.",
        "operationId": "addGrid",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "createView": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "icon": {}
                },
                "examples": [
                  {
                    "name": "Fahrzeuge",
                    "createView": true
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{gridId}`) wird anschließend u. a. gebraucht bei: `addAddEntityHook`, `addField`, `addEditEntityHook`, `addVirtualGrid`, `addView`, `addGridViewHook`, `addGridView`, `addForm`, `addEntity`, `addEditionLink`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "tags": [
          "Grids"
        ],
        "summary": "Patch Grid",
        "description": "Operation `AGPatchGridOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateGrid` — erlaubt für admin (verwalten).",
        "operationId": "patchGrid",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "properties": {},
                  "name": {
                    "type": "string"
                  },
                  "icon": {}
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "put": {
        "tags": [
          "Grids"
        ],
        "summary": "Update Grid View",
        "description": "Operation `AGUpdateGridViewOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateGridView` — erlaubt für admin (verwalten).",
        "operationId": "updateGridView",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "icon": {},
                  "sorting": {},
                  "fields": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "filter": {},
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "filter",
                  "fields",
                  "name"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateGridView"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Grids"
        ],
        "summary": "Read Grid",
        "description": "Operation `AGReadGridOperation` im Backend.\n\n**Benötigte Berechtigung:** `readGrid` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readGrid",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readGrid"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "delete": {
        "tags": [
          "Grids"
        ],
        "summary": "Remove Grid",
        "description": "Operation `AGRemoveGridOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeGrid` — erlaubt für admin (verwalten).",
        "operationId": "removeGrid",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/FilterChange": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Update Filter",
        "description": "Operation `AGUpdateFilterOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateGridView` — erlaubt für admin (verwalten).",
        "operationId": "updateFilter",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "filter": {}
                },
                "additionalProperties": false,
                "required": [
                  "filter"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateGridView"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/externalHooks": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Hooks und Links"
        ],
        "summary": "List Grid External Hooks",
        "description": "Operation `AGListGridExternalHooksOperation` im Backend.\n\n**Benötigte Berechtigung:** `listGridExternalHooks` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listGridExternalHooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listGridExternalHooks"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/ColumnRemove": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Remove Field",
        "description": "Operation `AGRemoveFieldOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeField` — erlaubt für admin (verwalten).",
        "operationId": "removeField",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fieldId": {
                    "type": "string"
                  }
                },
                "required": [
                  "fieldId"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeField"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/AddLink": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Add Add Entity Hook",
        "description": "Operation `AGAddAddEntityHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `addFormLink` — erlaubt für admin (verwalten).",
        "operationId": "addAddEntityHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "publicAccess": {
                    "type": "boolean"
                  },
                  "requiresAuthorization": {
                    "type": "boolean"
                  },
                  "formId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "formId"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Rumpf enthält die angelegte Ressource als JSON, die Adresse zusätzlich unter `_links.self.href`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addFormLink"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/ColumnTypeChange": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Update Field Type",
        "description": "Operation `AGUpdateFieldTypeOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFieldType` — erlaubt für admin (verwalten).",
        "operationId": "updateFieldType",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fieldId": {
                    "type": "string"
                  },
                  "type": {
                    "description": "Typ des Feldes. Welche Zusatzfelder neben `name` gelten, hängt vom Typ ab - siehe die einzelnen `FieldType_*`-Schemata.",
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/FieldType_createdat"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_createdby"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_enum"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_formula"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_lookup"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_reducedLookupCollectionType"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_boolean"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_currency"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_date_time"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_date"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_decimal"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_email"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_integer"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_phoneNumber"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_richText"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_string"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_uri"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_attachments"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_enumcollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_mimeEntityCollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_references"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_stringcollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_address"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_reference"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_geolocation"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_resource"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_user"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_signature"
                      }
                    ],
                    "discriminator": {
                      "propertyName": "name",
                      "mapping": {
                        "createdat": "#/components/schemas/FieldType_createdat",
                        "createdby": "#/components/schemas/FieldType_createdby",
                        "enum": "#/components/schemas/FieldType_enum",
                        "formula": "#/components/schemas/FieldType_formula",
                        "lookup": "#/components/schemas/FieldType_lookup",
                        "reducedLookupCollectionType": "#/components/schemas/FieldType_reducedLookupCollectionType",
                        "boolean": "#/components/schemas/FieldType_boolean",
                        "currency": "#/components/schemas/FieldType_currency",
                        "date-time": "#/components/schemas/FieldType_date_time",
                        "date": "#/components/schemas/FieldType_date",
                        "decimal": "#/components/schemas/FieldType_decimal",
                        "email": "#/components/schemas/FieldType_email",
                        "integer": "#/components/schemas/FieldType_integer",
                        "phoneNumber": "#/components/schemas/FieldType_phoneNumber",
                        "richText": "#/components/schemas/FieldType_richText",
                        "string": "#/components/schemas/FieldType_string",
                        "uri": "#/components/schemas/FieldType_uri",
                        "attachments": "#/components/schemas/FieldType_attachments",
                        "enumcollection": "#/components/schemas/FieldType_enumcollection",
                        "mimeEntityCollection": "#/components/schemas/FieldType_mimeEntityCollection",
                        "references": "#/components/schemas/FieldType_references",
                        "stringcollection": "#/components/schemas/FieldType_stringcollection",
                        "address": "#/components/schemas/FieldType_address",
                        "reference": "#/components/schemas/FieldType_reference",
                        "geolocation": "#/components/schemas/FieldType_geolocation",
                        "resource": "#/components/schemas/FieldType_resource",
                        "user": "#/components/schemas/FieldType_user",
                        "signature": "#/components/schemas/FieldType_signature"
                      }
                    }
                  }
                },
                "required": [
                  "fieldId",
                  "type"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFieldType"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/schema": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Grids"
        ],
        "summary": "Read Schema",
        "description": "Operation `AGReadSchemaOperation` im Backend.\n\n**Benötigte Berechtigung:** `readSchema` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readSchema",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-Schema der Einträge dieses Grids."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readSchema"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/Rename": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Rename Grid",
        "description": "Operation `AGRenameGridOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateGrid` — erlaubt für admin (verwalten).",
        "operationId": "renameGrid",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/csv": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Grids"
        ],
        "summary": "Export Grid View As CSV",
        "description": "Operation `AGExportGridViewAsCSVOperation` im Backend.\n\n**Benötigte Berechtigung:** im Code ist keine Permission-Klasse hinterlegt; die Zugriffsprüfung erfolgt an anderer Stelle (siehe Beschreibung der Ressource).\n\nDie Operation verändert keine Daten.",
        "operationId": "exportGridViewAsCSV",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Die Daten als CSV-Datei. Die Antwort trägt `Content-Disposition: attachment` und den Content-Type `application/octet-stream`.",
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [],
        "x-apptivegrid-permissions": [],
        "x-apptivegrid-roles": []
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/ColumnAdd": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Add Field",
        "description": "Operation `AGAddFieldOperation` im Backend.\n\n**Benötigte Berechtigung:** `addField` — erlaubt für admin (verwalten).\n\nBenötigt die Grid-Adresse aus `addGrid`. Der Feldtyp (`type.name`) bestimmt, welche Werte spätere Einträge (`addEntity`) für dieses Feld annehmen dürfen - siehe `FieldValue_<typeName>` in den Schema-Komponenten.",
        "operationId": "addField",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "position": {
                    "type": "number"
                  },
                  "key": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "type": {
                    "description": "Typ des Feldes. Welche Zusatzfelder neben `name` gelten, hängt vom Typ ab - siehe die einzelnen `FieldType_*`-Schemata.",
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/FieldType_createdat"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_createdby"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_enum"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_formula"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_lookup"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_reducedLookupCollectionType"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_boolean"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_currency"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_date_time"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_date"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_decimal"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_email"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_integer"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_phoneNumber"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_richText"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_string"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_uri"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_attachments"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_enumcollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_mimeEntityCollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_references"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_stringcollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_address"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_reference"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_geolocation"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_resource"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_user"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_signature"
                      }
                    ],
                    "discriminator": {
                      "propertyName": "name",
                      "mapping": {
                        "createdat": "#/components/schemas/FieldType_createdat",
                        "createdby": "#/components/schemas/FieldType_createdby",
                        "enum": "#/components/schemas/FieldType_enum",
                        "formula": "#/components/schemas/FieldType_formula",
                        "lookup": "#/components/schemas/FieldType_lookup",
                        "reducedLookupCollectionType": "#/components/schemas/FieldType_reducedLookupCollectionType",
                        "boolean": "#/components/schemas/FieldType_boolean",
                        "currency": "#/components/schemas/FieldType_currency",
                        "date-time": "#/components/schemas/FieldType_date_time",
                        "date": "#/components/schemas/FieldType_date",
                        "decimal": "#/components/schemas/FieldType_decimal",
                        "email": "#/components/schemas/FieldType_email",
                        "integer": "#/components/schemas/FieldType_integer",
                        "phoneNumber": "#/components/schemas/FieldType_phoneNumber",
                        "richText": "#/components/schemas/FieldType_richText",
                        "string": "#/components/schemas/FieldType_string",
                        "uri": "#/components/schemas/FieldType_uri",
                        "attachments": "#/components/schemas/FieldType_attachments",
                        "enumcollection": "#/components/schemas/FieldType_enumcollection",
                        "mimeEntityCollection": "#/components/schemas/FieldType_mimeEntityCollection",
                        "references": "#/components/schemas/FieldType_references",
                        "stringcollection": "#/components/schemas/FieldType_stringcollection",
                        "address": "#/components/schemas/FieldType_address",
                        "reference": "#/components/schemas/FieldType_reference",
                        "geolocation": "#/components/schemas/FieldType_geolocation",
                        "resource": "#/components/schemas/FieldType_resource",
                        "user": "#/components/schemas/FieldType_user",
                        "signature": "#/components/schemas/FieldType_signature"
                      }
                    }
                  }
                },
                "required": [
                  "type"
                ]
              },
              "examples": {
                "string": {
                  "summary": "String-Feld \"Kennzeichen\"",
                  "value": {
                    "name": "Kennzeichen",
                    "key": "kennzeichen",
                    "type": {
                      "name": "string"
                    }
                  }
                },
                "integer": {
                  "summary": "Integer-Feld \"Kilometerstand\"",
                  "value": {
                    "name": "Kilometerstand",
                    "key": "kilometerstand",
                    "type": {
                      "name": "integer"
                    }
                  }
                },
                "enum": {
                  "summary": "Enum-Feld \"Status\"",
                  "value": {
                    "name": "Status",
                    "key": "status",
                    "type": {
                      "name": "enum",
                      "options": [
                        "Verfügbar",
                        "In Nutzung",
                        "Werkstatt"
                      ]
                    }
                  }
                },
                "reference": {
                  "summary": "Reference-Feld \"Fahrer\" auf ein anderes Grid",
                  "value": {
                    "name": "Fahrer",
                    "key": "fahrer",
                    "type": {
                      "name": "reference",
                      "gridUri": "/api/users/64…/spaces/64…/grids/64…"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addField"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/ColumnKeyChange": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Update Field Key",
        "description": "Operation `AGUpdateFieldKeyOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateGrid` — erlaubt für admin (verwalten).",
        "operationId": "updateFieldKey",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fieldId": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  }
                },
                "required": [
                  "fieldId",
                  "key"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/updates": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Grids"
        ],
        "summary": "List Grid Updates",
        "description": "Operation `AGListGridUpdatesOperation` im Backend.\n\n**Benötigte Berechtigung:** `listGridUpdates` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listGridUpdates",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "since",
            "in": "query",
            "required": true,
            "description": "Der Zeitpunkt der letzten Änderung.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listGridUpdates"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/viewPositionChange": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Change View Position",
        "description": "Operation `AGChangeViewPositionOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateGrid` — erlaubt für admin (verwalten).",
        "operationId": "changeViewPosition",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "position": {
                    "type": "integer"
                  },
                  "uri": {
                    "type": "string"
                  }
                },
                "required": [
                  "position",
                  "uri"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/extractToGrid": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Extract Fields",
        "description": "Operation `AGExtractFieldsOperation` im Backend.\n\n**Benötigte Berechtigung:** `addGrid` — erlaubt für admin (verwalten); `updateGrid` — erlaubt für admin (verwalten).",
        "operationId": "extractFields",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "gridName": {
                    "type": "string"
                  },
                  "fieldIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "gridName",
                  "fieldIds"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addGrid",
          "updateGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/EditLink": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Add Edit Entity Hook",
        "description": "Operation `AGAddEditEntityHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `addFormLink` — erlaubt für admin (verwalten).",
        "operationId": "addEditEntityHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "publicAccess": {
                    "type": "boolean"
                  },
                  "requiresAuthorization": {
                    "type": "boolean"
                  },
                  "formId": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "formId"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Rumpf enthält die angelegte Ressource als JSON, die Adresse zusätzlich unter `_links.self.href`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addFormLink"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/virtualgrids": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Ansichten"
        ],
        "summary": "List Virtual Grids",
        "description": "Operation `AGListVirtualGridsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listGridViews` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listVirtualGrids",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listGridViews"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "post": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Add Virtual Grid",
        "description": "Operation `AGAddVirtualGridOperation` im Backend.\n\n**Benötigte Berechtigung:** `addGridView` — erlaubt für admin (verwalten).",
        "operationId": "addVirtualGrid",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fields": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "filter": {},
                  "sorting": {},
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "fields",
                  "filter"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addGridView"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/ColumnRename": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Grids"
        ],
        "summary": "Rename Field",
        "description": "Operation `AGRenameFieldOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFieldType` — erlaubt für admin (verwalten).",
        "operationId": "renameField",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "newName": {
                    "type": "string"
                  },
                  "oldName": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFieldType"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/query": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Grids"
        ],
        "summary": "Query",
        "description": "Operation `AGQueryOperation` im Backend.\n\n**Benötigte Berechtigung:** `readField` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "query",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 50
            }
          },
          {
            "name": "layout",
            "in": "query",
            "required": false,
            "description": "Das Layout der zurückgegebenen Einträge. Ohne Angabe gilt `field`.",
            "schema": {
              "type": "string",
              "enum": [
                "field",
                "indexed",
                "keyAndField",
                "key",
                "property"
              ]
            }
          },
          {
            "name": "matching",
            "in": "query",
            "required": false,
            "description": "Ein Wert, gegen den geprüft wird.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "viewId",
            "in": "query",
            "required": false,
            "description": "Die externe Kennung der Ansicht, auf die sich die Anfrage bezieht. Kann leer bleiben, wenn direkt auf dem Grid gesucht wird.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readField"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/sviews": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Ansichten"
        ],
        "summary": "List Views",
        "description": "Operation `AGListViewsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listViews` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "listViews",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          },
          {
            "name": "nested",
            "in": "query",
            "required": false,
            "description": "Bei `true` werden auch Ansichten untergeordneter Virtual Grids aufgelistet. Vorgabe `false`.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listViews"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      },
      "post": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Add View",
        "description": "Operation `AGAddViewOperation` im Backend.\n\n**Benötigte Berechtigung:** `addView` — erlaubt für admin (verwalten).\n\nBenötigt die Grid-Adresse aus `addGrid`. `properties`/`slotProperties` sind im Backend nicht validiert - siehe Hinweis bei diesen Feldern.",
        "operationId": "addView",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "properties": {
                    "description": "Form je Ansichtstyp ist im Backend nicht als Schema hinterlegt - der Schreibpfad (`AGAbstractView>>viewPropertiesUpdate:`) übernimmt jeden Schlüssel ungeprüft in einen generischen Property-Speicher, ohne Validierung gegen einen bekannten Ansichtstyp. Nicht aus dem Code ableitbar, deshalb hier absichtlich offen (x-unverified), nicht geraten.",
                    "x-unverified": true
                  },
                  "slotProperties": {
                    "description": "Form je Ansichtstyp ist im Backend nicht als Schema hinterlegt - der Schreibpfad (`AGAbstractView>>viewPropertiesUpdate:`) übernimmt jeden Schlüssel ungeprüft in einen generischen Property-Speicher, ohne Validierung gegen einen bekannten Ansichtstyp. Nicht aus dem Code ableitbar, deshalb hier absichtlich offen (x-unverified), nicht geraten.",
                    "x-unverified": true
                  },
                  "type": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{sview}`) wird anschließend u. a. gebraucht bei: `addGridViewHook`, `patchView`, `readView`, `removeView`, `listGridViewExternalHooks`, `readViewSchema`, `shareView`, `listViewShares`, `removeViewShare`, `readViewShare`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addView"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/sviews/{sview}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "sview",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGView). Entsteht bei `addView`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Patch View",
        "description": "Operation `AGPatchViewOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateView` — erlaubt für admin (verwalten), writer (schreiben).",
        "operationId": "patchView",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "properties": {
                    "description": "Form je Ansichtstyp ist im Backend nicht als Schema hinterlegt - der Schreibpfad (`AGAbstractView>>viewPropertiesUpdate:`) übernimmt jeden Schlüssel ungeprüft in einen generischen Property-Speicher, ohne Validierung gegen einen bekannten Ansichtstyp. Nicht aus dem Code ableitbar, deshalb hier absichtlich offen (x-unverified), nicht geraten.",
                    "x-unverified": true
                  },
                  "slotProperties": {
                    "description": "Form je Ansichtstyp ist im Backend nicht als Schema hinterlegt - der Schreibpfad (`AGAbstractView>>viewPropertiesUpdate:`) übernimmt jeden Schlüssel ungeprüft in einen generischen Property-Speicher, ohne Validierung gegen einen bekannten Ansichtstyp. Nicht aus dem Code ableitbar, deshalb hier absichtlich offen (x-unverified), nicht geraten.",
                    "x-unverified": true
                  },
                  "type": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateView"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer"
        ]
      },
      "get": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Read View",
        "description": "Operation `AGReadViewOperation` im Backend.\n\n**Benötigte Berechtigung:** `readView` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "readView",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readView"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      },
      "delete": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Remove View",
        "description": "Operation `AGRemoveViewOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeView` — erlaubt für admin (verwalten).",
        "operationId": "removeView",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeView"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/sviews/{sview}/externalHooks": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "sview",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGView). Entsteht bei `addView`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Add Grid View Hook",
        "description": "Operation `AGAddGridViewHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `shareView` — erlaubt für admin (verwalten).",
        "operationId": "addGridViewHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "reader",
                      "writer",
                      "admin"
                    ]
                  }
                },
                "required": [
                  "role"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Rumpf enthält die angelegte Ressource als JSON, die Adresse zusätzlich unter `_links.self.href`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "shareView"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Ansichten"
        ],
        "summary": "List Grid View External Hooks",
        "description": "Operation `AGListGridViewExternalHooksOperation` im Backend.\n\n**Benötigte Berechtigung:** `listGridViewExternalHooks` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listGridViewExternalHooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listGridViewExternalHooks"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/sviews/{sview}/schema": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "sview",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGView). Entsteht bei `addView`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Read View Schema",
        "description": "Operation `AGReadViewSchemaOperation` im Backend.\n\n**Benötigte Berechtigung:** `readView` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "readViewSchema",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readView"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/sviews/{sview}/shares": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "sview",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGView). Entsteht bei `addView`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Share View",
        "description": "Operation `AGShareViewOperation` im Backend.\n\n**Benötigte Berechtigung:** `shareView` — erlaubt für admin (verwalten).",
        "operationId": "shareView",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "role": {
                    "type": "string"
                  },
                  "identity": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{share}`) wird anschließend gebraucht bei: `removeSpaceShare`, `readSpaceShare`, `updateSpaceShare`, `removeViewShare`, `readViewShare`, `updateViewShare`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "shareView"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Ansichten"
        ],
        "summary": "List View Shares",
        "description": "Operation `AGListViewSharesOperation` im Backend.\n\n**Benötigte Berechtigung:** `listViewShares` — erlaubt für admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listViewShares",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listViewShares"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/sviews/{sview}/shares/{share}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "sview",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGView). Entsteht bei `addView`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "share",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGViewShare). Entsteht bei `shareSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Remove View Share",
        "description": "Operation `AGRemoveViewShareOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeShare` — erlaubt für admin (verwalten).",
        "operationId": "removeViewShare",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeShare"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Read View Share",
        "description": "Operation `AGReadViewShareOperation` im Backend.\n\n**Benötigte Berechtigung:** `readShare` — erlaubt für admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readViewShare",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readShare"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "put": {
        "tags": [
          "Ansichten"
        ],
        "summary": "Update View Share",
        "description": "Operation `AGUpdateViewShareOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateShare` — erlaubt für admin (verwalten).",
        "operationId": "updateViewShare",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Der Rumpf wird als Rohtext gelesen (`AGHttpRawBody`) und von der Operation interpretiert; ein festes JSON-Schema ist im Code nicht hinterlegt.",
          "content": {
            "application/json": {
              "schema": {},
              "x-unverified": true
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateShare"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/forms": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Formulare"
        ],
        "summary": "Add Form",
        "description": "Operation `AGAddFormOperation` im Backend.\n\n**Benötigte Berechtigung:** `addForm` — erlaubt für admin (verwalten).\n\nBenötigt die Grid-Adresse aus `addGrid`. Welche Felder das Formular anbietet, ergibt sich aus dem Grid-Schema (`GET .../grids/{gridId}/schema`), nicht aus dieser Operation.",
        "operationId": "addForm",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "schemaObjectUri": {
                    "type": "string"
                  }
                },
                "examples": [
                  {
                    "name": "Fahrzeug erfassen",
                    "schemaObjectUri": "/api/users/64…/spaces/64…/grids/64…/schema"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{form}`) wird anschließend gebraucht bei: `removeForm`, `readForm`, `submitForm`, `updateForm`, `listFormExternalHooks`, `createS3PreSignedURL_forms_uploadUri`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addForm"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Formulare"
        ],
        "summary": "List Forms",
        "description": "Operation `AGListFormsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listForms` — erlaubt für admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listForms",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listForms"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/forms/{form}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "form",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGForm). Entsteht bei `addForm`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "tags": [
          "Formulare"
        ],
        "summary": "Remove Form",
        "description": "Operation `AGRemoveFormOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeForm` — erlaubt für admin (verwalten).",
        "operationId": "removeForm",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeForm"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Formulare"
        ],
        "summary": "Read Form",
        "description": "Operation `AGReadFormOperation` im Backend.\n\n**Benötigte Berechtigung:** `readForm` — erlaubt für admin (verwalten), writer (schreiben), reader (lesen).\n\nDie Operation verändert keine Daten.",
        "operationId": "readForm",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "uri",
            "in": "query",
            "required": false,
            "description": "Die Adresse (URI) des zu verarbeitenden Eintrags.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readForm"
        ],
        "x-apptivegrid-roles": [
          "admin",
          "writer",
          "reader"
        ]
      },
      "post": {
        "tags": [
          "Formulare"
        ],
        "summary": "Submit Form",
        "description": "Operation `AGSubmitFormOperation` im Backend.\n\n**Benötigte Berechtigung:** `addEntity` — erlaubt für creator (nur anlegen), writer (schreiben), admin (verwalten).",
        "operationId": "submitForm",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "uri",
            "in": "query",
            "required": false,
            "description": "Die Adresse (URI) des zu verarbeitenden Eintrags.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Die ausgefüllten Formularwerte. Der Rumpf wird immer im Feld-Layout gelesen (`AGSubmitFormOperation>>layout` liefert `AGFieldLayout`): Schlüssel sind die Feld-IDs des Formulars.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntityValuesField"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addEntity"
        ],
        "x-apptivegrid-roles": [
          "creator",
          "writer",
          "admin"
        ]
      },
      "put": {
        "tags": [
          "Formulare"
        ],
        "summary": "Update Form",
        "description": "Operation `AGUpdateFormOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateForm` — erlaubt für admin (verwalten).",
        "operationId": "updateForm",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Der Rumpf wird als Rohtext gelesen (`AGHttpRawBody`) und von der Operation interpretiert; ein festes JSON-Schema ist im Code nicht hinterlegt.",
          "content": {
            "application/json": {
              "schema": {},
              "x-unverified": true
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateForm"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/forms/{form}/externalHooks": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "form",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGForm). Entsteht bei `addForm`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Formulare"
        ],
        "summary": "List Form External Hooks",
        "description": "Operation `AGListFormExternalHooksOperation` im Backend.\n\n**Benötigte Berechtigung:** `listFormExternalHooks` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listFormExternalHooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listFormExternalHooks"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/forms/{form}/uploadUri": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "form",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGForm). Entsteht bei `addForm`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Formulare"
        ],
        "summary": "Create S3Pre Signed URL",
        "description": "Operation `AGCreateS3PreSignedURL` im Backend.\n\n**Benötigte Berechtigung:** im Code ist keine Permission-Klasse hinterlegt; die Zugriffsprüfung erfolgt an anderer Stelle (siehe Beschreibung der Ressource).\n\nDie Operation verändert keine Daten.",
        "operationId": "createS3PreSignedURL_forms_uploadUri",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Der Rumpf der Anfrage.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [],
        "x-apptivegrid-permissions": [],
        "x-apptivegrid-roles": []
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/entities": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Einträge"
        ],
        "summary": "List Entities",
        "description": "Operation `AGListEntitiesOperation` im Backend.\n\n**Benötigte Berechtigung:** `listEntities` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listEntities",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          },
          {
            "name": "layout",
            "in": "query",
            "required": false,
            "description": "Das Layout der zurückgegebenen Einträge. Ohne Angabe gilt `field`.",
            "schema": {
              "type": "string",
              "enum": [
                "field",
                "indexed",
                "keyAndField",
                "key",
                "property"
              ]
            }
          },
          {
            "name": "viewId",
            "in": "query",
            "required": false,
            "description": "Die externe Kennung der Ansicht.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sorting",
            "in": "query",
            "required": false,
            "description": "Die Sortierung als URL-kodiertes JSON.",
            "schema": {
              "type": "string",
              "contentMediaType": "application/json"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "required": false,
            "description": "Der Filter als URL-kodiertes JSON.",
            "schema": {
              "type": "string",
              "contentMediaType": "application/json"
            }
          },
          {
            "name": "compose",
            "in": "query",
            "required": false,
            "description": "Ob der übergebene Filter mit dem Filter der Ansicht kombiniert wird oder ihn ersetzt.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listEntities"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "post": {
        "tags": [
          "Einträge"
        ],
        "summary": "Add Entity",
        "description": "Operation `AGAddEntityOperation` im Backend.\n\n**Benötigte Berechtigung:** `addEntity` — erlaubt für creator (nur anlegen), writer (schreiben), admin (verwalten).\n\nBenötigt die Grid-Adresse aus `addGrid` und richtet sich nach dessen Schema (`GET .../grids/{gridId}/schema`) - welche Felder es gibt und welchen Typ (siehe `FieldValue_<typeName>`).",
        "operationId": "addEntity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "viewId",
            "in": "query",
            "required": false,
            "description": "Die externe Kennung der Ansicht.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "layout",
            "in": "query",
            "required": false,
            "description": "Das Layout der übermittelten Feldwerte. Ohne Angabe gilt `indexed`.",
            "schema": {
              "type": "string",
              "enum": [
                "field",
                "indexed",
                "keyAndField",
                "key",
                "property"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Feldwerte des Eintrags. Die Form richtet sich nach dem Layout aus dem Query-Parameter `layout`.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntityValues"
              },
              "examples": {
                "fuhrpark": {
                  "summary": "Fuhrpark-Beispiel: Fahrzeug im Layout `indexed` (Vorgabe beim Anlegen) - Werte in Feldreihenfolge Kennzeichen, Kilometerstand, Status, Fahrer",
                  "value": {
                    "fields": [
                      "DD-CD 1234",
                      42317,
                      "Verfügbar",
                      {
                        "uri": "/api/users/64…/spaces/64…/grids/64…/entities/64…"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{entityId}`) wird anschließend gebraucht bei: `addEditionLink`, `updateEntity`, `readEntity`, `removeEntity`, `listEntityEvents`, `partialUpdateEntity`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addEntity"
        ],
        "x-apptivegrid-roles": [
          "creator",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/entities/{entityId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "entityId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicEntity). Entsteht bei `addEntity`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "put": {
        "tags": [
          "Einträge"
        ],
        "summary": "Update Entity",
        "description": "Operation `AGUpdateEntityOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateEntity` — erlaubt für writer (schreiben), admin (verwalten).",
        "operationId": "updateEntity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "viewId",
            "in": "query",
            "required": false,
            "description": "Die externe Kennung der Ansicht.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "layout",
            "in": "query",
            "required": false,
            "description": "Das Layout der übermittelten und zurückgegebenen Feldwerte. Ohne Angabe gilt `field`.",
            "schema": {
              "type": "string",
              "enum": [
                "field",
                "indexed",
                "keyAndField",
                "key",
                "property"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Feldwerte des Eintrags. Die Form richtet sich nach dem Layout aus dem Query-Parameter `layout`.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntityValues"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateEntity"
        ],
        "x-apptivegrid-roles": [
          "writer",
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Einträge"
        ],
        "summary": "Read Entity",
        "description": "Operation `AGReadEntityOperation` im Backend.\n\n**Benötigte Berechtigung:** `readEntity` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readEntity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "viewId",
            "in": "query",
            "required": false,
            "description": "Die externe Kennung der Ansicht.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "layout",
            "in": "query",
            "required": false,
            "description": "Das Layout der zurückgegebenen Einträge. Ohne Angabe gilt `field`.",
            "schema": {
              "type": "string",
              "enum": [
                "field",
                "indexed",
                "keyAndField",
                "key",
                "property"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readEntity"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "delete": {
        "tags": [
          "Einträge"
        ],
        "summary": "Remove Entity",
        "description": "Operation `AGRemoveEntityOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeEntity` — erlaubt für writer (schreiben), admin (verwalten).",
        "operationId": "removeEntity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeEntity"
        ],
        "x-apptivegrid-roles": [
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/entities/{entityId}/events": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "entityId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicEntity). Entsteht bei `addEntity`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Einträge"
        ],
        "summary": "List Entity Events",
        "description": "Operation `AGListEntityEventsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listEvents` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listEntityEvents",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listEvents"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/entities/{entityId}/update": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "entityId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicEntity). Entsteht bei `addEntity`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Einträge"
        ],
        "summary": "Partial Update Entity",
        "description": "Operation `AGPartialUpdateEntityOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateEntity` — erlaubt für writer (schreiben), admin (verwalten).",
        "operationId": "partialUpdateEntity",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "layout",
            "in": "query",
            "required": false,
            "description": "Das Layout der übermittelten und zurückgegebenen Feldwerte. **Ohne Wirkung:** diese Operation liest den Rumpf immer im Layout `keyAndField`, unabhaengig vom uebergebenen Wert.",
            "schema": {
              "type": "string",
              "enum": [
                "field",
                "indexed",
                "keyAndField",
                "key",
                "property"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Feldwerte des Eintrags. Die Form richtet sich nach dem Layout aus dem Query-Parameter `layout`.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntityValues"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateEntity"
        ],
        "x-apptivegrid-roles": [
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/entities/{entityId}/EditLink": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "entityId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicEntity). Entsteht bei `addEntity`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Einträge"
        ],
        "summary": "Add Edition Link",
        "description": "Operation `AGAddEditionLinkOperation` im Backend.\n\n**Benötigte Berechtigung:** `addFormLink` — erlaubt für admin (verwalten).",
        "operationId": "addEditionLink",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "formId": {
                    "type": "string"
                  }
                },
                "required": [
                  "formId"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Rumpf enthält die angelegte Ressource als JSON, die Adresse zusätzlich unter `_links.self.href`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addFormLink"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/fields/{fieldId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "fieldId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicFieldSpec).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "patch": {
        "tags": [
          "Felder"
        ],
        "summary": "Patch Field",
        "description": "Operation `AGPatchFieldOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFieldType` — erlaubt für admin (verwalten).",
        "operationId": "patchField",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  },
                  "type": {
                    "description": "Typ des Feldes. Welche Zusatzfelder neben `name` gelten, hängt vom Typ ab - siehe die einzelnen `FieldType_*`-Schemata.",
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/FieldType_createdat"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_createdby"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_enum"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_formula"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_lookup"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_reducedLookupCollectionType"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_boolean"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_currency"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_date_time"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_date"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_decimal"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_email"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_integer"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_phoneNumber"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_richText"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_string"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_uri"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_attachments"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_enumcollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_mimeEntityCollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_references"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_stringcollection"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_address"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_reference"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_geolocation"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_resource"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_user"
                      },
                      {
                        "$ref": "#/components/schemas/FieldType_signature"
                      }
                    ],
                    "discriminator": {
                      "propertyName": "name",
                      "mapping": {
                        "createdat": "#/components/schemas/FieldType_createdat",
                        "createdby": "#/components/schemas/FieldType_createdby",
                        "enum": "#/components/schemas/FieldType_enum",
                        "formula": "#/components/schemas/FieldType_formula",
                        "lookup": "#/components/schemas/FieldType_lookup",
                        "reducedLookupCollectionType": "#/components/schemas/FieldType_reducedLookupCollectionType",
                        "boolean": "#/components/schemas/FieldType_boolean",
                        "currency": "#/components/schemas/FieldType_currency",
                        "date-time": "#/components/schemas/FieldType_date_time",
                        "date": "#/components/schemas/FieldType_date",
                        "decimal": "#/components/schemas/FieldType_decimal",
                        "email": "#/components/schemas/FieldType_email",
                        "integer": "#/components/schemas/FieldType_integer",
                        "phoneNumber": "#/components/schemas/FieldType_phoneNumber",
                        "richText": "#/components/schemas/FieldType_richText",
                        "string": "#/components/schemas/FieldType_string",
                        "uri": "#/components/schemas/FieldType_uri",
                        "attachments": "#/components/schemas/FieldType_attachments",
                        "enumcollection": "#/components/schemas/FieldType_enumcollection",
                        "mimeEntityCollection": "#/components/schemas/FieldType_mimeEntityCollection",
                        "references": "#/components/schemas/FieldType_references",
                        "stringcollection": "#/components/schemas/FieldType_stringcollection",
                        "address": "#/components/schemas/FieldType_address",
                        "reference": "#/components/schemas/FieldType_reference",
                        "geolocation": "#/components/schemas/FieldType_geolocation",
                        "resource": "#/components/schemas/FieldType_resource",
                        "user": "#/components/schemas/FieldType_user",
                        "signature": "#/components/schemas/FieldType_signature"
                      }
                    }
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFieldType"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Felder"
        ],
        "summary": "Read Field Spec",
        "description": "Operation `AGReadFieldSpecOperation` im Backend.\n\n**Benötigte Berechtigung:** `readField` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readFieldSpec",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readField"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/fields/{fieldId}/collaborators": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "fieldId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicFieldSpec).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Felder"
        ],
        "summary": "List Collaborators",
        "description": "Operation `AGListCollaboratorsOperation` im Backend.\n\n**Benötigte Berechtigung:** `listCollaborators` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listCollaborators",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "matching",
            "in": "query",
            "required": false,
            "description": "Ein Wert, gegen den geprüft wird.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listCollaborators"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/fields/{fieldId}/currencies": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "fieldId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicFieldSpec).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Felder"
        ],
        "summary": "List Currencies",
        "description": "Operation `AGListCurrenciesOperation` im Backend.\n\n**Benötigte Berechtigung:** `listCollaborators` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listCurrencies",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listCollaborators"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/fields/{fieldId}/extractToGrid": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "fieldId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicFieldSpec).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Felder"
        ],
        "summary": "Extract To Grid",
        "description": "Operation `AGExtractToGridOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateFieldType` — erlaubt für admin (verwalten); `addGrid` — erlaubt für admin (verwalten).",
        "operationId": "extractToGrid",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "createVirtualGrid",
            "in": "query",
            "required": false,
            "description": "Bei `true` bezieht sich die Referenz auf ein Virtual Grid.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateFieldType",
          "addGrid"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/grids/{gridId}/fields/{fieldId}/query": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "gridId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGAbstractGrid). Entsteht bei `addGrid`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "fieldId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicFieldSpec).",
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "tags": [
          "Felder"
        ],
        "summary": "Query Field",
        "description": "Operation `AGQueryFieldOperation` im Backend.\n\n**Benötigte Berechtigung:** `readField` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "queryField",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 50
            }
          },
          {
            "name": "layout",
            "in": "query",
            "required": false,
            "description": "Das Layout der zurückgegebenen Einträge. Ohne Angabe gilt `field`.",
            "schema": {
              "type": "string",
              "enum": [
                "field",
                "indexed",
                "keyAndField",
                "key",
                "property"
              ]
            }
          },
          {
            "name": "matching",
            "in": "query",
            "required": false,
            "description": "Ein Wert, gegen den geprüft wird.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "viewId",
            "in": "query",
            "required": false,
            "description": "Die externe Kennung der Ansicht, auf die sich die Anfrage bezieht. Kann leer bleiben, wenn direkt auf dem Grid gesucht wird.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readField"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/blocks": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Add Block",
        "description": "Operation `AGAddBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `addBlock` — erlaubt für admin (verwalten).\n\nBenötigt die Space-Adresse aus `addSpace`. Die Rumpfform hängt vom Blocktyp ab - siehe `Block_<typ>` in den Schema-Komponenten.",
        "operationId": "addBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Ein Block. Die Form hängt vom Typ ab (`type`); hergeleitet aus den Beispielen des Backends (`GET /api/blocks`), nicht aus einem deklarierten Schema.",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Block_paragraph"
                  },
                  {
                    "$ref": "#/components/schemas/Block_resourceBlock"
                  },
                  {
                    "$ref": "#/components/schemas/Block_html"
                  },
                  {
                    "$ref": "#/components/schemas/Block_page"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entityList"
                  },
                  {
                    "$ref": "#/components/schemas/Block_layout"
                  },
                  {
                    "$ref": "#/components/schemas/Block_IFrame"
                  },
                  {
                    "$ref": "#/components/schemas/Block_header"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entity"
                  },
                  {
                    "$ref": "#/components/schemas/Block_image"
                  }
                ],
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "paragraph": "#/components/schemas/Block_paragraph",
                    "resourceBlock": "#/components/schemas/Block_resourceBlock",
                    "html": "#/components/schemas/Block_html",
                    "page": "#/components/schemas/Block_page",
                    "entityList": "#/components/schemas/Block_entityList",
                    "layout": "#/components/schemas/Block_layout",
                    "IFrame": "#/components/schemas/Block_IFrame",
                    "header": "#/components/schemas/Block_header",
                    "entity": "#/components/schemas/Block_entity",
                    "image": "#/components/schemas/Block_image"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{blockId}`) wird anschließend u. a. gebraucht bei: `addBlockHook`, `addBlockChild`, `removeBlock`, `patchBlock`, `readBlock`, `updateBlock`, `listBlockExternalHooks`, `createS3PreSignedURL_blocks_uploadUri`, `removeBlock_blocks_children`, `patchBlock_blocks_children`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "addBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "List Blocks",
        "description": "Operation `AGListBlocksOperation` im Backend.\n\n**Benötigte Berechtigung:** `listSpaceExternalHooks` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listBlocks",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listSpaceExternalHooks"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/blocks/{blockId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "blockId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicBlock). Entsteht bei `addBlock`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Remove Block",
        "description": "Operation `AGRemoveBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeBlock` — erlaubt für admin (verwalten).",
        "operationId": "removeBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "patch": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Patch Block",
        "description": "Operation `AGPatchBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateBlock` — erlaubt für admin (verwalten).",
        "operationId": "patchBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Ein Block. Die Form hängt vom Typ ab (`type`); hergeleitet aus den Beispielen des Backends (`GET /api/blocks`), nicht aus einem deklarierten Schema.",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Block_paragraph"
                  },
                  {
                    "$ref": "#/components/schemas/Block_resourceBlock"
                  },
                  {
                    "$ref": "#/components/schemas/Block_html"
                  },
                  {
                    "$ref": "#/components/schemas/Block_page"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entityList"
                  },
                  {
                    "$ref": "#/components/schemas/Block_layout"
                  },
                  {
                    "$ref": "#/components/schemas/Block_IFrame"
                  },
                  {
                    "$ref": "#/components/schemas/Block_header"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entity"
                  },
                  {
                    "$ref": "#/components/schemas/Block_image"
                  }
                ],
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "paragraph": "#/components/schemas/Block_paragraph",
                    "resourceBlock": "#/components/schemas/Block_resourceBlock",
                    "html": "#/components/schemas/Block_html",
                    "page": "#/components/schemas/Block_page",
                    "entityList": "#/components/schemas/Block_entityList",
                    "layout": "#/components/schemas/Block_layout",
                    "IFrame": "#/components/schemas/Block_IFrame",
                    "header": "#/components/schemas/Block_header",
                    "entity": "#/components/schemas/Block_entity",
                    "image": "#/components/schemas/Block_image"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Read Block",
        "description": "Operation `AGReadBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `readBlock` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readBlock"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "put": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Update Block",
        "description": "Operation `AGUpdateBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateBlock` — erlaubt für admin (verwalten).",
        "operationId": "updateBlock",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Ein Block. Die Form hängt vom Typ ab (`type`); hergeleitet aus den Beispielen des Backends (`GET /api/blocks`), nicht aus einem deklarierten Schema.",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Block_paragraph"
                  },
                  {
                    "$ref": "#/components/schemas/Block_resourceBlock"
                  },
                  {
                    "$ref": "#/components/schemas/Block_html"
                  },
                  {
                    "$ref": "#/components/schemas/Block_page"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entityList"
                  },
                  {
                    "$ref": "#/components/schemas/Block_layout"
                  },
                  {
                    "$ref": "#/components/schemas/Block_IFrame"
                  },
                  {
                    "$ref": "#/components/schemas/Block_header"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entity"
                  },
                  {
                    "$ref": "#/components/schemas/Block_image"
                  }
                ],
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "paragraph": "#/components/schemas/Block_paragraph",
                    "resourceBlock": "#/components/schemas/Block_resourceBlock",
                    "html": "#/components/schemas/Block_html",
                    "page": "#/components/schemas/Block_page",
                    "entityList": "#/components/schemas/Block_entityList",
                    "layout": "#/components/schemas/Block_layout",
                    "IFrame": "#/components/schemas/Block_IFrame",
                    "header": "#/components/schemas/Block_header",
                    "entity": "#/components/schemas/Block_entity",
                    "image": "#/components/schemas/Block_image"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/blocks/{blockId}/externalHooks": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "blockId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicBlock). Entsteht bei `addBlock`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Add Block Hook",
        "description": "Operation `AGAddBlockHookOperation` im Backend.\n\n**Benötigte Berechtigung:** `shareBlock` — erlaubt für admin (verwalten).",
        "operationId": "addBlockHook",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "reader",
                      "writer",
                      "admin"
                    ]
                  }
                },
                "required": [
                  "role"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Rumpf enthält die angelegte Ressource als JSON, die Adresse zusätzlich unter `_links.self.href`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "shareBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "List Block External Hooks",
        "description": "Operation `AGListBlockExternalHooksOperation` im Backend.\n\n**Benötigte Berechtigung:** `listGridViewExternalHooks` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "listBlockExternalHooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "pageIndex",
            "in": "query",
            "required": false,
            "description": "Der angefragte Seitenindex.",
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Die Größe einer Seite.",
            "schema": {
              "type": "integer",
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "listGridViewExternalHooks"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/blocks/{blockId}/uploadUri": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "blockId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicBlock). Entsteht bei `addBlock`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Create S3Pre Signed URL",
        "description": "Operation `AGCreateS3PreSignedURL` im Backend.\n\n**Benötigte Berechtigung:** im Code ist keine Permission-Klasse hinterlegt; die Zugriffsprüfung erfolgt an anderer Stelle (siehe Beschreibung der Ressource).\n\nDie Operation verändert keine Daten.",
        "operationId": "createS3PreSignedURL_blocks_uploadUri",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Der Rumpf der Anfrage.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "security": [],
        "x-apptivegrid-permissions": [],
        "x-apptivegrid-roles": []
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/blocks/{blockId}/children": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "blockId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicBlock). Entsteht bei `addBlock`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Add Block Child",
        "description": "Operation `AGAddBlockChildOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateBlock` — erlaubt für admin (verwalten).",
        "operationId": "addBlockChild",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Ein Block. Die Form hängt vom Typ ab (`type`); hergeleitet aus den Beispielen des Backends (`GET /api/blocks`), nicht aus einem deklarierten Schema.",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Block_paragraph"
                  },
                  {
                    "$ref": "#/components/schemas/Block_resourceBlock"
                  },
                  {
                    "$ref": "#/components/schemas/Block_html"
                  },
                  {
                    "$ref": "#/components/schemas/Block_page"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entityList"
                  },
                  {
                    "$ref": "#/components/schemas/Block_layout"
                  },
                  {
                    "$ref": "#/components/schemas/Block_IFrame"
                  },
                  {
                    "$ref": "#/components/schemas/Block_header"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entity"
                  },
                  {
                    "$ref": "#/components/schemas/Block_image"
                  }
                ],
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "paragraph": "#/components/schemas/Block_paragraph",
                    "resourceBlock": "#/components/schemas/Block_resourceBlock",
                    "html": "#/components/schemas/Block_html",
                    "page": "#/components/schemas/Block_page",
                    "entityList": "#/components/schemas/Block_entityList",
                    "layout": "#/components/schemas/Block_layout",
                    "IFrame": "#/components/schemas/Block_IFrame",
                    "header": "#/components/schemas/Block_header",
                    "entity": "#/components/schemas/Block_entity",
                    "image": "#/components/schemas/Block_image"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Angelegt. Der Header `Location` enthält den Pfad der neuen Ressource; der Rumpf ist `text/plain` und lautet `Created <pfad>`. Diese Adresse (als `{blockChildId}`) wird anschließend gebraucht bei: `removeBlock_blocks_children`, `patchBlock_blocks_children`, `readBlockChild`, `updateBlock_blocks_children`.",
            "headers": {
              "Location": {
                "description": "Pfad der angelegten Ressource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    },
    "/api/users/{userId}/spaces/{spaceId}/blocks/{blockId}/children/{blockChildId}": {
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGUser).",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "spaceId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicSpace). Entsteht bei `addSpace`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "blockId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGBasicBlock). Entsteht bei `addBlock`.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "blockChildId",
          "in": "path",
          "required": true,
          "description": "Kennung der Ressource (AGEntityItemBlock). Entsteht bei `addBlockChild`.",
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Remove Block",
        "description": "Operation `AGRemoveBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `removeBlock` — erlaubt für admin (verwalten).",
        "operationId": "removeBlock_blocks_children",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "removeBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "patch": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Patch Block",
        "description": "Operation `AGPatchBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateBlock` — erlaubt für admin (verwalten).",
        "operationId": "patchBlock_blocks_children",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Ein Block. Die Form hängt vom Typ ab (`type`); hergeleitet aus den Beispielen des Backends (`GET /api/blocks`), nicht aus einem deklarierten Schema.",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Block_paragraph"
                  },
                  {
                    "$ref": "#/components/schemas/Block_resourceBlock"
                  },
                  {
                    "$ref": "#/components/schemas/Block_html"
                  },
                  {
                    "$ref": "#/components/schemas/Block_page"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entityList"
                  },
                  {
                    "$ref": "#/components/schemas/Block_layout"
                  },
                  {
                    "$ref": "#/components/schemas/Block_IFrame"
                  },
                  {
                    "$ref": "#/components/schemas/Block_header"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entity"
                  },
                  {
                    "$ref": "#/components/schemas/Block_image"
                  }
                ],
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "paragraph": "#/components/schemas/Block_paragraph",
                    "resourceBlock": "#/components/schemas/Block_resourceBlock",
                    "html": "#/components/schemas/Block_html",
                    "page": "#/components/schemas/Block_page",
                    "entityList": "#/components/schemas/Block_entityList",
                    "layout": "#/components/schemas/Block_layout",
                    "IFrame": "#/components/schemas/Block_IFrame",
                    "header": "#/components/schemas/Block_header",
                    "entity": "#/components/schemas/Block_entity",
                    "image": "#/components/schemas/Block_image"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      },
      "get": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Read Block Child",
        "description": "Operation `AGReadBlockChildOperation` im Backend.\n\n**Benötigte Berechtigung:** `readBlock` — erlaubt für reader (lesen), writer (schreiben), admin (verwalten).\n\nDie Operation verändert keine Daten.",
        "operationId": "readBlockChild",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HalObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "readBlock"
        ],
        "x-apptivegrid-roles": [
          "reader",
          "writer",
          "admin"
        ]
      },
      "put": {
        "tags": [
          "Seiten und Blöcke"
        ],
        "summary": "Update Block",
        "description": "Operation `AGUpdateBlockOperation` im Backend.\n\n**Benötigte Berechtigung:** `updateBlock` — erlaubt für admin (verwalten).",
        "operationId": "updateBlock_blocks_children",
        "parameters": [
          {
            "$ref": "#/components/parameters/AcceptVersion"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Ein Block. Die Form hängt vom Typ ab (`type`); hergeleitet aus den Beispielen des Backends (`GET /api/blocks`), nicht aus einem deklarierten Schema.",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Block_paragraph"
                  },
                  {
                    "$ref": "#/components/schemas/Block_resourceBlock"
                  },
                  {
                    "$ref": "#/components/schemas/Block_html"
                  },
                  {
                    "$ref": "#/components/schemas/Block_page"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entityList"
                  },
                  {
                    "$ref": "#/components/schemas/Block_layout"
                  },
                  {
                    "$ref": "#/components/schemas/Block_IFrame"
                  },
                  {
                    "$ref": "#/components/schemas/Block_header"
                  },
                  {
                    "$ref": "#/components/schemas/Block_entity"
                  },
                  {
                    "$ref": "#/components/schemas/Block_image"
                  }
                ],
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "paragraph": "#/components/schemas/Block_paragraph",
                    "resourceBlock": "#/components/schemas/Block_resourceBlock",
                    "html": "#/components/schemas/Block_html",
                    "page": "#/components/schemas/Block_page",
                    "entityList": "#/components/schemas/Block_entityList",
                    "layout": "#/components/schemas/Block_layout",
                    "IFrame": "#/components/schemas/Block_IFrame",
                    "header": "#/components/schemas/Block_header",
                    "entity": "#/components/schemas/Block_entity",
                    "image": "#/components/schemas/Block_image"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Erfolg.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "x-apptivegrid-permissions": [
          "updateBlock"
        ],
        "x-apptivegrid-roles": [
          "admin"
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "http",
        "scheme": "basic",
        "description": "API-Schlüssel. Benutzername ist der Schlüssel, Passwort das Geheimnis (`AGBasicApiKeyAuthorizer`). Beide entstehen bei `POST /api/users/{userId}/accessKeys`."
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Zugriffstoken aus der Anmeldung (`AGJWTAuthorizer`)."
      }
    },
    "parameters": {
      "AcceptVersion": {
        "name": "Accept",
        "in": "header",
        "required": false,
        "description": "Wählt Darstellung und Version aus, z. B. `application/vnd.apptivegrid.hal;version=2`. Ohne Angabe antwortet das Backend mit der Standarddarstellung der Ressource. Die Antwort selbst hat immer den Content-Type `application/json`.",
        "schema": {
          "type": "string",
          "examples": [
            "application/vnd.apptivegrid.hal;version=2"
          ]
        }
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "description": "Fehler aus dem Ausnahme-Handler (HOPJsonResponseFormatter).",
        "properties": {
          "code": {
            "type": "integer",
            "description": "HTTP-Statuscode."
          },
          "type": {
            "type": "string",
            "description": "Name der auslösenden Ausnahmeklasse."
          },
          "message": {
            "description": "Meldungstext der Ausnahme."
          }
        }
      },
      "OperationError": {
        "type": "object",
        "description": "Fehler aus einer Operation (AGHTTPError). Wird bei Validierungs- und Berechtigungsfehlern innerhalb eines Aufrufs geschrieben.",
        "properties": {
          "error": {
            "type": "string",
            "description": "Kurzbezeichnung des Fehlers, z. B. `constraints error`."
          },
          "description": {
            "type": "string",
            "description": "Meldungstext."
          }
        }
      },
      "Links": {
        "type": "object",
        "description": "Erlaubte Folgeoperationen. Nur Operationen, die die aufrufende Identität auf dieser Ressource ausführen darf, erscheinen hier.",
        "additionalProperties": {
          "type": "object",
          "properties": {
            "href": {
              "type": "string",
              "description": "Pfad der Operation."
            },
            "method": {
              "type": "string",
              "description": "HTTP-Methode."
            }
          }
        }
      },
      "HalObject": {
        "type": "object",
        "description": "Ressourcendarstellung. Neben den Feldern der jeweiligen Ressource immer `_representation`, `_links` und – sofern die Ressource Untersammlungen einbettet – `_embedded`.",
        "properties": {
          "_representation": {
            "type": "string",
            "enum": [
              "full",
              "summary"
            ]
          },
          "_links": {
            "$ref": "#/components/schemas/Links"
          },
          "_embedded": {
            "type": "object"
          }
        },
        "additionalProperties": true
      },
      "EntityValuesField": {
        "type": "object",
        "description": "Feldwerte im Layout `field`: je Feld ein Schlüssel mit der Feld-ID. Die gültigen Schlüssel und Werttypen eines Grids stehen unter `GET /api/users/{userId}/spaces/{spaceId}/grids/{gridId}/schema`.",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Kennung des Eintrags (nur beim Lesen gesetzt)."
          }
        },
        "additionalProperties": true
      },
      "EntityValuesIndexed": {
        "type": "object",
        "description": "Feldwerte im Layout `indexed`: ein Array `fields` mit genau so vielen Werten wie das Grid Felder hat, in der Reihenfolge des Schemas.",
        "properties": {
          "_id": {
            "type": "string"
          },
          "fields": {
            "type": "array",
            "description": "Werte in Feldreihenfolge; fehlende Werte als `null`."
          }
        },
        "required": [
          "fields"
        ]
      },
      "EntityValues": {
        "description": "Feldwerte eines Eintrags. Welche Form gilt, bestimmt der Query-Parameter `layout`: `indexed` (Vorgabe beim Anlegen), `field` (Vorgabe beim Lesen), `key`, `keyAndField` oder `property`. Die Schlüssel sind je nach Layout Feld-ID, Feldschlüssel oder Feldname und damit vom Schema des Grids abhängig. Die Form des einzelnen Werts richtet sich nach dem Feldtyp - siehe `FieldValue_<typeName>` in den Schema-Komponenten, z. B. `FieldValue_date` oder `FieldValue_reference`.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/EntityValuesIndexed"
          },
          {
            "$ref": "#/components/schemas/EntityValuesField"
          }
        ]
      },
      "Collection": {
        "type": "object",
        "description": "Seitenweise Sammlung (AGCollectionPresenter).",
        "properties": {
          "page": {
            "type": "integer",
            "description": "Angeforderte Seite, 1-basiert."
          },
          "pageSize": {
            "type": "integer",
            "description": "Angeforderte Seitengröße."
          },
          "size": {
            "type": "integer",
            "description": "Anzahl der Einträge auf dieser Seite."
          },
          "numberOfItems": {
            "type": "integer",
            "description": "Gesamtzahl der Einträge."
          },
          "numberOfPages": {
            "type": "integer",
            "description": "Anzahl der Seiten."
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HalObject"
            }
          }
        }
      },
      "NodeType_end": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `end` (Backend-Klasse `FBEndEvent`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_start": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `start` (Backend-Klasse `FBStartEvent`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_addEntity": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `addEntity` (Backend-Klasse `AGAddEntityTask`).",
        "properties": {
          "grid": {
            "type": "object",
            "properties": {
              "href": {
                "type": "string"
              }
            },
            "required": [
              "href"
            ],
            "description": "Feldtyp `resource`."
          }
        },
        "examples": [
          {
            "grid": {
              "href": "text"
            }
          }
        ]
      },
      "NodeType_editLink": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `editLink` (Backend-Klasse `AGCreateEditLinkTask`).",
        "properties": {
          "form": {
            "type": "object",
            "properties": {
              "href": {
                "type": "string"
              }
            },
            "required": [
              "href"
            ],
            "description": "Feldtyp `resource`."
          },
          "entityId": {
            "type": "string",
            "description": "Feldtyp `string`."
          }
        },
        "examples": [
          {
            "form": {
              "href": "text"
            },
            "entityId": "text"
          }
        ]
      },
      "NodeType_flowInstanceLink": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `flowInstanceLink` (Backend-Klasse `AGCreateFlowInstanceLinkTask`).",
        "properties": {
          "node": {
            "type": "object",
            "properties": {
              "href": {
                "type": "string"
              }
            },
            "required": [
              "href"
            ],
            "description": "Feldtyp `resource`."
          }
        },
        "examples": [
          {
            "node": {
              "href": "text"
            }
          }
        ]
      },
      "NodeType_flowForm": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `flowForm` (Backend-Klasse `AGFlowFormTask`).",
        "properties": {
          "form": {
            "type": "boolean",
            "description": "Feldtyp `boolean`."
          },
          "buttonLabel": {
            "type": "string",
            "description": "Feldtyp `string`."
          },
          "block": {
            "type": "object",
            "properties": {
              "href": {
                "type": "string"
              }
            },
            "required": [
              "href"
            ],
            "description": "Feldtyp `resource`."
          }
        },
        "examples": [
          {
            "form": true,
            "buttonLabel": "text",
            "block": {
              "href": "text"
            }
          }
        ]
      },
      "NodeType_listGridEntities": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `listGridEntities` (Backend-Klasse `AGListGridEntitiesTask`).",
        "properties": {
          "grid": {
            "type": "object",
            "properties": {
              "href": {
                "type": "string"
              }
            },
            "required": [
              "href"
            ],
            "description": "Feldtyp `resource`."
          },
          "filter": {
            "type": "string",
            "description": "Feldtyp `apptiveScript`."
          }
        },
        "examples": [
          {
            "grid": {
              "href": "text"
            },
            "filter": "text"
          }
        ]
      },
      "NodeType_listViewEntities": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `listViewEntities` (Backend-Klasse `AGListViewEntitiesTask`).",
        "properties": {
          "filter": {
            "type": "string",
            "description": "Feldtyp `apptiveScript`."
          },
          "view": {
            "type": "object",
            "properties": {
              "href": {
                "type": "string"
              }
            },
            "required": [
              "href"
            ],
            "description": "Feldtyp `resource`."
          }
        },
        "examples": [
          {
            "filter": "text",
            "view": {
              "href": "text"
            }
          }
        ]
      },
      "NodeType_sendEmail": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `sendEmail` (Backend-Klasse `AGSendEmailTask`).",
        "properties": {
          "subject": {
            "type": "string",
            "description": "Feldtyp `string`."
          },
          "body": {
            "type": "string",
            "description": "Feldtyp `string`."
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Feldtyp `stringcollection`."
          },
          "from": {
            "type": "string",
            "description": "Feldtyp `string`."
          },
          "attachments": {
            "description": "Feldtyp `mimeEntityCollection`."
          },
          "replyTo": {
            "type": "string",
            "description": "Feldtyp `string`."
          },
          "recipients": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Feldtyp `stringcollection`."
          },
          "html": {
            "type": "boolean",
            "description": "Feldtyp `boolean`."
          },
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Feldtyp `stringcollection`."
          }
        },
        "examples": [
          {
            "subject": "text",
            "body": "text",
            "cc": [
              "text"
            ],
            "from": "text",
            "replyTo": "text",
            "recipients": [
              "text"
            ],
            "html": true,
            "bcc": [
              "text"
            ]
          }
        ]
      },
      "NodeType_sendHttpRequest": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `sendHttpRequest` (Backend-Klasse `AGSendHttpRequestTask`).",
        "properties": {
          "contentType": {
            "type": "string",
            "enum": [
              "application/json;charset=utf-8",
              "application/json",
              "text/plain;charset=utf-8",
              "application/xml",
              "application/pdf"
            ],
            "description": "Feldtyp `enum`."
          },
          "password": {
            "type": "string",
            "description": "Feldtyp `string`."
          },
          "url": {
            "type": "string",
            "description": "Feldtyp `uri`."
          },
          "method": {
            "type": "string",
            "enum": [
              "GET",
              "HEAD",
              "POST",
              "PUT",
              "PATCH",
              "DELETE",
              "OPTIONS"
            ],
            "description": "Feldtyp `enum`."
          },
          "headers": {
            "description": "Feldtyp `stringDictionary`."
          },
          "query": {
            "description": "Feldtyp `stringDictionary`."
          },
          "username": {
            "type": "string",
            "description": "Feldtyp `string`."
          },
          "requestContent": {
            "type": "string",
            "description": "Feldtyp `string`."
          }
        },
        "examples": [
          {
            "contentType": "application/json;charset=utf-8",
            "password": "text",
            "url": "text",
            "method": "GET",
            "username": "text",
            "requestContent": "text"
          }
        ]
      },
      "NodeType_updateEntity": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `updateEntity` (Backend-Klasse `AGUpdateEntityTask`).",
        "properties": {
          "grid": {
            "type": "string",
            "description": "Feldtyp `grid`."
          },
          "entityId": {
            "type": "string",
            "description": "Feldtyp `string`."
          }
        },
        "examples": [
          {
            "grid": "text",
            "entityId": "text"
          }
        ]
      },
      "NodeType_andJoin": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `andJoin` (Backend-Klasse `FBAndJoin`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_orJoin": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `orJoin` (Backend-Klasse `FBOrJoin`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_simpleMerge": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `simpleMerge` (Backend-Klasse `FBSimpleMerge`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_andSplit": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `andSplit` (Backend-Klasse `FBAndSplit`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_exclusiveGateway": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `exclusiveGateway` (Backend-Klasse `FBExclusiveGateway`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_multiChoiceGateway": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `multiChoiceGateway` (Backend-Klasse `FBMultiChoiceGateway`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_parallelJoin": {
        "type": "object",
        "description": "Flow-Knoten vom Typ `parallelJoin` (Backend-Klasse `AGParallelJoinNode`) braucht keine Konfiguration - reiner Ablauf-/Gateway-Knoten.",
        "properties": {}
      },
      "NodeType_parallel": {
        "type": "object",
        "description": "Konfiguration für Flow-Knoten vom Typ `parallel` (Backend-Klasse `AGParallelNode`).",
        "properties": {
          "collection": {
            "type": "string",
            "description": "Feldtyp `apptiveScript`."
          }
        },
        "examples": [
          {
            "collection": "text"
          }
        ]
      },
      "FieldValue_createdat": {
        "description": "Wert eines Feldes vom Typ `createdat`.",
        "type": "string",
        "format": "date-time"
      },
      "FieldValue_createdby": {
        "description": "Wert eines Feldes vom Typ `createdby`.",
        "type": "object",
        "properties": {
          "displayValue": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "FieldValue_enum": {
        "description": "Wert eines Feldes vom Typ `enum`.",
        "type": "string",
        "examples": [
          "enum option"
        ]
      },
      "FieldValue_formula": {
        "description": "Wert eines Feldes vom Typ `formula`."
      },
      "FieldValue_lookup": {
        "description": "Wert eines Feldes vom Typ `lookup`."
      },
      "FieldValue_reducedLookupCollectionType": {
        "description": "Wert eines Feldes vom Typ `reducedLookupCollectionType`."
      },
      "FieldValue_boolean": {
        "description": "Wert eines Feldes vom Typ `boolean`.",
        "type": "boolean",
        "examples": [
          true
        ]
      },
      "FieldValue_currency": {
        "description": "Wert eines Feldes vom Typ `currency`.",
        "type": "number",
        "format": "float",
        "examples": [
          2.51
        ]
      },
      "FieldValue_date_time": {
        "description": "Wert eines Feldes vom Typ `date-time`.",
        "type": "string",
        "format": "date-time"
      },
      "FieldValue_date": {
        "description": "Wert eines Feldes vom Typ `date`.",
        "type": "string",
        "format": "date"
      },
      "FieldValue_decimal": {
        "description": "Wert eines Feldes vom Typ `decimal`.",
        "type": "number",
        "format": "float",
        "examples": [
          1.5
        ]
      },
      "FieldValue_email": {
        "description": "Wert eines Feldes vom Typ `email`.",
        "type": "string",
        "examples": [
          "max@test.com"
        ]
      },
      "FieldValue_integer": {
        "description": "Wert eines Feldes vom Typ `integer`.",
        "type": "integer",
        "examples": [
          1
        ]
      },
      "FieldValue_phoneNumber": {
        "description": "Wert eines Feldes vom Typ `phoneNumber`.",
        "type": "string",
        "examples": [
          "+33 1 23 45 67 89"
        ]
      },
      "FieldValue_richText": {
        "description": "Wert eines Feldes vom Typ `richText`.",
        "type": "string",
        "examples": [
          "string value"
        ]
      },
      "FieldValue_string": {
        "description": "Wert eines Feldes vom Typ `string`.",
        "type": "string",
        "examples": [
          "string value"
        ]
      },
      "FieldValue_uri": {
        "description": "Wert eines Feldes vom Typ `uri`.",
        "type": "string",
        "examples": [
          "mailto:test@apptive.com"
        ]
      },
      "FieldValue_attachments": {
        "description": "Wert eines Feldes vom Typ `attachments`.",
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "smallThumbnail": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "largeThumbnail": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string"
            }
          },
          "required": [
            "url",
            "type"
          ]
        }
      },
      "FieldValue_enumcollection": {
        "description": "Wert eines Feldes vom Typ `enumcollection`.",
        "type": "array",
        "items": {
          "type": "string"
        },
        "examples": [
          [
            "enum option"
          ]
        ]
      },
      "FieldValue_mimeEntityCollection": {
        "description": "Wert eines Feldes vom Typ `mimeEntityCollection`."
      },
      "FieldValue_references": {
        "description": "Wert eines Feldes vom Typ `references`.",
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "displayValue": {
              "type": "string"
            },
            "uri": {
              "type": "string"
            }
          },
          "required": [
            "uri"
          ]
        },
        "examples": [
          [
            null
          ]
        ]
      },
      "FieldValue_stringcollection": {
        "description": "Wert eines Feldes vom Typ `stringcollection`.",
        "type": "array",
        "items": {
          "type": "string"
        },
        "examples": [
          []
        ]
      },
      "FieldValue_address": {
        "description": "Wert eines Feldes vom Typ `address`.",
        "type": "object",
        "properties": {
          "line2": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "postCode": {
            "type": "string"
          },
          "geoLocation": {
            "type": "object",
            "properties": {
              "lat": {
                "type": "number",
                "format": "double"
              },
              "lon": {
                "type": "number",
                "format": "double"
              }
            },
            "required": [
              "lat",
              "lon"
            ]
          },
          "line1": {
            "type": "string"
          },
          "state": {
            "type": "string"
          }
        }
      },
      "FieldValue_reference": {
        "description": "Wert eines Feldes vom Typ `reference`.",
        "type": "object",
        "properties": {
          "displayValue": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          }
        },
        "required": [
          "uri"
        ]
      },
      "FieldValue_geolocation": {
        "description": "Wert eines Feldes vom Typ `geolocation`.",
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "format": "double"
          },
          "lon": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "FieldValue_resource": {
        "description": "Wert eines Feldes vom Typ `resource`.",
        "type": "object",
        "properties": {
          "href": {
            "type": "string"
          }
        },
        "required": [
          "href"
        ]
      },
      "FieldValue_user": {
        "description": "Wert eines Feldes vom Typ `user`.",
        "type": "object",
        "properties": {
          "displayValue": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          }
        },
        "required": [
          "uri"
        ]
      },
      "FieldValue_signature": {
        "description": "Wert eines Feldes vom Typ `signature`.",
        "type": "object",
        "properties": {
          "smallThumbnail": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "largeThumbnail": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "type"
        ]
      },
      "FieldType_createdat": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `createdat` (Backend-Klasse `AGCreatedAtType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "createdat"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "createdat"
          }
        ]
      },
      "FieldType_createdby": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `createdby` (Backend-Klasse `AGCreatedByType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "createdby"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "createdby"
          }
        ]
      },
      "FieldType_enum": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `enum` (Backend-Klasse `AGEnumType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "enum"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "description": "Erlaubte Werte, eindeutig. `AGEnumType>>initializeFromJson:` akzeptiert daneben noch den alten Schlüssel `attributes` für denselben Zweck."
          },
          "extended": {
            "type": "boolean",
            "default": false,
            "description": "Ob beim Schreiben auch Werte außerhalb von `options` erlaubt sind."
          }
        },
        "required": [
          "name",
          "options"
        ],
        "examples": [
          {
            "name": "enum",
            "options": [
              "text"
            ]
          }
        ]
      },
      "FieldType_formula": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `formula` (Backend-Klasse `AGFormulaType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "formula"
          },
          "valueType": {
            "type": "string",
            "enum": [
              "createdat",
              "createdby",
              "enum",
              "formula",
              "lookup",
              "reducedLookupCollectionType",
              "boolean",
              "currency",
              "date-time",
              "date",
              "decimal",
              "email",
              "integer",
              "phoneNumber",
              "richText",
              "string",
              "uri",
              "attachments",
              "enumcollection",
              "mimeEntityCollection",
              "references",
              "stringcollection",
              "address",
              "reference",
              "geolocation",
              "resource",
              "user",
              "signature"
            ],
            "description": "Name des erwarteten Ergebnistyps."
          },
          "expression": {
            "type": "string",
            "description": "→ [ApptiveScript-Funktionsreferenz](/referenz/apptivescript-funktionen). Ungültige Ausdrücke lässt das Backend beim Anlegen bereits abweisen."
          }
        },
        "required": [
          "name",
          "valueType",
          "expression"
        ],
        "examples": [
          {
            "name": "formula",
            "valueType": "createdat",
            "expression": "text"
          }
        ]
      },
      "FieldType_lookup": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `lookup` (Backend-Klasse `AGLookupType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "lookup"
          },
          "lookupField": {
            "type": "string",
            "description": "Adresse des Felds im referenzierten Grid, dessen Wert übernommen wird."
          },
          "referenceField": {
            "type": "string",
            "description": "Adresse des eigenen Feldes vom Typ `reference`, über das nachgeschlagen wird."
          }
        },
        "required": [
          "name",
          "lookupField",
          "referenceField"
        ],
        "examples": [
          {
            "name": "lookup",
            "lookupField": "text",
            "referenceField": "text"
          }
        ]
      },
      "FieldType_reducedLookupCollectionType": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `reducedLookupCollectionType` (Backend-Klasse `AGReducedLookupCollectionType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "reducedLookupCollectionType"
          },
          "lookupField": {
            "type": "string",
            "description": "Adresse des Felds im referenzierten Grid, dessen Werte übernommen werden."
          },
          "referencesField": {
            "type": "string",
            "description": "Adresse des eigenen Feldes vom Typ `references`, über das nachgeschlagen wird."
          }
        },
        "required": [
          "name",
          "lookupField",
          "referencesField"
        ],
        "examples": [
          {
            "name": "reducedLookupCollectionType",
            "lookupField": "text",
            "referencesField": "text"
          }
        ]
      },
      "FieldType_boolean": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `boolean` (Backend-Klasse `AGBooleanType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "boolean"
          }
        ]
      },
      "FieldType_currency": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `currency` (Backend-Klasse `AGCurrencyType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "currency"
          },
          "currency": {
            "type": "string",
            "description": "Währungscode, z. B. `EUR`."
          },
          "scale": {
            "type": "integer",
            "description": "Nachkommastellen. Ohne Angabe die Vorgabe der Währung."
          }
        },
        "required": [
          "name",
          "currency"
        ],
        "examples": [
          {
            "name": "currency",
            "currency": "text"
          }
        ]
      },
      "FieldType_date_time": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `date-time` (Backend-Klasse `AGDateAndTimeType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "date-time"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "date-time"
          }
        ]
      },
      "FieldType_date": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `date` (Backend-Klasse `AGDateType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "date"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "date"
          }
        ]
      },
      "FieldType_decimal": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `decimal` (Backend-Klasse `AGDecimalType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "decimal"
          },
          "scale": {
            "type": "integer",
            "description": "Nachkommastellen. Ohne Angabe unbegrenzt."
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "decimal"
          }
        ]
      },
      "FieldType_email": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `email` (Backend-Klasse `AGEmailType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "email"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "email"
          }
        ]
      },
      "FieldType_integer": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `integer` (Backend-Klasse `AGIntegerType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "integer"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "integer"
          }
        ]
      },
      "FieldType_phoneNumber": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `phoneNumber` (Backend-Klasse `AGPhoneNumberType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "phoneNumber"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "phoneNumber"
          }
        ]
      },
      "FieldType_richText": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `richText` (Backend-Klasse `AGRichTextType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "richText"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "richText"
          }
        ]
      },
      "FieldType_string": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `string` (Backend-Klasse `AGStringType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "string"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "string"
          }
        ]
      },
      "FieldType_uri": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `uri` (Backend-Klasse `AGUriType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "uri"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "uri"
          }
        ]
      },
      "FieldType_attachments": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `attachments` (Backend-Klasse `AGAttachmentCollectionType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "attachments"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "attachments"
          }
        ]
      },
      "FieldType_enumcollection": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `enumcollection` (Backend-Klasse `AGEnumCollectionType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "enumcollection"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "description": "Erlaubte Werte, eindeutig. `AGEnumType>>initializeFromJson:` akzeptiert daneben noch den alten Schlüssel `attributes` für denselben Zweck."
          },
          "extended": {
            "type": "boolean",
            "default": false,
            "description": "Ob beim Schreiben auch Werte außerhalb von `options` erlaubt sind."
          }
        },
        "required": [
          "name",
          "options"
        ],
        "examples": [
          {
            "name": "enumcollection",
            "options": [
              "text"
            ]
          }
        ]
      },
      "FieldType_mimeEntityCollection": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `mimeEntityCollection` (Backend-Klasse `AGMimeEntityCollectionType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "mimeEntityCollection"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "mimeEntityCollection"
          }
        ]
      },
      "FieldType_references": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `references` (Backend-Klasse `AGReferenceCollectionType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "references"
          },
          "gridUri": {
            "type": "string",
            "description": "Adresse des referenzierten Grids oder Virtual Grids. `AGEntityReferenceType>>initializeFromJson:` akzeptiert daneben noch den alten Schlüssel `attributes` für denselben Zweck."
          }
        },
        "required": [
          "name",
          "gridUri"
        ],
        "examples": [
          {
            "name": "references",
            "gridUri": "text"
          }
        ]
      },
      "FieldType_stringcollection": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `stringcollection` (Backend-Klasse `AGStringCollectionType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "stringcollection"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "stringcollection"
          }
        ]
      },
      "FieldType_address": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `address` (Backend-Klasse `AGAddressType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "address"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "address"
          }
        ]
      },
      "FieldType_reference": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `reference` (Backend-Klasse `AGEntityReferenceType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "reference"
          },
          "gridUri": {
            "type": "string",
            "description": "Adresse des referenzierten Grids oder Virtual Grids. `AGEntityReferenceType>>initializeFromJson:` akzeptiert daneben noch den alten Schlüssel `attributes` für denselben Zweck."
          }
        },
        "required": [
          "name",
          "gridUri"
        ],
        "examples": [
          {
            "name": "reference",
            "gridUri": "text"
          }
        ]
      },
      "FieldType_geolocation": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `geolocation` (Backend-Klasse `AGGeoLocationType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "geolocation"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "geolocation"
          }
        ]
      },
      "FieldType_resource": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `resource` (Backend-Klasse `AGResourceType`).",
        "properties": {
          "name": {
            "type": "string",
            "const": "resource"
          },
          "validResourceTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "view",
                "grid",
                "space",
                "form",
                "block",
                "externalHook",
                "flow"
              ]
            },
            "description": "Einschränkung auf bestimmte Ressourcentypen. Ohne Angabe sind alle erlaubt (`AGResourceType>>allowedResourceTypes`)."
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "resource"
          }
        ]
      },
      "FieldType_user": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `user` (Backend-Klasse `AGUserType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "user"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "user"
          }
        ]
      },
      "FieldType_signature": {
        "type": "object",
        "description": "Typ-Definition für Felder vom Typ `signature` (Backend-Klasse `AGSignatureType`). Keine Zusatzfelder außer `name` (`initializeFromJson:` ist im Backend ein No-op für diesen Typ, bzw. der Elementtyp einer Sammlung ist fest verdrahtet).",
        "properties": {
          "name": {
            "type": "string",
            "const": "signature"
          }
        },
        "required": [
          "name"
        ],
        "examples": [
          {
            "name": "signature"
          }
        ]
      },
      "Block_paragraph": {
        "description": "Block vom Typ `paragraph`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "paragraph": {
            "type": "object",
            "properties": {
              "properties": {
                "type": "object",
                "properties": {}
              },
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "text": {
                "x-unverified": true
              }
            }
          },
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          }
        },
        "examples": [
          {
            "paragraph": {
              "properties": {},
              "annotations": {},
              "viewType": null,
              "visible": null,
              "text": null
            },
            "has_children": false,
            "metaType": "block",
            "type": "paragraph",
            "children": []
          }
        ]
      },
      "Block_resourceBlock": {
        "description": "Block vom Typ `resourceBlock`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          },
          "resourceBlock": {
            "type": "object",
            "properties": {
              "properties": {
                "type": "object",
                "properties": {}
              },
              "resource": {
                "x-unverified": true
              },
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "height": {
                "x-unverified": true
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "type": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "validResourceTypes": {
                    "x-unverified": true
                  },
                  "access": {
                    "type": "string"
                  }
                }
              },
              "width": {
                "x-unverified": true
              }
            }
          }
        },
        "examples": [
          {
            "has_children": false,
            "metaType": "block",
            "type": "resourceBlock",
            "children": [],
            "resourceBlock": {
              "properties": {},
              "resource": null,
              "annotations": {},
              "height": null,
              "viewType": null,
              "visible": null,
              "type": {
                "name": "resource",
                "validResourceTypes": null,
                "access": "write"
              },
              "width": null
            }
          }
        ]
      },
      "Block_html": {
        "description": "Block vom Typ `html`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "html": {
            "type": "object",
            "properties": {
              "properties": {
                "type": "object",
                "properties": {}
              },
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "text": {
                "type": "object",
                "properties": {
                  "evaluated": {
                    "x-unverified": true
                  },
                  "value": {
                    "x-unverified": true
                  }
                }
              }
            }
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          }
        },
        "examples": [
          {
            "has_children": false,
            "metaType": "block",
            "type": "html",
            "html": {
              "properties": {},
              "annotations": {},
              "viewType": null,
              "visible": null,
              "text": {
                "evaluated": null,
                "value": null
              }
            },
            "children": []
          }
        ]
      },
      "Block_page": {
        "description": "Block vom Typ `page`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "displayValue": {
            "x-unverified": true
          },
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          },
          "type": {
            "type": "string"
          },
          "page": {
            "type": "object",
            "properties": {
              "icon": {
                "x-unverified": true
              },
              "headerImage": {
                "x-unverified": true
              },
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "name": {
                "x-unverified": true
              },
              "properties": {
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "examples": [
          {
            "displayValue": null,
            "has_children": false,
            "metaType": "block",
            "children": [],
            "type": "page",
            "page": {
              "icon": null,
              "headerImage": null,
              "annotations": {},
              "viewType": null,
              "visible": null,
              "name": null,
              "properties": {}
            }
          }
        ]
      },
      "Block_entityList": {
        "description": "Block vom Typ `entityList`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "entityList": {
            "type": "object",
            "properties": {
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "itemBlock": {
                "x-unverified": true
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "grid": {
                "x-unverified": true
              },
              "properties": {
                "type": "object",
                "properties": {}
              }
            }
          },
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          }
        },
        "examples": [
          {
            "entityList": {
              "annotations": {},
              "itemBlock": null,
              "viewType": null,
              "visible": null,
              "grid": null,
              "properties": {}
            },
            "has_children": false,
            "metaType": "block",
            "type": "entityList",
            "children": []
          }
        ]
      },
      "Block_layout": {
        "description": "Block vom Typ `layout`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "layout": {
            "type": "object",
            "properties": {
              "mainAxisAlignItems": {
                "x-unverified": true
              },
              "wrap": {
                "x-unverified": true
              },
              "properties": {
                "type": "object",
                "properties": {}
              },
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "layoutMode": {
                "x-unverified": true
              },
              "counterAxisAlignItems": {
                "x-unverified": true
              }
            }
          },
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          }
        },
        "examples": [
          {
            "layout": {
              "mainAxisAlignItems": null,
              "wrap": null,
              "properties": {},
              "annotations": {},
              "viewType": null,
              "visible": null,
              "layoutMode": null,
              "counterAxisAlignItems": null
            },
            "has_children": false,
            "metaType": "block",
            "type": "layout",
            "children": []
          }
        ]
      },
      "Block_IFrame": {
        "description": "Block vom Typ `IFrame`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "IFrame": {
            "type": "object",
            "properties": {
              "uri": {
                "x-unverified": true
              },
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "height": {
                "x-unverified": true
              },
              "properties": {
                "type": "object",
                "properties": {}
              }
            }
          },
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          }
        },
        "examples": [
          {
            "IFrame": {
              "uri": null,
              "annotations": {},
              "viewType": null,
              "visible": null,
              "height": null,
              "properties": {}
            },
            "has_children": false,
            "metaType": "block",
            "type": "IFrame",
            "children": []
          }
        ]
      },
      "Block_header": {
        "description": "Block vom Typ `header`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          },
          "header": {
            "type": "object",
            "properties": {
              "properties": {
                "type": "object",
                "properties": {}
              },
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "level": {
                "x-unverified": true
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "text": {
                "x-unverified": true
              }
            }
          }
        },
        "examples": [
          {
            "has_children": false,
            "metaType": "block",
            "type": "header",
            "children": [],
            "header": {
              "properties": {},
              "annotations": {},
              "level": null,
              "viewType": null,
              "visible": null,
              "text": null
            }
          }
        ]
      },
      "Block_entity": {
        "description": "Block vom Typ `entity`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "entity": {
            "type": "object",
            "properties": {
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "grid": {
                "x-unverified": true
              },
              "properties": {
                "type": "object",
                "properties": {}
              }
            }
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          }
        },
        "examples": [
          {
            "has_children": false,
            "metaType": "block",
            "type": "entity",
            "entity": {
              "annotations": {},
              "viewType": null,
              "visible": null,
              "grid": null,
              "properties": {}
            },
            "children": []
          }
        ]
      },
      "Block_image": {
        "description": "Block vom Typ `image`. Form aus einem Beispiel des Backends hergeleitet (`AGBasicBlock class>>sampleJsonBlocks`), nicht aus einem deklarierten Schema - deshalb strukturell, aber nicht als Vertrag zugesichert.",
        "x-unverified": true,
        "type": "object",
        "properties": {
          "image": {
            "type": "object",
            "properties": {
              "properties": {
                "type": "object",
                "properties": {}
              },
              "annotations": {
                "type": "object",
                "properties": {}
              },
              "url": {
                "x-unverified": true
              },
              "height": {
                "x-unverified": true
              },
              "viewType": {
                "x-unverified": true
              },
              "visible": {
                "x-unverified": true
              },
              "width": {
                "x-unverified": true
              }
            }
          },
          "has_children": {
            "type": "boolean"
          },
          "metaType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "children": {
            "type": "array",
            "items": {},
            "x-unverified": true,
            "description": "Verschachtelte Blöcke (je nach übergeordnetem Blocktyp)."
          }
        },
        "examples": [
          {
            "image": {
              "properties": {},
              "annotations": {},
              "url": null,
              "height": null,
              "viewType": null,
              "visible": null,
              "width": null
            },
            "has_children": false,
            "metaType": "block",
            "type": "image",
            "children": []
          }
        ]
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Ungültige Anfrage: Rumpf, Parameter oder Werte verletzen eine Regel (AGError, AGHTTPParseError, AGHTTPConstraintsError, AGTypeConversionError, JSONSchemaError).",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Error"
                },
                {
                  "$ref": "#/components/schemas/OperationError"
                }
              ]
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Nicht angemeldet oder Zugangsdaten ungültig (AGHTTPUnauthorized). Bei geschützten Links steht im Header `Apptive-Authorization`, welche Art von Anmeldung erwartet wird.",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Error"
                },
                {
                  "$ref": "#/components/schemas/OperationError"
                }
              ]
            }
          }
        }
      },
      "Forbidden": {
        "description": "Angemeldet, aber ohne die nötige Rolle auf dieser Ressource (AGHTTPForbidden).",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Error"
                },
                {
                  "$ref": "#/components/schemas/OperationError"
                }
              ]
            }
          }
        }
      },
      "NotFound": {
        "description": "Ressource oder Route nicht gefunden (AGResourceNotFound).",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Error"
                },
                {
                  "$ref": "#/components/schemas/OperationError"
                }
              ]
            }
          }
        }
      },
      "ServerError": {
        "description": "Unbehandelter Fehler im Backend.",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Error"
                },
                {
                  "$ref": "#/components/schemas/OperationError"
                }
              ]
            }
          }
        }
      },
      "ServiceUnavailable": {
        "description": "Datenbank gesperrt oder in Wartung (AGServiceUnavailable).",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Error"
                },
                {
                  "$ref": "#/components/schemas/OperationError"
                }
              ]
            }
          }
        }
      }
    }
  },
  "x-apptivegrid-extract": {
    "backendVersion": "2.4.1348",
    "extractedAt": "2026-08-30T19:52:30.500164+02:00",
    "entityLayouts": [
      "field",
      "indexed",
      "keyAndField",
      "key",
      "property"
    ],
    "defaultEntityLayout": "field",
    "filterOperators": [
      "$not",
      "$and",
      "$or",
      "$updated",
      "$hasAllOf",
      "$hasAnyOf",
      "$isActor",
      "$eq",
      "$gt",
      "$lt",
      "$hasNoneOf",
      "$substring",
      "$isEmpty",
      "$isUpdated"
    ]
  }
}
