{
  "openapi": "3.1.0",
  "info": {
    "title": "Dynamic Tables API",
    "version": "1.0.0-dev",
    "description": "Current development route contract for session authentication, definitions, authorized record/query/Group/View runtime and explicit actions. Query-backed field dropdowns and external API execution remain unavailable. This reference has no live request console."
  },
  "servers": [
    {
      "url": "https://api.dynamic-tables.com",
      "description": "Production API host"
    }
  ],
  "paths": {
    "/v1/auth/me": {
      "get": {
        "operationId": "get-auth-me",
        "summary": "Check session and initialize CSRF",
        "description": "Returns user (null when anonymous), csrfToken, and current account capabilities/workspace. An initial request establishes the anonymous session.",
        "x-access": "Anonymous or authenticated session",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/login": {
      "post": {
        "operationId": "post-auth-login",
        "summary": "Sign in",
        "description": "Normalizes email, checks the password, and rotates the session/CSRF token. Login is rate limited.",
        "x-access": "Anonymous session with CSRF",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "maxLength": 1024
                  }
                },
                "required": [
                  "email",
                  "password"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/auth/register": {
      "post": {
        "operationId": "post-auth-register",
        "summary": "Register an account",
        "description": "Creates a Member account with an unverified email and signs it in. Password must be at least 12 characters; no organization capability is automatically granted.",
        "x-access": "Anonymous session with CSRF",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "minLength": 12,
                    "maxLength": 1024
                  },
                  "passwordConfirmation": {
                    "type": "string"
                  }
                },
                "required": [
                  "email",
                  "password",
                  "passwordConfirmation"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/auth/logout": {
      "post": {
        "operationId": "post-auth-logout",
        "summary": "Sign out",
        "description": "Destroys the server session and expires its cookie.",
        "x-access": "Session with CSRF",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/account": {
      "post": {
        "operationId": "post-account",
        "summary": "Update account",
        "description": "Saves profile/theme. Email changes require currentPassword, clear verification, and rotate session/CSRF.",
        "x-access": "Authenticated account",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "displayName": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "theme": {
                    "type": "string",
                    "enum": [
                      "obsidian-lime",
                      "cobalt-coral",
                      "digital-teal",
                      "electric-indigo",
                      "main",
                      "main-dark",
                      "midnight-graphite"
                    ]
                  },
                  "currentPassword": {
                    "type": "string"
                  }
                },
                "required": [
                  "displayName",
                  "email"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/account/workspace": {
      "post": {
        "operationId": "post-account-workspace",
        "summary": "Select account workspace",
        "description": "Changes navigation context; does not grant or impersonate privileges. Returns landingPage.",
        "x-access": "Authenticated account with requested capability",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "workspace": {
                    "type": "string",
                    "enum": [
                      "member",
                      "organization",
                      "platform"
                    ]
                  }
                },
                "required": [
                  "workspace"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/account/organization-access": {
      "post": {
        "operationId": "post-account-organization-access",
        "summary": "Request Organization Admin upgrade",
        "description": "Submits an account-type upgrade request. Approval grants creation access and the account-level organization workspace.",
        "x-access": "Authenticated Member account",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "const": "request"
                  }
                },
                "required": [
                  "action"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations": {
      "get": {
        "operationId": "get-organizations",
        "summary": "List available organizations",
        "description": "Lists active unexpired organization memberships. Owned/joined filters remain account-scoped.",
        "x-access": "Authenticated account",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number starting at 1; up to 50 items per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "description": "all: all memberships; owned: owned organizations; joined: other joined organizations.",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "owned",
                "joined"
              ],
              "default": "all"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations",
        "summary": "Create organization",
        "description": "Creates an organization owned by the signed-in account, active owner membership, and protected Admin UserType.",
        "x-access": "Approved Organization Admin account type",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}": {
      "get": {
        "operationId": "get-organizations-organizationId",
        "summary": "Read organization workspace",
        "description": "Returns organization branding availability, assigned/active roles, adminPanel, effective management permissions, and accessPending. Pending members can read this shell only.",
        "x-access": "Active, unexpired organization member",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId",
        "summary": "Rename organization",
        "description": "Changes the organization name; does not change ownership.",
        "x-access": "Owner mode or Admin with settings.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/logo": {
      "get": {
        "operationId": "get-organizations-organizationId-logo",
        "summary": "Read logo",
        "description": "Returns image bytes or 404 if no logo is configured.",
        "x-access": "Active, unexpired member with an assigned role",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Organization logo bytes.",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "image/webp": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-logo",
        "summary": "Upload logo",
        "description": "Accepts PNG/JPEG/WebP, at most 2 MB and 4096 × 4096 pixels.",
        "x-access": "Owner mode or Admin with settings.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Multipart image upload. Do not send application/json.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "logo": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "logo"
                ]
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/mobile-logo": {
      "get": {
        "operationId": "get-organizations-organizationId-mobile-logo",
        "summary": "Read mobile-logo",
        "description": "Returns image bytes or 404 if no logo is configured.",
        "x-access": "Active, unexpired member with an assigned role",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Organization logo bytes.",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "image/webp": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-mobile-logo",
        "summary": "Upload mobile-logo",
        "description": "Accepts PNG/JPEG/WebP, at most 2 MB and 4096 × 4096 pixels.",
        "x-access": "Owner mode or Admin with settings.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Multipart image upload. Do not send application/json.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "logo": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "logo"
                ]
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/active-role": {
      "post": {
        "operationId": "post-organizations-organizationId-active-role",
        "summary": "Select organization role",
        "description": "Chooses Owner, Admin, or an assigned UserType by its actual ID. Only Owner is a literal system role value.",
        "x-access": "Active, unexpired member assigned the requested role",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "role": {
                    "type": "string"
                  }
                },
                "required": [
                  "role"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/people": {
      "get": {
        "operationId": "get-organizations-organizationId-people",
        "summary": "List organization people",
        "description": "Includes access state, expiry date, expiry revision, and protected-owner metadata.",
        "x-access": "Owner mode or Admin with people.manage",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number starting at 1; up to 100 items per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-people",
        "summary": "Add existing account",
        "description": "Adds a registered account without verifying its email. Readdition of removed membership clears old role/grant assignments; it does not clear access expiry.",
        "x-access": "Owner mode or Admin with people.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/invitations": {
      "get": {
        "operationId": "get-organizations-organizationId-invitations",
        "summary": "List invitations",
        "description": "Returns invitation status/delivery metadata without tokens. Tokens are retrieved only by the explicit Copy action.",
        "x-access": "Owner mode or Admin with people.manage",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number starting at 1; up to 100 items per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-invitations",
        "summary": "Manage invitations",
        "description": "Create uses email. Other actions use id. Links expire after 72 hours; Renew rotates the token; Send uses configured shared Brevo delivery.",
        "x-access": "Owner mode or Admin with people.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "create",
                      "copy",
                      "send",
                      "renew",
                      "revoke"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/invitations/inspect": {
      "post": {
        "operationId": "post-invitations-inspect",
        "summary": "Inspect invitation",
        "description": "Reads a token supplied in JSON. Acceptance creates membership without automatically assigning UserTypes; the token is never a query-string parameter.",
        "x-access": "Anonymous session with CSRF",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  }
                },
                "required": [
                  "token"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/invitations/accept": {
      "post": {
        "operationId": "post-invitations-accept",
        "summary": "Accept invitation",
        "description": "Reads a token supplied in JSON. Acceptance creates membership without automatically assigning UserTypes; the token is never a query-string parameter.",
        "x-access": "Authenticated account matching invited email",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  }
                },
                "required": [
                  "token"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/memberships": {
      "get": {
        "operationId": "get-organizations-organizationId-memberships",
        "summary": "List role assignments",
        "description": "Returns active memberships with assigned UserType IDs and privilege-management metadata.",
        "x-access": "Owner mode or Admin with roles.manage",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number starting at 1; up to 100 items per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-memberships",
        "summary": "Assign UserTypes or remove membership",
        "description": "Assignment replaces userTypeIds for an existing active member. Remove uses action and membershipId. Only owners change privileged memberships or assign Admin/permission-bearing groups.",
        "x-access": "Owner mode; roles.manage permits ordinary memberships only",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "userTypeIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    },
                    "uniqueItems": true
                  },
                  "action": {
                    "const": "remove"
                  },
                  "membershipId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/membership-access": {
      "post": {
        "operationId": "post-organizations-organizationId-membership-access",
        "summary": "Set membership access expiry",
        "description": "expiresAt null means Never; an explicit timezone is required otherwise. Owner is protected. Retains content/roles and blocks expired organization requests.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "membershipId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "expiresAt": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time"
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "required": [
                  "membershipId",
                  "expiresAt",
                  "revision"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/permissions": {
      "get": {
        "operationId": "get-organizations-organizationId-permissions",
        "summary": "Read administration permissions",
        "description": "Returns permission catalog, UserType policies, and paginated member grants/revisions.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number starting at 1; up to 100 items per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-permissions",
        "summary": "Set group or individual grants",
        "description": "Replaces a UserType permission list or member additional grants using revision checks. Owner full access cannot be modified.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "target": {
                    "type": "string",
                    "enum": [
                      "userType",
                      "member"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "permissions": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "people.manage",
                        "roles.manage",
                        "user-types.manage",
                        "object-types.manage",
                        "relationships.manage",
                        "queries.manage",
                        "settings.manage"
                      ]
                    }
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "required": [
                  "target",
                  "id",
                  "permissions",
                  "revision"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/user-types": {
      "get": {
        "operationId": "get-organizations-organizationId-user-types",
        "summary": "List UserType definitions",
        "description": "Returns active UserTypes, protected Admin metadata, assignment eligibility, and optional profile ObjectType links.",
        "x-access": "Owner mode or authorized Admin needing definition/role choices",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-user-types",
        "summary": "Manage UserType definitions",
        "description": "Name/key define ordinary types. Edit uses id; delete uses action remove and id. Admin definition is protected. Creating a linked ObjectType also requires object-types.manage.",
        "x-access": "Owner mode or Admin with user-types.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "action": {
                    "const": "remove"
                  },
                  "profileObjectTypeId": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "createProfileObjectType": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/object-types": {
      "get": {
        "operationId": "get-organizations-organizationId-object-types",
        "summary": "List ObjectType definitions",
        "description": "Returns active ObjectType names, keys, and versions.",
        "x-access": "Owner mode or authorized Admin needing ObjectType choices",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-object-types",
        "summary": "Manage ObjectTypes",
        "description": "Create/rename definitions or retire unused types. Fields, records, UserType links, relationships, and queries protect deletion.",
        "x-access": "Owner mode or Admin with object-types.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "action": {
                    "const": "remove"
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/object-types/{objectTypeId}/fields": {
      "get": {
        "operationId": "get-organizations-organizationId-object-types-objectTypeId-fields",
        "summary": "Read Fields & Schema",
        "description": "Returns active typed fields, supported kinds, derived field IDs, and minimal query-backed option mapping choices.",
        "x-access": "Owner mode or Admin with object-types.manage",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "description": "ObjectType ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-object-types-objectTypeId-fields",
        "summary": "Manage DynamicFields",
        "description": "Create/update field definitions with version checks; retire uses action remove. Keys/types are fixed; existing records block structural edits. Query option references are configuration only.",
        "x-access": "Owner mode or Admin with object-types.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "description": "ObjectType ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "save",
                      "remove"
                    ]
                  },
                  "key": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "helpText": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "text",
                      "textarea",
                      "number",
                      "boolean",
                      "date",
                      "datetime",
                      "select",
                      "multiselect"
                    ]
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "defaultValue": {},
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "value": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "value",
                        "label"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "validation": {
                    "type": "object",
                    "properties": {
                      "min": {
                        "type": "number"
                      },
                      "max": {
                        "type": "number"
                      },
                      "maxLength": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10000
                      }
                    },
                    "additionalProperties": false
                  },
                  "optionsSource": {
                    "type": "string",
                    "enum": [
                      "static",
                      "query"
                    ]
                  },
                  "optionsQuery": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "properties": {
                      "queryId": {
                        "type": "string",
                        "pattern": "^[a-f0-9]{24}$"
                      },
                      "labelFieldId": {
                        "type": "string",
                        "pattern": "^[a-f0-9]{24}$"
                      },
                      "valueFieldId": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/queries": {
      "get": {
        "operationId": "get-organizations-organizationId-queries",
        "summary": "List DynamicQuery configurations",
        "description": "Returns query definitions and typed source/projection/filter metadata. executable is false; no result records are returned. Saved queries now support authorized execution; executable is derived capability, not an input grant.",
        "x-access": "Owner mode or Admin with queries.manage",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-queries",
        "summary": "Manage DynamicQuery configurations",
        "description": "Saves an allowlisted AST with stable source field IDs and typed values. Filters are bounded to five nested levels and 50 nodes; no raw MongoDB operators/code. References protect mapped outputs/deletion. Execution remains unavailable. Saved queries now support authorized execution; executable is derived capability, not an input grant.",
        "x-access": "Owner mode or Admin with queries.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "save",
                      "remove"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  },
                  "objectTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "projectionFieldIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    },
                    "uniqueItems": true
                  },
                  "filterTree": {
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/object-relationships": {
      "get": {
        "operationId": "get-organizations-organizationId-object-relationships",
        "summary": "List object relationships",
        "description": "Returns organization-scoped relationship definitions; record edges/traversal remain planned.",
        "x-access": "Owner mode or Admin with relationships.manage",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-object-relationships",
        "summary": "Manage object relationships",
        "description": "Create/edit/retire typed relationship definitions. Existing edges protect structural changes/deletion.",
        "x-access": "Owner mode or Admin with relationships.manage",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "201": {
            "description": "Resource created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "action": {
                    "const": "remove"
                  },
                  "name": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  },
                  "sourceTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "targetTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "sourceCardinality": {
                    "enum": [
                      "one",
                      "many"
                    ]
                  },
                  "targetCardinality": {
                    "enum": [
                      "one",
                      "many"
                    ]
                  },
                  "onDelete": {
                    "enum": [
                      "restrict",
                      "detach"
                    ]
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/inheritance": {
      "get": {
        "operationId": "get-organizations-organizationId-inheritance",
        "summary": "Inspect legacy UserType inheritance",
        "description": "Compatibility configuration only. Inheritance data is preserved; inherited permissions are not executed.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organizations-organizationId-inheritance",
        "summary": "Configure legacy UserType inheritance",
        "description": "Compatibility endpoint. Validates same-organization references and acyclic hierarchy; no inherited policy execution.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "parentIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    },
                    "uniqueItems": true
                  },
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "remove"
                    ]
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/platform/organizations": {
      "get": {
        "operationId": "get-platform-organizations",
        "summary": "Platform organization directory",
        "description": "Read-only names/IDs/status. Does not grant tenant membership or data access.",
        "x-access": "Active explicit Platform Admin",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number starting at 1; up to 100 items per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ]
      }
    },
    "/v1/platform/organization-requests": {
      "get": {
        "operationId": "get-platform-organization-requests",
        "summary": "List account upgrade requests",
        "description": "Account metadata and Organization Admin request status; no credentials.",
        "x-access": "Active explicit Platform Admin",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number starting at 1; up to 50 items per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ]
      },
      "post": {
        "operationId": "post-platform-organization-requests",
        "summary": "Review account upgrade",
        "description": "Approve/reject a matching pending request or revoke matching approved access. Stale request identity/status returns 409.",
        "x-access": "Active explicit Platform Admin",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "enum": [
                      "approve",
                      "reject",
                      "revoke"
                    ]
                  },
                  "userId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "requestId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{32}$"
                  }
                },
                "required": [
                  "action",
                  "userId",
                  "requestId"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/platform/email-settings": {
      "get": {
        "operationId": "get-platform-email-settings",
        "summary": "Read email delivery configuration",
        "description": "Returns sender/delivery settings, revision, credential-configured boolean, and audit history. Never returns API keys.",
        "x-access": "Active explicit Platform Admin",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "post-platform-email-settings",
        "summary": "Update email delivery configuration",
        "description": "Saves encrypted shared settings with revision/audit. Blank key preserves; clearApiKey removes. Does not send a test email.",
        "x-access": "Active explicit Platform Admin with password confirmation",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Send the supported fields for the selected action. This is an initial contract; route-specific validation still applies.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "senderName": {
                    "type": "string"
                  },
                  "senderEmail": {
                    "type": "string",
                    "format": "email"
                  },
                  "apiKey": {
                    "type": "string",
                    "writeOnly": true
                  },
                  "clearApiKey": {
                    "type": "boolean"
                  },
                  "password": {
                    "type": "string",
                    "writeOnly": true
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "required": [
                  "enabled",
                  "senderName",
                  "senderEmail",
                  "password",
                  "revision"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/data-permissions": {
      "get": {
        "operationId": "get-organization-data-permissions",
        "summary": "Read selected-role data permission policies",
        "description": "Owner-only selected-role ObjectType/field policies. Record APIs enforce these policies; saved query execution remains disabled. Optional recordScope selects all records (default) or one direct relationship to an owner-bound member profile. Related-only policies cannot grant create. Missing identities and unrelated rows fail closed. GET also returns profile ObjectType IDs and relationship choices.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number starting at 1; up to 100 items per page.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          }
        ]
      },
      "post": {
        "operationId": "post-organization-data-permissions",
        "summary": "Save selected-role data permission policies",
        "description": "Owner-only selected-role ObjectType/field policies. Record APIs enforce these policies; saved query execution remains disabled. Optional recordScope selects all records (default) or one direct relationship to an owner-bound member profile. Related-only policies cannot grant create. Missing identities and unrelated rows fail closed. GET also returns profile ObjectType IDs and relationship choices.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": [],
            "CsrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Origin, CSRF, permissions, pending access, or membership expiry denial.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found or inaccessible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate, protected dependency, stale revision, or incompatible schema change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many attempts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "Organization ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "userTypeId",
                  "objectTypeId",
                  "revision",
                  "operations",
                  "readFieldIds",
                  "createFieldIds",
                  "updateFieldIds"
                ],
                "properties": {
                  "userTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "objectTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "operations": {
                    "type": "array",
                    "maxItems": 4,
                    "items": {
                      "type": "string",
                      "enum": [
                        "read",
                        "create",
                        "update",
                        "delete"
                      ]
                    }
                  },
                  "readFieldIds": {
                    "type": "array",
                    "maxItems": 500,
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    }
                  },
                  "createFieldIds": {
                    "type": "array",
                    "maxItems": 500,
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    }
                  },
                  "updateFieldIds": {
                    "type": "array",
                    "maxItems": 500,
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    }
                  },
                  "recordScope": {
                    "oneOf": [
                      {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "mode"
                        ],
                        "properties": {
                          "mode": {
                            "const": "all"
                          }
                        }
                      },
                      {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "mode",
                          "relationshipId",
                          "recordSide"
                        ],
                        "properties": {
                          "mode": {
                            "const": "related"
                          },
                          "relationshipId": {
                            "type": "string",
                            "pattern": "^[a-f0-9]{24}$"
                          },
                          "recordSide": {
                            "enum": [
                              "source",
                              "target"
                            ]
                          }
                        }
                      },
                      {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "mode"
                        ],
                        "properties": {
                          "mode": {
                            "const": "profile"
                          }
                        },
                        "description": "Only the signed-in member profile record; requires matching profile ObjectType and an explicit identity binding. Create is denied."
                      }
                    ]
                  },
                  "relationshipWriteIds": {
                    "type": "array",
                    "maxItems": 100,
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    },
                    "description": "Connected relationships that declared group selectors may replace. Requires ObjectType Update. Default empty; does not grant generic edge administration."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/objects": {
      "get": {
        "operationId": "list-dynamic-objects",
        "summary": "List authorized records",
        "description": "Returns objects, hasMore, nextCursor. Stable ascending ObjectId pagination, no total count. Relationship row constraints apply before pagination, maximum execution time 2 seconds. Only readable fields are returned.",
        "x-access": "Active member; selected-role operation, row, and field access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectTypeId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "create-dynamic-object",
        "summary": "Create a record",
        "description": "Applies strict schema validation and defaults, freezes the aggregate ObjectType schema at version 1, and returns object with schemaVersion/revision. Related-only roles cannot create. JSON 256 KiB, values 128 KiB. Saved query-backed non-null option values are unavailable.",
        "x-access": "Active member; selected-role operation, row, and field access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "objectTypeId",
                  "data"
                ],
                "properties": {
                  "objectTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "data": {
                    "type": "object",
                    "description": "Immutable field keys with strictly typed schema values. Unknown or unauthorized fields are rejected."
                  },
                  "action": {
                    "const": "create"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/objects/{objectId}": {
      "get": {
        "operationId": "read-dynamic-object",
        "summary": "Read an authorized record",
        "description": "Returns object with id, objectTypeId, schemaVersion, revision, and readable data. Unrelated records return 404.",
        "x-access": "Active member; selected-role operation, row, and field access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "mutate-dynamic-object",
        "summary": "Update or soft-delete a record",
        "description": "Partial update merges submitted fields, validates the full frozen schema, and increments revision. Delete retires the record and detachable connections; restrict connections block deletion. Hidden fields never appear in write responses. Histories are atomic per document and bounded to 100 events.",
        "x-access": "Active member; selected-role operation, row, and field access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "revision",
                      "data"
                    ],
                    "properties": {
                      "revision": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "action": {
                        "const": "update"
                      },
                      "data": {
                        "type": "object",
                        "description": "Immutable field keys with strictly typed schema values. Unknown or unauthorized fields are rejected."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "revision",
                      "action"
                    ],
                    "properties": {
                      "revision": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "action": {
                        "const": "delete"
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/object-relationships/{relationshipId}/edges": {
      "get": {
        "operationId": "list-record-edges",
        "summary": "List record connections",
        "description": "Owner-only. Returns edges (id, endpoints, status, revision), hasMore, nextCursor. includeRetired=1 exposes retired-pair revisions for relinking.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "relationshipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "includeRetired",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "mutate-record-edge",
        "summary": "Link or unlink records",
        "description": "Owner-only. Both endpoints must match the relationship types and tenant. Source cardinality means sources per target; target cardinality means targets per source. Revision 0 creates a new pair. Relinking uses its latest revision. Unlink permits retired endpoints for interrupted-detach repair.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "relationshipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "sourceObjectId",
                  "targetObjectId",
                  "revision"
                ],
                "properties": {
                  "sourceObjectId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "targetObjectId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "action": {
                    "enum": [
                      "link",
                      "unlink"
                    ],
                    "default": "link"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/record-identities": {
      "get": {
        "operationId": "list-record-identities",
        "summary": "Inspect member profile bindings",
        "description": "Owner-only. Returns identities for the specified account, including cleared bindings and their revisions. At most 500 bindings.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "userId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "mutate-record-identity",
        "summary": "Bind or clear member profile",
        "description": "Owner-only. Explicitly associates an active, unexpired member with an active profile record. One binding per account/ObjectType and one active account per profile record. Null objectId clears. Use revision 0 for a new binding.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "userId",
                  "objectTypeId",
                  "objectId",
                  "revision"
                ],
                "properties": {
                  "userId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "objectTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "objectId": {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^[a-f0-9]{24}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 0
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/queries/{queryId}/execute": {
      "post": {
        "operationId": "execute-dynamic-query",
        "summary": "Execute an authorized saved query",
        "description": "Revalidates typed literal AST, source/schema, filter-field readability, selected-role row/field access. Returns objects, readable fields, query ID/version, hasMore, nextCursor; no count. Maximum 100 rows, 2-second aggregates, no disk spill. Optional scalar output sorting has ID tie-breakers. Cursor binds query/version/sort and resolves sorted anchors under current access; removed anchors require refresh. Unsupported parameters/raw filters/operators are rejected. Query management alone grants no data access.",
        "x-access": "Active membership and selected-role data/group authorization",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "queryId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "default": 50
                  },
                  "after": {
                    "type": "string",
                    "maxLength": 2048
                  },
                  "sortFieldId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "sortDirection": {
                    "enum": [
                      "asc",
                      "desc"
                    ],
                    "default": "asc"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/groups": {
      "get": {
        "operationId": "list-dynamic-groups",
        "summary": "List authorized groups or owner configuration catalog",
        "description": "Default lists role-visible groups with readable source/output/filter fields. manage=1 is Owner-only and returns definitions plus query, field, and UserType choices. Maximum 200 active groups. Member runtime access requires an authorized View placement (viewId, placementKey, viewVersion); standalone Group preview is Owner-only. Member collection listings return no standalone Groups.",
        "x-access": "Active membership and selected-role data/group authorization",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "manage",
            "in": "query",
            "schema": {
              "enum": [
                "1"
              ],
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "save-dynamic-group",
        "summary": "Create, update, or retire a group",
        "description": "Owner-only. Save requires name/key/queryId/renderer/ordered fieldIds/createFieldIds/editableFieldIds/operations/userTypeIds; update also requires id/version. Remove uses id/version/action=remove. Read is mandatory; writable fields are visible subsets of query output. Keys stay reserved after retirement. Group settings narrow underlying data permissions. Versions and bounded atomic history protect changes; query/field/view dependencies are checked. Contextual groups accept bindingModel instead of mandatory query/field lists. Explicit fields/relationship write targets, per-UserType rules, required/optional contexts and source scopes are validated. Existing query-backed groups remain compatible; conversion is explicit. Optional icon selects a SourceIcon. View placement icon defaults to inheritance when absent/null; empty string hides it and a listed icon overrides it. Member runtime access requires an authorized View placement (viewId, placementKey, viewVersion); standalone Group preview is Owner-only. Member collection listings return no standalone Groups. Contextual Groups support renderer=sheet, sheetFormats, defaultSort and Group-owned navigationButtons/actionButtons/linkButtons. View inheritance can only narrow Group button grants.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "name",
                      "key",
                      "renderer",
                      "bindingModel"
                    ],
                    "properties": {
                      "id": {
                        "type": "string",
                        "pattern": "^[a-f0-9]{24}$"
                      },
                      "version": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "name": {
                        "type": "string",
                        "maxLength": 100
                      },
                      "key": {
                        "type": "string",
                        "pattern": "^[a-z][a-z0-9-]{0,63}$"
                      },
                      "renderer": {
                        "type": "string",
                        "enum": [
                          "table",
                          "form",
                          "sheet"
                        ],
                        "description": "Sheet renderer requires contextual bindings."
                      },
                      "bindingModel": {
                        "$ref": "#/components/schemas/ContextBindingModel"
                      },
                      "icon": {
                        "$ref": "#/components/schemas/SourceIcon"
                      },
                      "sheetFormats": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string",
                          "enum": [
                            "auto",
                            "text",
                            "number",
                            "currency",
                            "percent",
                            "date"
                          ]
                        },
                        "description": "Presentation-only format keyed by binding. Percentage values are fractions."
                      },
                      "navigationButtons": {
                        "type": "array",
                        "maxItems": 10,
                        "items": {
                          "type": "object"
                        },
                        "description": "Group-owned buttons inherited by View placements; see custom Group buttons guide for mappings and restrictions."
                      },
                      "actionButtons": {
                        "type": "array",
                        "maxItems": 10,
                        "items": {
                          "type": "object"
                        },
                        "description": "Group-owned buttons inherited by View placements; see custom Group buttons guide for mappings and restrictions."
                      },
                      "linkButtons": {
                        "type": "array",
                        "maxItems": 10,
                        "items": {
                          "type": "object"
                        },
                        "description": "Group-owned buttons inherited by View placements; see custom Group buttons guide for mappings and restrictions."
                      },
                      "description": {
                        "type": "string",
                        "description": "Plain-text summary, at most 4000 UTF-8 bytes."
                      },
                      "defaultSort": {
                        "type": "object",
                        "properties": {
                          "mode": {
                            "enum": [
                              "recordId",
                              "column",
                              "updatedAt"
                            ]
                          },
                          "column": {
                            "type": "string"
                          },
                          "direction": {
                            "enum": [
                              "asc",
                              "desc"
                            ]
                          }
                        },
                        "required": [
                          "mode"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string",
                        "pattern": "^[a-f0-9]{24}$"
                      },
                      "version": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "action": {
                        "enum": [
                          "save",
                          "remove"
                        ],
                        "default": "save"
                      },
                      "name": {
                        "type": "string",
                        "maxLength": 100
                      },
                      "key": {
                        "type": "string",
                        "pattern": "^[a-z][a-z0-9-]{0,63}$"
                      },
                      "queryId": {
                        "type": "string",
                        "pattern": "^[a-f0-9]{24}$"
                      },
                      "renderer": {
                        "enum": [
                          "table",
                          "form"
                        ]
                      },
                      "fieldIds": {
                        "type": "array",
                        "maxItems": 100,
                        "uniqueItems": true,
                        "items": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{24}$"
                        }
                      },
                      "createFieldIds": {
                        "type": "array",
                        "maxItems": 100,
                        "uniqueItems": true,
                        "items": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{24}$"
                        }
                      },
                      "editableFieldIds": {
                        "type": "array",
                        "maxItems": 100,
                        "uniqueItems": true,
                        "items": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{24}$"
                        }
                      },
                      "userTypeIds": {
                        "type": "array",
                        "maxItems": 100,
                        "uniqueItems": true,
                        "items": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{24}$"
                        }
                      },
                      "operations": {
                        "type": "array",
                        "uniqueItems": true,
                        "items": {
                          "enum": [
                            "read",
                            "create",
                            "update",
                            "delete"
                          ]
                        }
                      },
                      "icon": {
                        "$ref": "#/components/schemas/SourceIcon"
                      },
                      "description": {
                        "type": "string",
                        "description": "Plain-text summary, at most 4000 UTF-8 bytes."
                      },
                      "defaultSort": {
                        "type": "object",
                        "properties": {
                          "mode": {
                            "enum": [
                              "recordId",
                              "column",
                              "updatedAt"
                            ]
                          },
                          "column": {
                            "type": "string"
                          },
                          "direction": {
                            "enum": [
                              "asc",
                              "desc"
                            ]
                          }
                        },
                        "required": [
                          "mode"
                        ],
                        "additionalProperties": false
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/groups/{groupId}": {
      "get": {
        "operationId": "get-group-render-definition",
        "summary": "Get authorized table/form metadata",
        "description": "Returns group ID/name/renderer/version, objectTypeId, query ID/version, intersected operations, and ordered readable fields with canCreate/canUpdate flags and permitted defaults. Owner bypasses visibility but not group restrictions. Contextual groups require their declared inputs and optionally accept viewId/placementKey/viewVersion. Their row responses contain rows/values/cells and per-cell destination revisions; they accept limit 1–50 and an ObjectId after cursor. Contextual groups do not accept scalar sort parameters. Member runtime access requires an authorized View placement (viewId, placementKey, viewVersion); standalone Group preview is Owner-only. Member collection listings return no standalone Groups.",
        "x-access": "Active membership and selected-role data/group authorization",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "groupId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "contexts",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "JSON object of context names to record IDs; URL encode."
            }
          },
          {
            "name": "viewId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "placementKey",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,63}$"
            }
          },
          {
            "name": "viewVersion",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/groups/{groupId}/rows": {
      "get": {
        "operationId": "get-group-rows",
        "summary": "Run the group query with narrowing access",
        "description": "Returns the same page contract as query execution; role visibility, group projection, data/field/related-row policies apply. Request parameters bind to group and query versions. Contextual groups require their declared inputs and optionally accept viewId/placementKey/viewVersion. Their row responses contain rows/values/cells and per-cell destination revisions; they accept limit 1–50 and an ObjectId after cursor. Contextual groups do not accept scalar sort parameters. Summary mode returns authorized aggregates, scopeLabel and read-only drill-down; summary pagination uses 64-character bucket IDs. Member runtime access requires an authorized View placement (viewId, placementKey, viewVersion); standalone Group preview is Owner-only. Member collection listings return no standalone Groups. Contextual search and filters apply before pagination and intersect permissions. Configured defaultSort applies across pages. Contextual row pages default to 25 and allow up to 50; legacy query-only pages default to 50 and allow up to 100.",
        "x-access": "Active membership and selected-role data/group authorization",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "groupId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "required": false
          },
          {
            "name": "after",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 2048
            },
            "required": false
          },
          {
            "name": "sortFieldId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": false
          },
          {
            "name": "sortDirection",
            "in": "query",
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "default": "asc"
            },
            "required": false
          },
          {
            "name": "contexts",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "JSON object of context names to record IDs; URL encode."
            }
          },
          {
            "name": "viewId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "placementKey",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,63}$"
            }
          },
          {
            "name": "viewVersion",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "bucket",
            "in": "query",
            "description": "Returned summary bucket ID for read-only source drill-down.",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 200
            },
            "description": "Contextual groups with search enabled; authorized dataset search before pagination."
          },
          {
            "name": "filters",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 8192
            },
            "description": "URL-encoded JSON array of {key,logic:all|any,conditions:[{op,value,upper?}]}. Up to twenty readable columns, three conditions each; columns combine with AND. Requires filtering enabled; unavailable for summary results."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/groups/{groupId}/objects": {
      "post": {
        "operationId": "create-group-record",
        "summary": "Create a record through an editable group",
        "description": "Intersects group and data grants, validates fields/schema/defaults, and requires the new record to satisfy the saved query. Related-only creation is denied. Stale group/query versions return 409; field errors map to error.fields. Contextual groups support explicit anchor create/delete grants with groupVersion, contexts and optional viewId/placementKey/viewVersion. Creation requires a direct records source and no active scope. Summary groups reject writes. Member runtime access requires an authorized View placement (viewId, placementKey, viewVersion); standalone Group preview is Owner-only. Member collection listings return no standalone Groups.",
        "x-access": "Active membership and selected-role data/group authorization",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "groupId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "objectTypeId",
                  "data",
                  "groupVersion",
                  "queryVersion"
                ],
                "properties": {
                  "objectTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "data": {
                    "type": "object",
                    "description": "Immutable field keys and strict schema values."
                  },
                  "groupVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "queryVersion": {
                    "type": "integer",
                    "minimum": 1
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/groups/{groupId}/objects/{objectId}": {
      "post": {
        "operationId": "mutate-group-record",
        "summary": "Update or delete a record through a group",
        "description": "Existing record must satisfy current group query and role row policy. Group operations/fields narrow underlying grants. Updates may move records out of the query. Record/group/query revisions are checked; normal relationship deletion rules apply. Contextual groups support explicit anchor create/delete grants with groupVersion, contexts and optional viewId/placementKey/viewVersion. Creation requires a direct records source and no active scope. Summary groups reject writes. Member runtime access requires an authorized View placement (viewId, placementKey, viewVersion); standalone Group preview is Owner-only. Member collection listings return no standalone Groups.",
        "x-access": "Active membership and selected-role data/group authorization",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "groupId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "objectId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            },
            "required": true
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "revision",
                  "groupVersion",
                  "queryVersion"
                ],
                "properties": {
                  "revision": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "action": {
                    "enum": [
                      "update",
                      "delete"
                    ],
                    "default": "update"
                  },
                  "data": {
                    "type": "object",
                    "description": "Immutable field keys and strict schema values."
                  },
                  "groupVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "queryVersion": {
                    "type": "integer",
                    "minimum": 1
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/groups/{groupId}/bindings/{bindingKey}/options": {
      "get": {
        "operationId": "get-context-binding-options",
        "summary": "Get live relationship choices",
        "description": "Requires an editable declared relationship binding, parent update and explicit relationship-write grant. Runs the configured query with current target read/row/field access. Returns options, pagination, and queryVersion; no arbitrary source query is accepted. Member runtime access requires an authorized View placement (viewId, placementKey, viewVersion); standalone Group preview is Owner-only. Member collection listings return no standalone Groups.",
        "x-access": "Selected-role data, binding, context, and optional view-placement access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "bindingKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,63}$"
            }
          },
          {
            "name": "contexts",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "JSON object of context names to record IDs; URL encode."
            }
          },
          {
            "name": "viewId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "placementKey",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,63}$"
            }
          },
          {
            "name": "viewVersion",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "rowId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/groups/{groupId}/bindings/{bindingKey}/value": {
      "post": {
        "operationId": "save-context-binding",
        "summary": "Save one explicit field or relationship",
        "description": "Field writes require value and destination revision. Relationship writes require edgeRevision, expectedTargetObjectId, targetObjectId (or null), and queryVersion. The server resolves targets from the binding, rechecks current row/path/field permissions, assigned-profile conditions, live query membership, cardinality and revisions. Group/view versions are required as applicable. Replacement retires old before activating new; no multi-document transactional guarantee. Member runtime access requires an authorized View placement (viewId, placementKey, viewVersion); standalone Group preview is Owner-only. Member collection listings return no standalone Groups.",
        "x-access": "Selected-role data, binding, context, and optional view-placement access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "bindingKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9-]{0,63}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "rowId",
                  "groupVersion"
                ],
                "properties": {
                  "contexts": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    }
                  },
                  "rowId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "groupVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "viewId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "placementKey": {
                    "type": "string",
                    "pattern": "^[a-z][a-z0-9-]{0,63}$"
                  },
                  "viewVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "revision": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "value": {},
                  "edgeRevision": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "expectedTargetObjectId": {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^[a-f0-9]{24}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "targetObjectId": {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^[a-f0-9]{24}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "queryVersion": {
                    "type": "integer",
                    "minimum": 1
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/views": {
      "get": {
        "operationId": "list-context-views",
        "summary": "List views or owner configuration catalog",
        "description": "Returns role-visible summaries and required typed contexts. manage=1 returns Owner-only definitions. An empty context contract supports an all-records view.",
        "x-access": "Selected-role data, binding, context, and optional view-placement access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "manage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "save-context-view",
        "summary": "Create, update, or retire a DynamicView",
        "description": "Owner-only. Save requires name/key/contexts/userTypeIds/placements; updates require id/version. Declared view contexts are required. Required group inputs must map to matching types; optional inputs may remain unmapped. Placement restrictions narrow group permissions. Retirement uses id/version/action=remove. Optional icon selects a SourceIcon. View placement icon defaults to inheritance when absent/null; empty string hides it and a listed icon overrides it. Placements may inherit Group-owned buttons, hide them, narrow UserTypes or move them to row/toolbar/page display. Read-only placements deny action mutations. Search and filtering restrictions cannot enable capabilities prohibited by the Group.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "action": {
                    "enum": [
                      "save",
                      "remove"
                    ]
                  },
                  "name": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "key": {
                    "type": "string",
                    "pattern": "^[a-z][a-z0-9-]{0,63}$"
                  },
                  "contexts": {
                    "type": "array",
                    "maxItems": 4,
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "key",
                        "objectTypeId"
                      ],
                      "properties": {
                        "key": {
                          "type": "string",
                          "pattern": "^[a-z][a-z0-9-]{0,63}$"
                        },
                        "objectTypeId": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{24}$"
                        },
                        "required": {
                          "type": "boolean",
                          "default": true
                        }
                      }
                    }
                  },
                  "userTypeIds": {
                    "type": "array",
                    "maxItems": 100,
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    }
                  },
                  "placements": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "key",
                        "groupId",
                        "contextMap"
                      ],
                      "properties": {
                        "key": {
                          "type": "string",
                          "pattern": "^[a-z][a-z0-9-]{0,63}$"
                        },
                        "groupId": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{24}$"
                        },
                        "contextMap": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string",
                            "pattern": "^[a-z][a-z0-9-]{0,63}$"
                          }
                        },
                        "restriction": {
                          "type": "object",
                          "additionalProperties": false,
                          "properties": {
                            "readBindingKeys": {
                              "type": "array",
                              "maxItems": 40,
                              "uniqueItems": true,
                              "items": {
                                "type": "string",
                                "pattern": "^[a-z][a-z0-9-]{0,63}$"
                              }
                            },
                            "editBindingKeys": {
                              "type": "array",
                              "maxItems": 40,
                              "uniqueItems": true,
                              "items": {
                                "type": "string",
                                "pattern": "^[a-z][a-z0-9-]{0,63}$"
                              }
                            },
                            "readOnly": {
                              "type": "boolean"
                            },
                            "userTypeIds": {
                              "type": "array",
                              "maxItems": 100,
                              "items": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{24}$"
                              }
                            },
                            "searchEnabled": {
                              "type": "boolean",
                              "description": "May narrow, never expand Group permissions."
                            },
                            "filterEnabled": {
                              "type": "boolean",
                              "description": "May narrow, never expand Group permissions."
                            },
                            "allowCreate": {
                              "type": "boolean",
                              "description": "May narrow, never expand Group permissions."
                            },
                            "allowDelete": {
                              "type": "boolean",
                              "description": "May narrow, never expand Group permissions."
                            },
                            "createBindingKeys": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "icon": {
                          "$ref": "#/components/schemas/SourceIcon"
                        },
                        "title": {
                          "type": "string",
                          "description": "Optional plain-text section heading, at most 200 UTF-8 bytes."
                        },
                        "buttons": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          },
                          "description": "Existing View-owned navigation buttons."
                        },
                        "actionButtons": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          },
                          "description": "Existing View-owned action buttons."
                        },
                        "inheritGroupButtons": {
                          "type": "boolean",
                          "default": true
                        },
                        "buttonOverrides": {
                          "type": "object",
                          "description": "Keys are navigation:<key>, action:<key> or link:<key>. Restrictions intersect Group grants.",
                          "additionalProperties": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                              "hidden": {
                                "type": "boolean"
                              },
                              "display": {
                                "enum": [
                                  "row",
                                  "toolbar",
                                  "page"
                                ]
                              },
                              "userTypeIds": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "pattern": "^[a-f0-9]{24}$"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "icon": {
                    "$ref": "#/components/schemas/SourceIcon"
                  },
                  "description": {
                    "type": "string",
                    "description": "Plain text, at most 4000 UTF-8 bytes."
                  },
                  "appearance": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "backgroundColor": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "pattern": "^#[a-fA-F0-9]{6}$"
                      },
                      "borderColor": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "pattern": "^#[a-fA-F0-9]{6}$"
                      },
                      "density": {
                        "enum": [
                          "compact",
                          "comfortable"
                        ]
                      },
                      "showBackButton": {
                        "type": "boolean"
                      },
                      "showTitle": {
                        "type": "boolean"
                      },
                      "showFavorite": {
                        "type": "boolean"
                      }
                    }
                  },
                  "actionButtons": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    },
                    "description": "Independent View page actions; see bindings and Views guide."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/views/{viewId}": {
      "get": {
        "operationId": "render-context-view",
        "summary": "Resolve authorized reusable group placements",
        "description": "Requires all declared context IDs before rendering. Validates role, tenant and row access, maps named contexts, and applies per-placement read/edit/visibility restrictions. Context IDs never expand underlying data access.",
        "x-access": "Selected-role data, binding, context, and optional view-placement access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "viewId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "contexts",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "JSON object of context names to record IDs; URL encode."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/object-types/{objectTypeId}/records": {
      "get": {
        "summary": "Owner Records: List authorized records",
        "description": "Requires selected Owner role. ObjectType is fixed by the path. Collection GET includes schema metadata. Existing record validation and revision rules apply.",
        "x-access": "Active member; selected-role operation, row, and field access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectTypeId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "operationId": "get-v1-organizations-organizationId-object-types-objectTypeId-records"
      },
      "post": {
        "summary": "Owner Records: Create a record",
        "description": "Requires selected Owner role. ObjectType is fixed by the path. Collection GET includes schema metadata. Existing record validation and revision rules apply.",
        "x-access": "Active member; selected-role operation, row, and field access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "objectTypeId",
                  "data"
                ],
                "properties": {
                  "objectTypeId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "data": {
                    "type": "object",
                    "description": "Immutable field keys with strictly typed schema values. Unknown or unauthorized fields are rejected."
                  },
                  "action": {
                    "const": "create"
                  }
                }
              }
            }
          }
        },
        "operationId": "post-v1-organizations-organizationId-object-types-objectTypeId-records"
      }
    },
    "/v1/organizations/{organizationId}/object-types/{objectTypeId}/records/{objectId}": {
      "post": {
        "summary": "Owner Records: Update or soft-delete a record",
        "description": "Requires selected Owner role. ObjectType is fixed by the path. Collection GET includes schema metadata. Existing record validation and revision rules apply.",
        "x-access": "Active member; selected-role operation, row, and field access",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "revision",
                      "data"
                    ],
                    "properties": {
                      "revision": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "action": {
                        "const": "update"
                      },
                      "data": {
                        "type": "object",
                        "description": "Immutable field keys with strictly typed schema values. Unknown or unauthorized fields are rejected."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "revision",
                      "action"
                    ],
                    "properties": {
                      "revision": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "action": {
                        "const": "delete"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "operationId": "post-v1-organizations-organizationId-object-types-objectTypeId-records-objectId"
      }
    },
    "/v1/organizations/{organizationId}/favorites": {
      "get": {
        "summary": "Read personal favorites and dashboard pins visible to the selected role",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "favoriteGroups, favoriteViews, pinnedGroups and pinnedViews arrays of definition IDs. Current user and organization only."
          }
        },
        "operationId": "get-v1-organizations-organizationId-favorites"
      },
      "post": {
        "summary": "Set a personal favorite or dashboard pin",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "Authenticated active member; CSRF required. Does not grant data access. Each list is bounded to 200 IDs. Setting false can remove a formerly visible source.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "kind",
                  "id",
                  "setting",
                  "enabled"
                ],
                "additionalProperties": false,
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "groups",
                      "views"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "setting": {
                    "type": "string",
                    "enum": [
                      "favorite",
                      "pinned"
                    ]
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Preference saved"
          },
          "404": {
            "description": "Source unavailable to selected role"
          },
          "422": {
            "description": "Invalid input or list limit"
          }
        },
        "operationId": "post-v1-organizations-organizationId-favorites"
      }
    },
    "/v1/organizations/{organizationId}/actions": {
      "get": {
        "operationId": "get-v1-organizations-organizationId-actions",
        "summary": "List DynamicActions",
        "description": "Returns active versioned definitions including inputs, operation, conditions and allowed UserTypes. No query parameters.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "post-v1-organizations-organizationId-actions",
        "summary": "Configure a DynamicAction",
        "description": "Create, update or retire an explicit action. Updates and retirement require id/version; referenced action contracts are dependency-protected. Operation creates one record with up to four connections or updates one existing record. See bindings and Views guide for invocation.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "save",
                      "remove"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "inputs": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "operation": {
                    "type": "object"
                  },
                  "conditions": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "userTypeIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/actions/{actionId}/prepare": {
      "post": {
        "operationId": "post-v1-organizations-organizationId-actions-actionId-prepare",
        "summary": "Prepare authorized action inputs",
        "description": "Requires a valid authorized View/button invocation and current action/View/Group versions. Returns action fields, prompted inputs and resolved revisions.",
        "x-access": "Authorized View/button and action/data grants",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "actionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "viewId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "viewVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "placementKey": {
                    "type": "string"
                  },
                  "groupVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "contexts": {
                    "type": "object"
                  },
                  "buttonKey": {
                    "type": "string"
                  },
                  "rowId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "rowRevision": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "actionVersion": {
                    "type": "integer",
                    "minimum": 1
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/actions/{actionId}/options": {
      "post": {
        "operationId": "post-v1-organizations-organizationId-actions-actionId-options",
        "summary": "List authorized prompted record choices",
        "description": "Requires a valid authorized View/button invocation and current action/View/Group versions. Returns options, hasMore and nextCursor; pages contain up to 25 authorized records.",
        "x-access": "Authorized View/button and action/data grants",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "actionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "viewId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "viewVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "placementKey": {
                    "type": "string"
                  },
                  "groupVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "contexts": {
                    "type": "object"
                  },
                  "buttonKey": {
                    "type": "string"
                  },
                  "rowId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "rowRevision": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "actionVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "inputKey": {
                    "type": "string"
                  },
                  "after": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/actions/{actionId}/execute": {
      "post": {
        "operationId": "post-v1-organizations-organizationId-actions-actionId-execute",
        "summary": "Execute an explicit DynamicAction",
        "description": "Requires a valid authorized View/button invocation and current action/View/Group versions. Requires current revisions and an idempotency requestId; returns result. Conditions, data/field/connection grants and Group/View restrictions are rechecked.",
        "x-access": "Authorized View/button and action/data grants",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "actionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "viewId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "viewVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "placementKey": {
                    "type": "string"
                  },
                  "groupVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "contexts": {
                    "type": "object"
                  },
                  "buttonKey": {
                    "type": "string"
                  },
                  "rowId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "rowRevision": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "actionVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "records": {
                    "type": "object"
                  },
                  "values": {
                    "type": "object"
                  },
                  "revisions": {
                    "type": "object"
                  },
                  "requestId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/navigations": {
      "get": {
        "operationId": "get-v1-organizations-organizationId-navigations",
        "summary": "List reusable View navigations",
        "description": "Returns active navigation definitions. No query parameters.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "post-v1-organizations-organizationId-navigations",
        "summary": "Configure reusable View navigation",
        "description": "Inputs must exactly match destination View contexts and types. Updates require id/version. Retirement is blocked while referenced.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "save",
                      "remove"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "key": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "openView"
                    ]
                  },
                  "targetViewId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "inputs": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/record-connections": {
      "get": {
        "operationId": "get-v1-organizations-organizationId-record-connections",
        "summary": "Review current record connections",
        "description": "Returns connections, hasMore and nextCursor. Includes endpoint labels, revisions, availability, canDisconnect and canModify. Mutations use relationship edges routes; this overview is read-only.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "relationshipId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "after",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/object-types/{objectTypeId}/dependencies": {
      "get": {
        "operationId": "get-v1-organizations-organizationId-object-types-objectTypeId-dependencies",
        "summary": "Review ObjectType dependencies",
        "description": "Returns dependency information for an active ObjectType, filtered by management permissions.",
        "x-access": "ObjectType management permission",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{organizationId}/object-types/{objectTypeId}/field-migrations": {
      "get": {
        "operationId": "get-v1-organizations-organizationId-object-types-objectTypeId-field-migrations",
        "summary": "Review preserved field values and migrations",
        "description": "Returns fields, relationships, migrations, fieldKinds, optionQueries and relationshipSources. Includes active/retired fields and recent non-preview jobs.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "post-v1-organizations-organizationId-object-types-objectTypeId-field-migrations",
        "summary": "Choose, preview or apply a preserved-value migration",
        "description": "Use action=choices for replacement choices, preview to validate source/destination settings, then apply with only action, previewId and previewToken. Apply requires an unexpired actor-bound preview and current versions; source values remain preserved. See ObjectTypes and fields guide for replacement and conflict behavior.",
        "x-access": "Owner mode",
        "security": [
          {
            "SessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "X-CSRF-Token",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "CSRF, operation, field, role, or membership access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource absent or row access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Revision, schema, cardinality, dependency, identity, or concurrent mutation conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request or record too large.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "JSON content required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input; record validation errors may include error.fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Success"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "action": {
                    "type": "string",
                    "enum": [
                      "choices",
                      "preview",
                      "apply"
                    ]
                  },
                  "sourceId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "sourceVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "targetId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "targetVersion": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "conflictPolicy": {
                    "type": "string"
                  },
                  "retireAfter": {
                    "type": "boolean"
                  },
                  "previewId": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{24}$"
                  },
                  "previewToken": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  },
                  "targetKind": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "mappings": {
                    "type": "array",
                    "items": {}
                  },
                  "newField": {
                    "type": "object"
                  },
                  "sourceKind": {
                    "type": "string",
                    "enum": [
                      "field",
                      "relationship"
                    ]
                  },
                  "sourceFrom": {
                    "type": "string"
                  }
                },
                "required": [
                  "action"
                ]
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "SessionCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "dt_session",
        "description": "API-host HttpOnly session cookie. GET auth/me establishes an anonymous session; privileged routes require a signed-in active user."
      },
      "CsrfHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "X-CSRF-Token",
        "description": "Current csrfToken from auth/me or the latest authentication/account response."
      }
    },
    "schemas": {
      "Success": {
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {},
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error",
          "meta"
        ],
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ]
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      },
      "ContextBindingModel": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "contexts",
          "source",
          "bindings",
          "permissions"
        ],
        "properties": {
          "contexts": {
            "type": "array",
            "maxItems": 4,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "key",
                "objectTypeId"
              ],
              "properties": {
                "key": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9-]{0,63}$"
                },
                "objectTypeId": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{24}$"
                },
                "required": {
                  "type": "boolean",
                  "default": true
                }
              }
            }
          },
          "source": {
            "type": "object",
            "description": "records: objectTypeId, optional queryId/scope. query: queryId, optional scope. context/related: context and explicit path, optional queryId. Scope is an optional context-to-row filter; omission of optional context shows all authorized rows.",
            "properties": {
              "kind": {
                "enum": [
                  "records",
                  "query",
                  "context",
                  "related"
                ]
              },
              "objectTypeId": {
                "type": "string",
                "pattern": "^[a-f0-9]{24}$"
              },
              "queryId": {
                "type": "string",
                "pattern": "^[a-f0-9]{24}$"
              },
              "context": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9-]{0,63}$"
              },
              "path": {
                "type": "array",
                "maxItems": 2,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "relationshipId",
                    "from"
                  ],
                  "properties": {
                    "relationshipId": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    },
                    "from": {
                      "enum": [
                        "source",
                        "target"
                      ]
                    }
                  }
                }
              },
              "scope": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "context"
                ],
                "properties": {
                  "context": {
                    "type": "string",
                    "pattern": "^[a-z][a-z0-9-]{0,63}$"
                  },
                  "path": {
                    "type": "array",
                    "maxItems": 2,
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "relationshipId",
                        "from"
                      ],
                      "properties": {
                        "relationshipId": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{24}$"
                        },
                        "from": {
                          "enum": [
                            "source",
                            "target"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "bindings": {
            "type": "array",
            "minItems": 1,
            "maxItems": 40,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "key",
                "label",
                "source"
              ],
              "properties": {
                "key": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9-]{0,63}$"
                },
                "label": {
                  "type": "string",
                  "maxLength": 100
                },
                "source": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "context",
                    "fieldId"
                  ],
                  "properties": {
                    "context": {
                      "type": "string",
                      "pattern": "^[a-z][a-z0-9-]{0,63}$"
                    },
                    "path": {
                      "type": "array",
                      "maxItems": 2,
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "relationshipId",
                          "from"
                        ],
                        "properties": {
                          "relationshipId": {
                            "type": "string",
                            "pattern": "^[a-f0-9]{24}$"
                          },
                          "from": {
                            "enum": [
                              "source",
                              "target"
                            ]
                          }
                        }
                      }
                    },
                    "fieldId": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    }
                  }
                },
                "write": {
                  "type": "object",
                  "description": "Field write: kind=field only, writing to the displayed binding. Relationship write: kind=relationship plus parent reference, relationshipId/from, optionsQueryId and projected scalar labelFieldId. The display path must match the parent plus that singular relation.",
                  "properties": {
                    "kind": {
                      "enum": [
                        "field",
                        "relationship"
                      ]
                    },
                    "parent": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "context"
                      ],
                      "properties": {
                        "context": {
                          "type": "string",
                          "pattern": "^[a-z][a-z0-9-]{0,63}$"
                        },
                        "path": {
                          "type": "array",
                          "maxItems": 2,
                          "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                              "relationshipId",
                              "from"
                            ],
                            "properties": {
                              "relationshipId": {
                                "type": "string",
                                "pattern": "^[a-f0-9]{24}$"
                              },
                              "from": {
                                "enum": [
                                  "source",
                                  "target"
                                ]
                              }
                            }
                          }
                        }
                      }
                    },
                    "relationshipId": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    },
                    "from": {
                      "enum": [
                        "source",
                        "target"
                      ]
                    },
                    "optionsQueryId": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    },
                    "labelFieldId": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{24}$"
                    }
                  }
                },
                "required": {
                  "type": "boolean",
                  "default": false,
                  "description": "Additional required validation for field writes through this group; schema required cannot be relaxed."
                }
              }
            }
          },
          "permissions": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "userTypeId",
                "readBindingKeys",
                "editBindingKeys"
              ],
              "properties": {
                "userTypeId": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{24}$"
                },
                "readBindingKeys": {
                  "type": "array",
                  "maxItems": 40,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z][a-z0-9-]{0,63}$"
                  }
                },
                "editBindingKeys": {
                  "type": "array",
                  "maxItems": 40,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z][a-z0-9-]{0,63}$"
                  }
                },
                "conditions": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "context"
                    ],
                    "properties": {
                      "context": {
                        "type": "string",
                        "pattern": "^[a-z][a-z0-9-]{0,63}$"
                      },
                      "path": {
                        "type": "array",
                        "maxItems": 2,
                        "items": {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "relationshipId",
                            "from"
                          ],
                          "properties": {
                            "relationshipId": {
                              "type": "string",
                              "pattern": "^[a-f0-9]{24}$"
                            },
                            "from": {
                              "enum": [
                                "source",
                                "target"
                              ]
                            }
                          }
                        }
                      }
                    }
                  },
                  "description": "Per editable binding, explicit context/path ending at the UserType profile record; must reach the signed-in member’s owner-bound profile."
                }
              }
            }
          },
          "recordOperations": {
            "type": "object",
            "properties": {
              "create": {
                "type": "boolean",
                "default": false
              },
              "delete": {
                "type": "boolean",
                "default": false
              }
            }
          },
          "summary": {
            "type": "object",
            "description": "Read-only aggregates after permissions. Maximum 1000 source records and 200 buckets; overflow fails without partial results.",
            "properties": {
              "groupBy": {
                "type": "array",
                "maxItems": 3,
                "items": {
                  "type": "string"
                }
              },
              "metrics": {
                "type": "array",
                "minItems": 1,
                "maxItems": 8,
                "items": {
                  "type": "object",
                  "required": [
                    "key",
                    "label",
                    "op"
                  ],
                  "properties": {
                    "key": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "op": {
                      "type": "string",
                      "enum": [
                        "avg",
                        "count",
                        "sum",
                        "min",
                        "max"
                      ]
                    },
                    "binding": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "searchEnabled": {
            "type": "boolean",
            "default": false
          },
          "searchPlaceholder": {
            "type": "string",
            "maxLength": 200
          },
          "filterEnabled": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "SourceIcon": {
        "type": "string",
        "enum": [
          "",
          "0-circle",
          "0-circle-fill",
          "0-square",
          "0-square-fill",
          "1-circle",
          "1-circle-fill",
          "1-square",
          "1-square-fill",
          "123",
          "2-circle",
          "2-circle-fill",
          "2-square",
          "2-square-fill",
          "3-circle",
          "3-circle-fill",
          "3-square",
          "3-square-fill",
          "4-circle",
          "4-circle-fill",
          "4-square",
          "4-square-fill",
          "5-circle",
          "5-circle-fill",
          "5-square",
          "5-square-fill",
          "6-circle",
          "6-circle-fill",
          "6-square",
          "6-square-fill",
          "7-circle",
          "7-circle-fill",
          "7-square",
          "7-square-fill",
          "8-circle",
          "8-circle-fill",
          "8-square",
          "8-square-fill",
          "9-circle",
          "9-circle-fill",
          "9-square",
          "9-square-fill",
          "activity",
          "airplane",
          "airplane-engines",
          "airplane-engines-fill",
          "airplane-fill",
          "alarm",
          "alarm-fill",
          "alexa",
          "align-bottom",
          "align-center",
          "align-end",
          "align-middle",
          "align-start",
          "align-top",
          "alipay",
          "alphabet",
          "alphabet-uppercase",
          "alt",
          "amazon",
          "amd",
          "android",
          "android2",
          "anthropic",
          "app",
          "app-indicator",
          "apple",
          "apple-music",
          "archive",
          "archive-fill",
          "arrow-90deg-down",
          "arrow-90deg-left",
          "arrow-90deg-right",
          "arrow-90deg-up",
          "arrow-bar-down",
          "arrow-bar-left",
          "arrow-bar-right",
          "arrow-bar-up",
          "arrow-clockwise",
          "arrow-counterclockwise",
          "arrow-down",
          "arrow-down-circle",
          "arrow-down-circle-fill",
          "arrow-down-left",
          "arrow-down-left-circle",
          "arrow-down-left-circle-fill",
          "arrow-down-left-square",
          "arrow-down-left-square-fill",
          "arrow-down-right",
          "arrow-down-right-circle",
          "arrow-down-right-circle-fill",
          "arrow-down-right-square",
          "arrow-down-right-square-fill",
          "arrow-down-short",
          "arrow-down-square",
          "arrow-down-square-fill",
          "arrow-down-up",
          "arrow-left",
          "arrow-left-circle",
          "arrow-left-circle-fill",
          "arrow-left-right",
          "arrow-left-short",
          "arrow-left-square",
          "arrow-left-square-fill",
          "arrow-repeat",
          "arrow-return-left",
          "arrow-return-right",
          "arrow-right",
          "arrow-right-circle",
          "arrow-right-circle-fill",
          "arrow-right-short",
          "arrow-right-square",
          "arrow-right-square-fill",
          "arrow-through-heart",
          "arrow-through-heart-fill",
          "arrow-up",
          "arrow-up-circle",
          "arrow-up-circle-fill",
          "arrow-up-left",
          "arrow-up-left-circle",
          "arrow-up-left-circle-fill",
          "arrow-up-left-square",
          "arrow-up-left-square-fill",
          "arrow-up-right",
          "arrow-up-right-circle",
          "arrow-up-right-circle-fill",
          "arrow-up-right-square",
          "arrow-up-right-square-fill",
          "arrow-up-short",
          "arrow-up-square",
          "arrow-up-square-fill",
          "arrows",
          "arrows-angle-contract",
          "arrows-angle-expand",
          "arrows-collapse",
          "arrows-collapse-vertical",
          "arrows-expand",
          "arrows-expand-vertical",
          "arrows-fullscreen",
          "arrows-move",
          "arrows-vertical",
          "aspect-ratio",
          "aspect-ratio-fill",
          "asterisk",
          "at",
          "award",
          "award-fill",
          "back",
          "backpack",
          "backpack-fill",
          "backpack2",
          "backpack2-fill",
          "backpack3",
          "backpack3-fill",
          "backpack4",
          "backpack4-fill",
          "backspace",
          "backspace-fill",
          "backspace-reverse",
          "backspace-reverse-fill",
          "badge-3d",
          "badge-3d-fill",
          "badge-4k",
          "badge-4k-fill",
          "badge-8k",
          "badge-8k-fill",
          "badge-ad",
          "badge-ad-fill",
          "badge-ar",
          "badge-ar-fill",
          "badge-cc",
          "badge-cc-fill",
          "badge-hd",
          "badge-hd-fill",
          "badge-sd",
          "badge-sd-fill",
          "badge-tm",
          "badge-tm-fill",
          "badge-vo",
          "badge-vo-fill",
          "badge-vr",
          "badge-vr-fill",
          "badge-wc",
          "badge-wc-fill",
          "bag",
          "bag-check",
          "bag-check-fill",
          "bag-dash",
          "bag-dash-fill",
          "bag-fill",
          "bag-heart",
          "bag-heart-fill",
          "bag-plus",
          "bag-plus-fill",
          "bag-x",
          "bag-x-fill",
          "balloon",
          "balloon-fill",
          "balloon-heart",
          "balloon-heart-fill",
          "ban",
          "ban-fill",
          "bandaid",
          "bandaid-fill",
          "bank",
          "bank2",
          "bar-chart",
          "bar-chart-fill",
          "bar-chart-line",
          "bar-chart-line-fill",
          "bar-chart-steps",
          "basket",
          "basket-fill",
          "basket2",
          "basket2-fill",
          "basket3",
          "basket3-fill",
          "battery",
          "battery-charging",
          "battery-full",
          "battery-half",
          "battery-low",
          "beaker",
          "beaker-fill",
          "behance",
          "bell",
          "bell-fill",
          "bell-slash",
          "bell-slash-fill",
          "bezier",
          "bezier2",
          "bicycle",
          "bing",
          "binoculars",
          "binoculars-fill",
          "blockquote-left",
          "blockquote-right",
          "bluesky",
          "bluetooth",
          "body-text",
          "book",
          "book-fill",
          "book-half",
          "bookmark",
          "bookmark-check",
          "bookmark-check-fill",
          "bookmark-dash",
          "bookmark-dash-fill",
          "bookmark-fill",
          "bookmark-heart",
          "bookmark-heart-fill",
          "bookmark-plus",
          "bookmark-plus-fill",
          "bookmark-star",
          "bookmark-star-fill",
          "bookmark-x",
          "bookmark-x-fill",
          "bookmarks",
          "bookmarks-fill",
          "bookshelf",
          "boombox",
          "boombox-fill",
          "bootstrap",
          "bootstrap-fill",
          "bootstrap-reboot",
          "border",
          "border-all",
          "border-bottom",
          "border-center",
          "border-inner",
          "border-left",
          "border-middle",
          "border-outer",
          "border-right",
          "border-style",
          "border-top",
          "border-width",
          "bounding-box",
          "bounding-box-circles",
          "box",
          "box-arrow-down",
          "box-arrow-down-left",
          "box-arrow-down-right",
          "box-arrow-in-down",
          "box-arrow-in-down-left",
          "box-arrow-in-down-right",
          "box-arrow-in-left",
          "box-arrow-in-right",
          "box-arrow-in-up",
          "box-arrow-in-up-left",
          "box-arrow-in-up-right",
          "box-arrow-left",
          "box-arrow-right",
          "box-arrow-up",
          "box-arrow-up-left",
          "box-arrow-up-right",
          "box-fill",
          "box-seam",
          "box-seam-fill",
          "box2",
          "box2-fill",
          "box2-heart",
          "box2-heart-fill",
          "boxes",
          "braces",
          "braces-asterisk",
          "bricks",
          "briefcase",
          "briefcase-fill",
          "brightness-alt-high",
          "brightness-alt-high-fill",
          "brightness-alt-low",
          "brightness-alt-low-fill",
          "brightness-high",
          "brightness-high-fill",
          "brightness-low",
          "brightness-low-fill",
          "brilliance",
          "broadcast",
          "broadcast-pin",
          "browser-chrome",
          "browser-edge",
          "browser-firefox",
          "browser-safari",
          "brush",
          "brush-fill",
          "bucket",
          "bucket-fill",
          "bug",
          "bug-fill",
          "building",
          "building-add",
          "building-check",
          "building-dash",
          "building-down",
          "building-exclamation",
          "building-fill",
          "building-fill-add",
          "building-fill-check",
          "building-fill-dash",
          "building-fill-down",
          "building-fill-exclamation",
          "building-fill-gear",
          "building-fill-lock",
          "building-fill-slash",
          "building-fill-up",
          "building-fill-x",
          "building-gear",
          "building-lock",
          "building-slash",
          "building-up",
          "building-x",
          "buildings",
          "buildings-fill",
          "bullseye",
          "bus-front",
          "bus-front-fill",
          "c-circle",
          "c-circle-fill",
          "c-square",
          "c-square-fill",
          "cake",
          "cake-fill",
          "cake2",
          "cake2-fill",
          "calculator",
          "calculator-fill",
          "calendar",
          "calendar-check",
          "calendar-check-fill",
          "calendar-date",
          "calendar-date-fill",
          "calendar-day",
          "calendar-day-fill",
          "calendar-event",
          "calendar-event-fill",
          "calendar-fill",
          "calendar-heart",
          "calendar-heart-fill",
          "calendar-minus",
          "calendar-minus-fill",
          "calendar-month",
          "calendar-month-fill",
          "calendar-plus",
          "calendar-plus-fill",
          "calendar-range",
          "calendar-range-fill",
          "calendar-week",
          "calendar-week-fill",
          "calendar-x",
          "calendar-x-fill",
          "calendar2",
          "calendar2-check",
          "calendar2-check-fill",
          "calendar2-date",
          "calendar2-date-fill",
          "calendar2-day",
          "calendar2-day-fill",
          "calendar2-event",
          "calendar2-event-fill",
          "calendar2-fill",
          "calendar2-heart",
          "calendar2-heart-fill",
          "calendar2-minus",
          "calendar2-minus-fill",
          "calendar2-month",
          "calendar2-month-fill",
          "calendar2-plus",
          "calendar2-plus-fill",
          "calendar2-range",
          "calendar2-range-fill",
          "calendar2-week",
          "calendar2-week-fill",
          "calendar2-x",
          "calendar2-x-fill",
          "calendar3",
          "calendar3-event",
          "calendar3-event-fill",
          "calendar3-fill",
          "calendar3-range",
          "calendar3-range-fill",
          "calendar3-week",
          "calendar3-week-fill",
          "calendar4",
          "calendar4-event",
          "calendar4-range",
          "calendar4-week",
          "camera",
          "camera-fill",
          "camera-reels",
          "camera-reels-fill",
          "camera-video",
          "camera-video-fill",
          "camera-video-off",
          "camera-video-off-fill",
          "camera2",
          "capslock",
          "capslock-fill",
          "capsule",
          "capsule-pill",
          "car-front",
          "car-front-fill",
          "card-checklist",
          "card-heading",
          "card-image",
          "card-list",
          "card-text",
          "caret-down",
          "caret-down-fill",
          "caret-down-square",
          "caret-down-square-fill",
          "caret-left",
          "caret-left-fill",
          "caret-left-square",
          "caret-left-square-fill",
          "caret-right",
          "caret-right-fill",
          "caret-right-square",
          "caret-right-square-fill",
          "caret-up",
          "caret-up-fill",
          "caret-up-square",
          "caret-up-square-fill",
          "cart",
          "cart-check",
          "cart-check-fill",
          "cart-dash",
          "cart-dash-fill",
          "cart-fill",
          "cart-plus",
          "cart-plus-fill",
          "cart-x",
          "cart-x-fill",
          "cart2",
          "cart3",
          "cart4",
          "cash",
          "cash-coin",
          "cash-stack",
          "cassette",
          "cassette-fill",
          "cast",
          "cc-circle",
          "cc-circle-fill",
          "cc-square",
          "cc-square-fill",
          "chat",
          "chat-dots",
          "chat-dots-fill",
          "chat-fill",
          "chat-heart",
          "chat-heart-fill",
          "chat-left",
          "chat-left-dots",
          "chat-left-dots-fill",
          "chat-left-fill",
          "chat-left-heart",
          "chat-left-heart-fill",
          "chat-left-quote",
          "chat-left-quote-fill",
          "chat-left-text",
          "chat-left-text-fill",
          "chat-quote",
          "chat-quote-fill",
          "chat-right",
          "chat-right-dots",
          "chat-right-dots-fill",
          "chat-right-fill",
          "chat-right-heart",
          "chat-right-heart-fill",
          "chat-right-quote",
          "chat-right-quote-fill",
          "chat-right-text",
          "chat-right-text-fill",
          "chat-square",
          "chat-square-dots",
          "chat-square-dots-fill",
          "chat-square-fill",
          "chat-square-heart",
          "chat-square-heart-fill",
          "chat-square-quote",
          "chat-square-quote-fill",
          "chat-square-text",
          "chat-square-text-fill",
          "chat-text",
          "chat-text-fill",
          "check",
          "check-all",
          "check-circle",
          "check-circle-fill",
          "check-lg",
          "check-square",
          "check-square-fill",
          "check2",
          "check2-all",
          "check2-circle",
          "check2-square",
          "chevron-bar-contract",
          "chevron-bar-down",
          "chevron-bar-expand",
          "chevron-bar-left",
          "chevron-bar-right",
          "chevron-bar-up",
          "chevron-compact-down",
          "chevron-compact-left",
          "chevron-compact-right",
          "chevron-compact-up",
          "chevron-contract",
          "chevron-double-down",
          "chevron-double-left",
          "chevron-double-right",
          "chevron-double-up",
          "chevron-down",
          "chevron-expand",
          "chevron-left",
          "chevron-right",
          "chevron-up",
          "circle",
          "circle-fill",
          "circle-half",
          "circle-square",
          "claude",
          "clipboard",
          "clipboard-check",
          "clipboard-check-fill",
          "clipboard-data",
          "clipboard-data-fill",
          "clipboard-fill",
          "clipboard-heart",
          "clipboard-heart-fill",
          "clipboard-minus",
          "clipboard-minus-fill",
          "clipboard-plus",
          "clipboard-plus-fill",
          "clipboard-pulse",
          "clipboard-x",
          "clipboard-x-fill",
          "clipboard2",
          "clipboard2-check",
          "clipboard2-check-fill",
          "clipboard2-data",
          "clipboard2-data-fill",
          "clipboard2-fill",
          "clipboard2-heart",
          "clipboard2-heart-fill",
          "clipboard2-minus",
          "clipboard2-minus-fill",
          "clipboard2-plus",
          "clipboard2-plus-fill",
          "clipboard2-pulse",
          "clipboard2-pulse-fill",
          "clipboard2-x",
          "clipboard2-x-fill",
          "clock",
          "clock-fill",
          "clock-history",
          "cloud",
          "cloud-arrow-down",
          "cloud-arrow-down-fill",
          "cloud-arrow-up",
          "cloud-arrow-up-fill",
          "cloud-check",
          "cloud-check-fill",
          "cloud-download",
          "cloud-download-fill",
          "cloud-drizzle",
          "cloud-drizzle-fill",
          "cloud-fill",
          "cloud-fog",
          "cloud-fog-fill",
          "cloud-fog2",
          "cloud-fog2-fill",
          "cloud-hail",
          "cloud-hail-fill",
          "cloud-haze",
          "cloud-haze-fill",
          "cloud-haze2",
          "cloud-haze2-fill",
          "cloud-lightning",
          "cloud-lightning-fill",
          "cloud-lightning-rain",
          "cloud-lightning-rain-fill",
          "cloud-minus",
          "cloud-minus-fill",
          "cloud-moon",
          "cloud-moon-fill",
          "cloud-plus",
          "cloud-plus-fill",
          "cloud-rain",
          "cloud-rain-fill",
          "cloud-rain-heavy",
          "cloud-rain-heavy-fill",
          "cloud-slash",
          "cloud-slash-fill",
          "cloud-sleet",
          "cloud-sleet-fill",
          "cloud-snow",
          "cloud-snow-fill",
          "cloud-sun",
          "cloud-sun-fill",
          "cloud-upload",
          "cloud-upload-fill",
          "clouds",
          "clouds-fill",
          "cloudy",
          "cloudy-fill",
          "code",
          "code-slash",
          "code-square",
          "coin",
          "collection",
          "collection-fill",
          "collection-play",
          "collection-play-fill",
          "columns",
          "columns-gap",
          "command",
          "compass",
          "compass-fill",
          "cone",
          "cone-striped",
          "controller",
          "cookie",
          "copy",
          "cpu",
          "cpu-fill",
          "credit-card",
          "credit-card-2-back",
          "credit-card-2-back-fill",
          "credit-card-2-front",
          "credit-card-2-front-fill",
          "credit-card-fill",
          "crop",
          "crosshair",
          "crosshair2",
          "css",
          "cup",
          "cup-fill",
          "cup-hot",
          "cup-hot-fill",
          "cup-straw",
          "currency-bitcoin",
          "currency-dollar",
          "currency-euro",
          "currency-exchange",
          "currency-pound",
          "currency-rupee",
          "currency-yen",
          "cursor",
          "cursor-fill",
          "cursor-text",
          "dash",
          "dash-circle",
          "dash-circle-dotted",
          "dash-circle-fill",
          "dash-lg",
          "dash-square",
          "dash-square-dotted",
          "dash-square-fill",
          "database",
          "database-add",
          "database-check",
          "database-dash",
          "database-down",
          "database-exclamation",
          "database-fill",
          "database-fill-add",
          "database-fill-check",
          "database-fill-dash",
          "database-fill-down",
          "database-fill-exclamation",
          "database-fill-gear",
          "database-fill-lock",
          "database-fill-slash",
          "database-fill-up",
          "database-fill-x",
          "database-gear",
          "database-lock",
          "database-slash",
          "database-up",
          "database-x",
          "device-hdd",
          "device-hdd-fill",
          "device-ssd",
          "device-ssd-fill",
          "diagram-2",
          "diagram-2-fill",
          "diagram-3",
          "diagram-3-fill",
          "diamond",
          "diamond-fill",
          "diamond-half",
          "dice-1",
          "dice-1-fill",
          "dice-2",
          "dice-2-fill",
          "dice-3",
          "dice-3-fill",
          "dice-4",
          "dice-4-fill",
          "dice-5",
          "dice-5-fill",
          "dice-6",
          "dice-6-fill",
          "disc",
          "disc-fill",
          "discord",
          "display",
          "display-fill",
          "displayport",
          "displayport-fill",
          "distribute-horizontal",
          "distribute-vertical",
          "door-closed",
          "door-closed-fill",
          "door-open",
          "door-open-fill",
          "dot",
          "download",
          "dpad",
          "dpad-fill",
          "dribbble",
          "dropbox",
          "droplet",
          "droplet-fill",
          "droplet-half",
          "duffle",
          "duffle-fill",
          "ear",
          "ear-fill",
          "earbuds",
          "easel",
          "easel-fill",
          "easel2",
          "easel2-fill",
          "easel3",
          "easel3-fill",
          "egg",
          "egg-fill",
          "egg-fried",
          "eject",
          "eject-fill",
          "emoji-angry",
          "emoji-angry-fill",
          "emoji-astonished",
          "emoji-astonished-fill",
          "emoji-dizzy",
          "emoji-dizzy-fill",
          "emoji-expressionless",
          "emoji-expressionless-fill",
          "emoji-frown",
          "emoji-frown-fill",
          "emoji-grimace",
          "emoji-grimace-fill",
          "emoji-grin",
          "emoji-grin-fill",
          "emoji-heart-eyes",
          "emoji-heart-eyes-fill",
          "emoji-kiss",
          "emoji-kiss-fill",
          "emoji-laughing",
          "emoji-laughing-fill",
          "emoji-neutral",
          "emoji-neutral-fill",
          "emoji-smile",
          "emoji-smile-fill",
          "emoji-smile-upside-down",
          "emoji-smile-upside-down-fill",
          "emoji-sunglasses",
          "emoji-sunglasses-fill",
          "emoji-surprise",
          "emoji-surprise-fill",
          "emoji-tear",
          "emoji-tear-fill",
          "emoji-wink",
          "emoji-wink-fill",
          "envelope",
          "envelope-arrow-down",
          "envelope-arrow-down-fill",
          "envelope-arrow-up",
          "envelope-arrow-up-fill",
          "envelope-at",
          "envelope-at-fill",
          "envelope-check",
          "envelope-check-fill",
          "envelope-dash",
          "envelope-dash-fill",
          "envelope-exclamation",
          "envelope-exclamation-fill",
          "envelope-fill",
          "envelope-heart",
          "envelope-heart-fill",
          "envelope-open",
          "envelope-open-fill",
          "envelope-open-heart",
          "envelope-open-heart-fill",
          "envelope-paper",
          "envelope-paper-fill",
          "envelope-paper-heart",
          "envelope-paper-heart-fill",
          "envelope-plus",
          "envelope-plus-fill",
          "envelope-slash",
          "envelope-slash-fill",
          "envelope-x",
          "envelope-x-fill",
          "eraser",
          "eraser-fill",
          "escape",
          "ethernet",
          "ev-front",
          "ev-front-fill",
          "ev-station",
          "ev-station-fill",
          "exclamation",
          "exclamation-circle",
          "exclamation-circle-fill",
          "exclamation-diamond",
          "exclamation-diamond-fill",
          "exclamation-lg",
          "exclamation-octagon",
          "exclamation-octagon-fill",
          "exclamation-square",
          "exclamation-square-fill",
          "exclamation-triangle",
          "exclamation-triangle-fill",
          "exclude",
          "explicit",
          "explicit-fill",
          "exposure",
          "eye",
          "eye-fill",
          "eye-slash",
          "eye-slash-fill",
          "eyedropper",
          "eyeglasses",
          "facebook",
          "fan",
          "fast-forward",
          "fast-forward-btn",
          "fast-forward-btn-fill",
          "fast-forward-circle",
          "fast-forward-circle-fill",
          "fast-forward-fill",
          "feather",
          "feather2",
          "file",
          "file-arrow-down",
          "file-arrow-down-fill",
          "file-arrow-up",
          "file-arrow-up-fill",
          "file-bar-graph",
          "file-bar-graph-fill",
          "file-binary",
          "file-binary-fill",
          "file-break",
          "file-break-fill",
          "file-check",
          "file-check-fill",
          "file-code",
          "file-code-fill",
          "file-diff",
          "file-diff-fill",
          "file-earmark",
          "file-earmark-arrow-down",
          "file-earmark-arrow-down-fill",
          "file-earmark-arrow-up",
          "file-earmark-arrow-up-fill",
          "file-earmark-bar-graph",
          "file-earmark-bar-graph-fill",
          "file-earmark-binary",
          "file-earmark-binary-fill",
          "file-earmark-break",
          "file-earmark-break-fill",
          "file-earmark-check",
          "file-earmark-check-fill",
          "file-earmark-code",
          "file-earmark-code-fill",
          "file-earmark-diff",
          "file-earmark-diff-fill",
          "file-earmark-easel",
          "file-earmark-easel-fill",
          "file-earmark-excel",
          "file-earmark-excel-fill",
          "file-earmark-fill",
          "file-earmark-font",
          "file-earmark-font-fill",
          "file-earmark-image",
          "file-earmark-image-fill",
          "file-earmark-lock",
          "file-earmark-lock-fill",
          "file-earmark-lock2",
          "file-earmark-lock2-fill",
          "file-earmark-medical",
          "file-earmark-medical-fill",
          "file-earmark-minus",
          "file-earmark-minus-fill",
          "file-earmark-music",
          "file-earmark-music-fill",
          "file-earmark-pdf",
          "file-earmark-pdf-fill",
          "file-earmark-person",
          "file-earmark-person-fill",
          "file-earmark-play",
          "file-earmark-play-fill",
          "file-earmark-plus",
          "file-earmark-plus-fill",
          "file-earmark-post",
          "file-earmark-post-fill",
          "file-earmark-ppt",
          "file-earmark-ppt-fill",
          "file-earmark-richtext",
          "file-earmark-richtext-fill",
          "file-earmark-ruled",
          "file-earmark-ruled-fill",
          "file-earmark-slides",
          "file-earmark-slides-fill",
          "file-earmark-spreadsheet",
          "file-earmark-spreadsheet-fill",
          "file-earmark-text",
          "file-earmark-text-fill",
          "file-earmark-word",
          "file-earmark-word-fill",
          "file-earmark-x",
          "file-earmark-x-fill",
          "file-earmark-zip",
          "file-earmark-zip-fill",
          "file-easel",
          "file-easel-fill",
          "file-excel",
          "file-excel-fill",
          "file-fill",
          "file-font",
          "file-font-fill",
          "file-image",
          "file-image-fill",
          "file-lock",
          "file-lock-fill",
          "file-lock2",
          "file-lock2-fill",
          "file-medical",
          "file-medical-fill",
          "file-minus",
          "file-minus-fill",
          "file-music",
          "file-music-fill",
          "file-pdf",
          "file-pdf-fill",
          "file-person",
          "file-person-fill",
          "file-play",
          "file-play-fill",
          "file-plus",
          "file-plus-fill",
          "file-post",
          "file-post-fill",
          "file-ppt",
          "file-ppt-fill",
          "file-richtext",
          "file-richtext-fill",
          "file-ruled",
          "file-ruled-fill",
          "file-slides",
          "file-slides-fill",
          "file-spreadsheet",
          "file-spreadsheet-fill",
          "file-text",
          "file-text-fill",
          "file-word",
          "file-word-fill",
          "file-x",
          "file-x-fill",
          "file-zip",
          "file-zip-fill",
          "files",
          "files-alt",
          "filetype-aac",
          "filetype-ai",
          "filetype-bmp",
          "filetype-cs",
          "filetype-css",
          "filetype-csv",
          "filetype-doc",
          "filetype-docx",
          "filetype-exe",
          "filetype-gif",
          "filetype-heic",
          "filetype-html",
          "filetype-java",
          "filetype-jpg",
          "filetype-js",
          "filetype-json",
          "filetype-jsx",
          "filetype-key",
          "filetype-m4p",
          "filetype-md",
          "filetype-mdx",
          "filetype-mov",
          "filetype-mp3",
          "filetype-mp4",
          "filetype-otf",
          "filetype-pdf",
          "filetype-php",
          "filetype-png",
          "filetype-ppt",
          "filetype-pptx",
          "filetype-psd",
          "filetype-py",
          "filetype-raw",
          "filetype-rb",
          "filetype-sass",
          "filetype-scss",
          "filetype-sh",
          "filetype-sql",
          "filetype-svg",
          "filetype-tiff",
          "filetype-tsx",
          "filetype-ttf",
          "filetype-txt",
          "filetype-wav",
          "filetype-woff",
          "filetype-xls",
          "filetype-xlsx",
          "filetype-xml",
          "filetype-yml",
          "film",
          "filter",
          "filter-circle",
          "filter-circle-fill",
          "filter-left",
          "filter-right",
          "filter-square",
          "filter-square-fill",
          "fingerprint",
          "fire",
          "flag",
          "flag-fill",
          "flask",
          "flask-fill",
          "flask-florence",
          "flask-florence-fill",
          "floppy",
          "floppy-fill",
          "floppy2",
          "floppy2-fill",
          "flower1",
          "flower2",
          "flower3",
          "folder",
          "folder-check",
          "folder-fill",
          "folder-minus",
          "folder-plus",
          "folder-symlink",
          "folder-symlink-fill",
          "folder-x",
          "folder2",
          "folder2-open",
          "fonts",
          "fork-knife",
          "forward",
          "forward-fill",
          "front",
          "fuel-pump",
          "fuel-pump-diesel",
          "fuel-pump-diesel-fill",
          "fuel-pump-fill",
          "fullscreen",
          "fullscreen-exit",
          "funnel",
          "funnel-fill",
          "gear",
          "gear-fill",
          "gear-wide",
          "gear-wide-connected",
          "gem",
          "gender-ambiguous",
          "gender-female",
          "gender-male",
          "gender-neuter",
          "gender-trans",
          "geo",
          "geo-alt",
          "geo-alt-fill",
          "geo-fill",
          "gift",
          "gift-fill",
          "git",
          "github",
          "gitlab",
          "globe",
          "globe-americas",
          "globe-americas-fill",
          "globe-asia-australia",
          "globe-asia-australia-fill",
          "globe-central-south-asia",
          "globe-central-south-asia-fill",
          "globe-europe-africa",
          "globe-europe-africa-fill",
          "globe2",
          "google",
          "google-play",
          "gpu-card",
          "graph-down",
          "graph-down-arrow",
          "graph-up",
          "graph-up-arrow",
          "grid",
          "grid-1x2",
          "grid-1x2-fill",
          "grid-3x2",
          "grid-3x2-gap",
          "grid-3x2-gap-fill",
          "grid-3x3",
          "grid-3x3-gap",
          "grid-3x3-gap-fill",
          "grid-fill",
          "grip-horizontal",
          "grip-vertical",
          "h-circle",
          "h-circle-fill",
          "h-square",
          "h-square-fill",
          "hammer",
          "hand-index",
          "hand-index-fill",
          "hand-index-thumb",
          "hand-index-thumb-fill",
          "hand-thumbs-down",
          "hand-thumbs-down-fill",
          "hand-thumbs-up",
          "hand-thumbs-up-fill",
          "handbag",
          "handbag-fill",
          "hash",
          "hdd",
          "hdd-fill",
          "hdd-network",
          "hdd-network-fill",
          "hdd-rack",
          "hdd-rack-fill",
          "hdd-stack",
          "hdd-stack-fill",
          "hdmi",
          "hdmi-fill",
          "headphones",
          "headset",
          "headset-vr",
          "heart",
          "heart-arrow",
          "heart-fill",
          "heart-half",
          "heart-pulse",
          "heart-pulse-fill",
          "heartbreak",
          "heartbreak-fill",
          "hearts",
          "heptagon",
          "heptagon-fill",
          "heptagon-half",
          "hexagon",
          "hexagon-fill",
          "hexagon-half",
          "highlighter",
          "highlights",
          "hospital",
          "hospital-fill",
          "hourglass",
          "hourglass-bottom",
          "hourglass-split",
          "hourglass-top",
          "house",
          "house-add",
          "house-add-fill",
          "house-check",
          "house-check-fill",
          "house-dash",
          "house-dash-fill",
          "house-door",
          "house-door-fill",
          "house-down",
          "house-down-fill",
          "house-exclamation",
          "house-exclamation-fill",
          "house-fill",
          "house-gear",
          "house-gear-fill",
          "house-heart",
          "house-heart-fill",
          "house-lock",
          "house-lock-fill",
          "house-slash",
          "house-slash-fill",
          "house-up",
          "house-up-fill",
          "house-x",
          "house-x-fill",
          "houses",
          "houses-fill",
          "hr",
          "hurricane",
          "hypnotize",
          "image",
          "image-alt",
          "image-fill",
          "images",
          "inbox",
          "inbox-fill",
          "inboxes",
          "inboxes-fill",
          "incognito",
          "indent",
          "infinity",
          "info",
          "info-circle",
          "info-circle-fill",
          "info-lg",
          "info-square",
          "info-square-fill",
          "input-cursor",
          "input-cursor-text",
          "instagram",
          "intersect",
          "javascript",
          "journal",
          "journal-album",
          "journal-arrow-down",
          "journal-arrow-up",
          "journal-bookmark",
          "journal-bookmark-fill",
          "journal-check",
          "journal-code",
          "journal-medical",
          "journal-minus",
          "journal-plus",
          "journal-richtext",
          "journal-text",
          "journal-x",
          "journals",
          "joystick",
          "justify",
          "justify-left",
          "justify-right",
          "kanban",
          "kanban-fill",
          "key",
          "key-fill",
          "keyboard",
          "keyboard-fill",
          "ladder",
          "lamp",
          "lamp-fill",
          "laptop",
          "laptop-fill",
          "layer-backward",
          "layer-forward",
          "layers",
          "layers-fill",
          "layers-half",
          "layout-sidebar",
          "layout-sidebar-inset",
          "layout-sidebar-inset-reverse",
          "layout-sidebar-reverse",
          "layout-split",
          "layout-text-sidebar",
          "layout-text-sidebar-reverse",
          "layout-text-window",
          "layout-text-window-reverse",
          "layout-three-columns",
          "layout-wtf",
          "leaf",
          "leaf-fill",
          "life-preserver",
          "lightbulb",
          "lightbulb-fill",
          "lightbulb-off",
          "lightbulb-off-fill",
          "lightning",
          "lightning-charge",
          "lightning-charge-fill",
          "lightning-fill",
          "line",
          "link",
          "link-45deg",
          "linkedin",
          "list",
          "list-check",
          "list-columns",
          "list-columns-reverse",
          "list-nested",
          "list-ol",
          "list-stars",
          "list-task",
          "list-ul",
          "lock",
          "lock-fill",
          "luggage",
          "luggage-fill",
          "lungs",
          "lungs-fill",
          "magic",
          "magnet",
          "magnet-fill",
          "mailbox",
          "mailbox-flag",
          "mailbox2",
          "mailbox2-flag",
          "map",
          "map-fill",
          "markdown",
          "markdown-fill",
          "marker-tip",
          "mask",
          "mastodon",
          "measuring-cup",
          "measuring-cup-fill",
          "medium",
          "megaphone",
          "megaphone-fill",
          "memory",
          "menu-app",
          "menu-app-fill",
          "menu-button",
          "menu-button-fill",
          "menu-button-wide",
          "menu-button-wide-fill",
          "menu-down",
          "menu-up",
          "messenger",
          "meta",
          "mic",
          "mic-fill",
          "mic-mute",
          "mic-mute-fill",
          "microsoft",
          "microsoft-teams",
          "minecart",
          "minecart-loaded",
          "modem",
          "modem-fill",
          "moisture",
          "moon",
          "moon-fill",
          "moon-stars",
          "moon-stars-fill",
          "mortarboard",
          "mortarboard-fill",
          "motherboard",
          "motherboard-fill",
          "mouse",
          "mouse-fill",
          "mouse2",
          "mouse2-fill",
          "mouse3",
          "mouse3-fill",
          "music-note",
          "music-note-beamed",
          "music-note-list",
          "music-player",
          "music-player-fill",
          "newspaper",
          "nintendo-switch",
          "node-minus",
          "node-minus-fill",
          "node-plus",
          "node-plus-fill",
          "noise-reduction",
          "nut",
          "nut-fill",
          "nvidia",
          "nvme",
          "nvme-fill",
          "octagon",
          "octagon-fill",
          "octagon-half",
          "openai",
          "opencollective",
          "optical-audio",
          "optical-audio-fill",
          "option",
          "outlet",
          "p-circle",
          "p-circle-fill",
          "p-square",
          "p-square-fill",
          "paint-bucket",
          "palette",
          "palette-fill",
          "palette2",
          "paperclip",
          "paragraph",
          "pass",
          "pass-fill",
          "passport",
          "passport-fill",
          "patch-check",
          "patch-check-fill",
          "patch-exclamation",
          "patch-exclamation-fill",
          "patch-minus",
          "patch-minus-fill",
          "patch-plus",
          "patch-plus-fill",
          "patch-question",
          "patch-question-fill",
          "pause",
          "pause-btn",
          "pause-btn-fill",
          "pause-circle",
          "pause-circle-fill",
          "pause-fill",
          "paypal",
          "pc",
          "pc-display",
          "pc-display-horizontal",
          "pc-horizontal",
          "pci-card",
          "pci-card-network",
          "pci-card-sound",
          "peace",
          "peace-fill",
          "pen",
          "pen-fill",
          "pencil",
          "pencil-fill",
          "pencil-square",
          "pentagon",
          "pentagon-fill",
          "pentagon-half",
          "people",
          "people-fill",
          "percent",
          "perplexity",
          "person",
          "person-add",
          "person-arms-up",
          "person-badge",
          "person-badge-fill",
          "person-bounding-box",
          "person-check",
          "person-check-fill",
          "person-circle",
          "person-dash",
          "person-dash-fill",
          "person-down",
          "person-exclamation",
          "person-fill",
          "person-fill-add",
          "person-fill-check",
          "person-fill-dash",
          "person-fill-down",
          "person-fill-exclamation",
          "person-fill-gear",
          "person-fill-lock",
          "person-fill-slash",
          "person-fill-up",
          "person-fill-x",
          "person-gear",
          "person-heart",
          "person-hearts",
          "person-lines-fill",
          "person-lock",
          "person-plus",
          "person-plus-fill",
          "person-raised-hand",
          "person-rolodex",
          "person-slash",
          "person-square",
          "person-standing",
          "person-standing-dress",
          "person-up",
          "person-vcard",
          "person-vcard-fill",
          "person-video",
          "person-video2",
          "person-video3",
          "person-walking",
          "person-wheelchair",
          "person-workspace",
          "person-x",
          "person-x-fill",
          "phone",
          "phone-fill",
          "phone-flip",
          "phone-landscape",
          "phone-landscape-fill",
          "phone-vibrate",
          "phone-vibrate-fill",
          "pie-chart",
          "pie-chart-fill",
          "piggy-bank",
          "piggy-bank-fill",
          "pin",
          "pin-angle",
          "pin-angle-fill",
          "pin-fill",
          "pin-map",
          "pin-map-fill",
          "pinterest",
          "pip",
          "pip-fill",
          "play",
          "play-btn",
          "play-btn-fill",
          "play-circle",
          "play-circle-fill",
          "play-fill",
          "playstation",
          "plug",
          "plug-fill",
          "plugin",
          "plus",
          "plus-circle",
          "plus-circle-dotted",
          "plus-circle-fill",
          "plus-lg",
          "plus-slash-minus",
          "plus-square",
          "plus-square-dotted",
          "plus-square-fill",
          "postage",
          "postage-fill",
          "postage-heart",
          "postage-heart-fill",
          "postcard",
          "postcard-fill",
          "postcard-heart",
          "postcard-heart-fill",
          "power",
          "prescription",
          "prescription2",
          "printer",
          "printer-fill",
          "projector",
          "projector-fill",
          "puzzle",
          "puzzle-fill",
          "qr-code",
          "qr-code-scan",
          "question",
          "question-circle",
          "question-circle-fill",
          "question-diamond",
          "question-diamond-fill",
          "question-lg",
          "question-octagon",
          "question-octagon-fill",
          "question-square",
          "question-square-fill",
          "quora",
          "quote",
          "r-circle",
          "r-circle-fill",
          "r-square",
          "r-square-fill",
          "radar",
          "radioactive",
          "rainbow",
          "receipt",
          "receipt-cutoff",
          "reception-0",
          "reception-1",
          "reception-2",
          "reception-3",
          "reception-4",
          "record",
          "record-btn",
          "record-btn-fill",
          "record-circle",
          "record-circle-fill",
          "record-fill",
          "record2",
          "record2-fill",
          "recycle",
          "reddit",
          "regex",
          "repeat",
          "repeat-1",
          "reply",
          "reply-all",
          "reply-all-fill",
          "reply-fill",
          "rewind",
          "rewind-btn",
          "rewind-btn-fill",
          "rewind-circle",
          "rewind-circle-fill",
          "rewind-fill",
          "robot",
          "rocket",
          "rocket-fill",
          "rocket-takeoff",
          "rocket-takeoff-fill",
          "router",
          "router-fill",
          "rss",
          "rss-fill",
          "rulers",
          "safe",
          "safe-fill",
          "safe2",
          "safe2-fill",
          "save",
          "save-fill",
          "save2",
          "save2-fill",
          "scissors",
          "scooter",
          "screwdriver",
          "sd-card",
          "sd-card-fill",
          "search",
          "search-heart",
          "search-heart-fill",
          "segmented-nav",
          "send",
          "send-arrow-down",
          "send-arrow-down-fill",
          "send-arrow-up",
          "send-arrow-up-fill",
          "send-check",
          "send-check-fill",
          "send-dash",
          "send-dash-fill",
          "send-exclamation",
          "send-exclamation-fill",
          "send-fill",
          "send-plus",
          "send-plus-fill",
          "send-slash",
          "send-slash-fill",
          "send-x",
          "send-x-fill",
          "server",
          "shadows",
          "share",
          "share-fill",
          "shield",
          "shield-check",
          "shield-exclamation",
          "shield-fill",
          "shield-fill-check",
          "shield-fill-exclamation",
          "shield-fill-minus",
          "shield-fill-plus",
          "shield-fill-x",
          "shield-lock",
          "shield-lock-fill",
          "shield-minus",
          "shield-plus",
          "shield-shaded",
          "shield-slash",
          "shield-slash-fill",
          "shield-x",
          "shift",
          "shift-fill",
          "shop",
          "shop-window",
          "shuffle",
          "sign-dead-end",
          "sign-dead-end-fill",
          "sign-do-not-enter",
          "sign-do-not-enter-fill",
          "sign-intersection",
          "sign-intersection-fill",
          "sign-intersection-side",
          "sign-intersection-side-fill",
          "sign-intersection-t",
          "sign-intersection-t-fill",
          "sign-intersection-y",
          "sign-intersection-y-fill",
          "sign-merge-left",
          "sign-merge-left-fill",
          "sign-merge-right",
          "sign-merge-right-fill",
          "sign-no-left-turn",
          "sign-no-left-turn-fill",
          "sign-no-parking",
          "sign-no-parking-fill",
          "sign-no-right-turn",
          "sign-no-right-turn-fill",
          "sign-railroad",
          "sign-railroad-fill",
          "sign-stop",
          "sign-stop-fill",
          "sign-stop-lights",
          "sign-stop-lights-fill",
          "sign-turn-left",
          "sign-turn-left-fill",
          "sign-turn-right",
          "sign-turn-right-fill",
          "sign-turn-slight-left",
          "sign-turn-slight-left-fill",
          "sign-turn-slight-right",
          "sign-turn-slight-right-fill",
          "sign-yield",
          "sign-yield-fill",
          "signal",
          "signpost",
          "signpost-2",
          "signpost-2-fill",
          "signpost-fill",
          "signpost-split",
          "signpost-split-fill",
          "sim",
          "sim-fill",
          "sim-slash",
          "sim-slash-fill",
          "sina-weibo",
          "skip-backward",
          "skip-backward-btn",
          "skip-backward-btn-fill",
          "skip-backward-circle",
          "skip-backward-circle-fill",
          "skip-backward-fill",
          "skip-end",
          "skip-end-btn",
          "skip-end-btn-fill",
          "skip-end-circle",
          "skip-end-circle-fill",
          "skip-end-fill",
          "skip-forward",
          "skip-forward-btn",
          "skip-forward-btn-fill",
          "skip-forward-circle",
          "skip-forward-circle-fill",
          "skip-forward-fill",
          "skip-start",
          "skip-start-btn",
          "skip-start-btn-fill",
          "skip-start-circle",
          "skip-start-circle-fill",
          "skip-start-fill",
          "skype",
          "slack",
          "slash",
          "slash-circle",
          "slash-circle-fill",
          "slash-lg",
          "slash-square",
          "slash-square-fill",
          "sliders",
          "sliders2",
          "sliders2-vertical",
          "smartwatch",
          "snapchat",
          "snow",
          "snow2",
          "snow3",
          "sort-alpha-down",
          "sort-alpha-down-alt",
          "sort-alpha-up",
          "sort-alpha-up-alt",
          "sort-down",
          "sort-down-alt",
          "sort-numeric-down",
          "sort-numeric-down-alt",
          "sort-numeric-up",
          "sort-numeric-up-alt",
          "sort-up",
          "sort-up-alt",
          "soundwave",
          "sourceforge",
          "speaker",
          "speaker-fill",
          "speedometer",
          "speedometer2",
          "spellcheck",
          "spotify",
          "square",
          "square-fill",
          "square-half",
          "stack",
          "stack-overflow",
          "star",
          "star-fill",
          "star-half",
          "stars",
          "steam",
          "stickies",
          "stickies-fill",
          "sticky",
          "sticky-fill",
          "stop",
          "stop-btn",
          "stop-btn-fill",
          "stop-circle",
          "stop-circle-fill",
          "stop-fill",
          "stoplights",
          "stoplights-fill",
          "stopwatch",
          "stopwatch-fill",
          "strava",
          "stripe",
          "subscript",
          "substack",
          "subtract",
          "suit-club",
          "suit-club-fill",
          "suit-diamond",
          "suit-diamond-fill",
          "suit-heart",
          "suit-heart-fill",
          "suit-spade",
          "suit-spade-fill",
          "suitcase",
          "suitcase-fill",
          "suitcase-lg",
          "suitcase-lg-fill",
          "suitcase2",
          "suitcase2-fill",
          "sun",
          "sun-fill",
          "sunglasses",
          "sunrise",
          "sunrise-fill",
          "sunset",
          "sunset-fill",
          "superscript",
          "symmetry-horizontal",
          "symmetry-vertical",
          "table",
          "tablet",
          "tablet-fill",
          "tablet-landscape",
          "tablet-landscape-fill",
          "tag",
          "tag-fill",
          "tags",
          "tags-fill",
          "taxi-front",
          "taxi-front-fill",
          "telegram",
          "telephone",
          "telephone-fill",
          "telephone-forward",
          "telephone-forward-fill",
          "telephone-inbound",
          "telephone-inbound-fill",
          "telephone-minus",
          "telephone-minus-fill",
          "telephone-outbound",
          "telephone-outbound-fill",
          "telephone-plus",
          "telephone-plus-fill",
          "telephone-x",
          "telephone-x-fill",
          "tencent-qq",
          "terminal",
          "terminal-dash",
          "terminal-fill",
          "terminal-plus",
          "terminal-split",
          "terminal-x",
          "text-center",
          "text-indent-left",
          "text-indent-right",
          "text-left",
          "text-paragraph",
          "text-right",
          "text-wrap",
          "textarea",
          "textarea-resize",
          "textarea-t",
          "thermometer",
          "thermometer-half",
          "thermometer-high",
          "thermometer-low",
          "thermometer-snow",
          "thermometer-sun",
          "threads",
          "threads-fill",
          "three-dots",
          "three-dots-vertical",
          "thunderbolt",
          "thunderbolt-fill",
          "ticket",
          "ticket-detailed",
          "ticket-detailed-fill",
          "ticket-fill",
          "ticket-perforated",
          "ticket-perforated-fill",
          "tiktok",
          "toggle-off",
          "toggle-on",
          "toggle2-off",
          "toggle2-on",
          "toggles",
          "toggles2",
          "tools",
          "tornado",
          "train-freight-front",
          "train-freight-front-fill",
          "train-front",
          "train-front-fill",
          "train-lightrail-front",
          "train-lightrail-front-fill",
          "translate",
          "transparency",
          "trash",
          "trash-fill",
          "trash2",
          "trash2-fill",
          "trash3",
          "trash3-fill",
          "tree",
          "tree-fill",
          "trello",
          "triangle",
          "triangle-fill",
          "triangle-half",
          "trophy",
          "trophy-fill",
          "tropical-storm",
          "truck",
          "truck-flatbed",
          "truck-front",
          "truck-front-fill",
          "tsunami",
          "tux",
          "tv",
          "tv-fill",
          "twitch",
          "twitter",
          "twitter-x",
          "type",
          "type-bold",
          "type-h1",
          "type-h2",
          "type-h3",
          "type-h4",
          "type-h5",
          "type-h6",
          "type-italic",
          "type-strikethrough",
          "type-underline",
          "typescript",
          "ubuntu",
          "ui-checks",
          "ui-checks-grid",
          "ui-radios",
          "ui-radios-grid",
          "umbrella",
          "umbrella-fill",
          "unindent",
          "union",
          "unity",
          "universal-access",
          "universal-access-circle",
          "unlock",
          "unlock-fill",
          "unlock2",
          "unlock2-fill",
          "upc",
          "upc-scan",
          "upload",
          "usb",
          "usb-c",
          "usb-c-fill",
          "usb-drive",
          "usb-drive-fill",
          "usb-fill",
          "usb-micro",
          "usb-micro-fill",
          "usb-mini",
          "usb-mini-fill",
          "usb-plug",
          "usb-plug-fill",
          "usb-symbol",
          "valentine",
          "valentine2",
          "vector-pen",
          "view-list",
          "view-stacked",
          "vignette",
          "vimeo",
          "vinyl",
          "vinyl-fill",
          "virus",
          "virus2",
          "voicemail",
          "volume-down",
          "volume-down-fill",
          "volume-mute",
          "volume-mute-fill",
          "volume-off",
          "volume-off-fill",
          "volume-up",
          "volume-up-fill",
          "vr",
          "wallet",
          "wallet-fill",
          "wallet2",
          "watch",
          "water",
          "webcam",
          "webcam-fill",
          "wechat",
          "whatsapp",
          "wifi",
          "wifi-1",
          "wifi-2",
          "wifi-off",
          "wikipedia",
          "wind",
          "window",
          "window-dash",
          "window-desktop",
          "window-dock",
          "window-fullscreen",
          "window-plus",
          "window-sidebar",
          "window-split",
          "window-stack",
          "window-x",
          "windows",
          "wordpress",
          "wrench",
          "wrench-adjustable",
          "wrench-adjustable-circle",
          "wrench-adjustable-circle-fill",
          "x",
          "x-circle",
          "x-circle-fill",
          "x-diamond",
          "x-diamond-fill",
          "x-lg",
          "x-octagon",
          "x-octagon-fill",
          "x-square",
          "x-square-fill",
          "xbox",
          "yelp",
          "yin-yang",
          "youtube",
          "zoom-in",
          "zoom-out"
        ],
        "nullable": true,
        "description": "Optional Bootstrap icon from the available list. Empty string or null removes the icon. Placement null/omission inherits the group icon; empty string hides it."
      }
    }
  }
}
