{
  "openapi": "3.1.0",
  "info": {
    "title": "Workfront Planning API",
    "description": "This is WF Planning Service API documentation. WF Planning Service is responsible for creating and managing new workspace, field, record, record type objects across the Workfront application and Adobe DX infrastructure.",
    "version": "v2"
  },
  "servers": [
    {
      "url": "https://{customer-domain}/maestro/api",
      "description": "Workfront Planning Service Url"
    }
  ],
  "tags": [
    {
      "name": "Workspaces",
      "description": "Workspace management. Limits: max 100,000 workspaces per tenant; max 256 characters for workspace name."
    },
    {
      "name": "Record Types",
      "description": "Record type management. Limits: max 100 record types per workspace; max 255 characters for display name."
    },
    {
      "name": "Records",
      "description": "Record management. Limits: max 25,000 records per record type; max 100 records per bulk operation; max 1,000,000 total references per bulk create/update request (default; configurable; returns 400 BULK_REFERENCE_COUNT_EXCEEDED); max 500 connections per reference field; max 10 connections per hierarchy field."
    },
    {
      "name": "Fields",
      "description": "Field management. Per-record-type quotas: max 500 fields total; max 20 long-text fields; max 20 formula fields; max 30 reference fields. Field display names must be unique within a record type and capped at 256 characters. Formula expressions: max 50,000 characters; lookup depth: max 5."
    },
    {
      "name": "Views",
      "description": "View management. Limits: max 100 personal views per record type; max 255 characters for view name."
    },
    {
      "name": "Permissions",
      "description": "Resource permissions, member management, and access requests."
    },
    {
      "name": "Limits and Quotas",
      "description": "Public API V2 limits and quotas:\n\n- Workspaces per tenant: 100,000\n- Record types per workspace: 100\n- Records per record type: 25,000\n- Records per bulk request: 100\n- Total references per bulk create/update request: 1,000,000 (default; configurable)\n- Fields per record type: 500\n- long-text fields per record type: 20\n- formula fields per record type: 20\n- reference fields per record type: 30\n- Connections per reference field: 500\n- Connections per hierarchy field: 10\n- Personal views per record type: 100\n- Lookup depth: 5\n- Hierarchy depth: 4\n- Hierarchy count per workspace: 5\n- Formula expression length: 50,000 characters\n- Display name length: 256 characters\n\nExceeding most of these limits returns an HTTP 403 with a specific `errorCode` (e.g. `RECORD_TYPE_LIMIT_EXCEEDED`, `FIELD_LIMIT_EXCEEDED`, `VIEW_LIMIT_EXCEEDED`). The bulk request reference-count limit is the exception: it returns HTTP 400 with `errorCode` `BULK_REFERENCE_COUNT_EXCEEDED`."
    }
  ],
  "paths": {
    "/v2/workspaces/{id}": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Get Workspace",
        "description": "Retrieve a workspace by its ID.",
        "operationId": "getWorkspace",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the workspace to be retrieved",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceBaseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Update Workspace",
        "description": "Update an existing workspace using PUT (full replacement). All fields not provided in the request will be set to null.",
        "operationId": "updateWorkspace",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the workspace to be updated",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkspaceBaseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceBaseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Delete Workspace",
        "description": "Delete a workspace by its ID.",
        "operationId": "deleteWorkspace",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the workspace to be deleted",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Patch Workspace",
        "description": "Partially update a workspace using PATCH (merge-patch semantics). Only provided fields will be updated; omitted fields remain unchanged.",
        "operationId": "patchWorkspace",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the workspace to be patched",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkspaceBaseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceBaseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/views/{id}": {
      "get": {
        "tags": [
          "Views"
        ],
        "summary": "Get View",
        "description": "Retrieve a view by its ID.",
        "operationId": "getView",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the view to be retrieved",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ViewDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Views"
        ],
        "summary": "Update View",
        "description": "Update an existing view using PUT (full replacement). All fields not provided in the request will be set to null.",
        "operationId": "updateView",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the view to be updated",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ViewDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ViewDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict — retry; or the view references a field you cannot view — do not retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Views"
        ],
        "summary": "Delete View",
        "description": "Delete a view by its ID.",
        "operationId": "deleteView",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the view to be deleted",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Views"
        ],
        "summary": "Patch View",
        "description": "Partially update a view using PATCH (merge-patch semantics). Only provided fields will be updated; omitted fields remain unchanged.",
        "operationId": "patchView",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the view to be patched",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ViewDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ViewDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict — retry; or the view references a field you cannot view — do not retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/records/{id}": {
      "get": {
        "tags": [
          "Records"
        ],
        "summary": "Get Record",
        "description": "Retrieve a record by its ID.",
        "operationId": "getRecord",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record to be retrieved",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "aliased",
            "in": "query",
            "description": "Flag to include alias support in response (field keys will be aliases instead of IDs)",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Records"
        ],
        "summary": "Update Record",
        "description": "Update an existing record using PUT (full replacement). All fields not provided in the request will be set to null.",
        "operationId": "updateRecord",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record to be updated",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordBaseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (RECORD_CONNECTION_LIMIT_EXCEEDED, HIERARCHY_RECORD_CONNECTION_LIMIT_EXCEEDED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity (back-reference conflict)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Records"
        ],
        "summary": "Delete Record",
        "description": "Delete a record by its ID.",
        "operationId": "deleteRecord",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record to be deleted",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Records"
        ],
        "summary": "Patch Record",
        "description": "Partially update an existing record using PATCH (merge-patch semantics). Only provided fields will be updated; omitted fields remain unchanged. Setting a field value to JSON null (e.g. {\"data\":{\"F123\":null}}) explicitly clears that field; omitting the key leaves the field untouched. For list-type fields (connections, multi-select), you can use operational updates: [{\"op\": \"add\", \"value\": [...]}, {\"op\": \"remove\", \"value\": [...]}].",
        "operationId": "patchRecord",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record to be patched",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordBaseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (RECORD_CONNECTION_LIMIT_EXCEEDED, HIERARCHY_RECORD_CONNECTION_LIMIT_EXCEEDED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity (back-reference conflict)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/record-types/{recordTypeId}/records/bulk": {
      "put": {
        "tags": [
          "Records"
        ],
        "summary": "Bulk Update Records",
        "description": "Update multiple records using PUT semantics (full replacement). All fields not provided will be set to null. Each record must include an id. Limited to 100 records per request.",
        "operationId": "bulkUpdateRecords",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "aliased",
            "in": "query",
            "description": "Flag to include alias support in response (field keys will be aliases instead of IDs)",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "description": "List of records to update. Each must include an id (max 100).",
                "items": {
                  "$ref": "#/components/schemas/RecordBaseDto"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "All items updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "207": {
            "description": "Mixed results — some items succeeded, some failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Records"
        ],
        "summary": "Bulk Create Records",
        "description": "Create multiple records in a record type in a single request. Limited to 100 records per request.",
        "operationId": "bulkCreateRecords",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "aliased",
            "in": "query",
            "description": "Flag to include alias support in response (field keys will be aliases instead of IDs)",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "ID of the workspace to scope global record type access and record creation",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "description": "List of records to create (max 100)",
                "items": {
                  "$ref": "#/components/schemas/RecordBaseDto"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "All items created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "207": {
            "description": "Mixed results — some items succeeded, some failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Records"
        ],
        "summary": "Bulk Delete Records",
        "description": "Delete multiple records by their IDs in a single request. Limited to 100 records per request.",
        "operationId": "bulkDeleteRecords",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkDeleteRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "All items deleted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "207": {
            "description": "Mixed results — some items succeeded, some failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (empty ids list)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Records"
        ],
        "summary": "Bulk Patch Records",
        "description": "Partially update multiple records using PATCH semantics (merge-patch). Only provided fields are updated; omitted fields remain unchanged. Each record must include an id. Limited to 100 records per request.",
        "operationId": "bulkPatchRecords",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "aliased",
            "in": "query",
            "description": "Flag to include alias support in response (field keys will be aliases instead of IDs)",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "description": "List of partial record updates. Each must include an id (max 100).",
                "items": {
                  "$ref": "#/components/schemas/RecordBaseDto"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "All items patched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "207": {
            "description": "Mixed results — some items succeeded, some failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/record-types/{id}": {
      "get": {
        "tags": [
          "Record Types"
        ],
        "summary": "Get Record Type",
        "description": "Retrieve a record type by its ID.",
        "operationId": "getRecordType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record type to be retrieved",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "ID of the workspace to scope dynamic field resolution for global/dynamic record types",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordTypeDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Record Types"
        ],
        "summary": "Update Record Type",
        "description": "Update an existing record type using PUT (full replacement). All fields not provided in the request will be set to null.",
        "operationId": "updateRecordType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record type to be updated",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "For global record types, the workspace whose default-permission rule is set when permissionSettings is provided. Defaults to the primary workspace; ignored for regular record types.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordTypeDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordTypeDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (RECORD_TYPE_IN_HIERARCHY)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Record Types"
        ],
        "summary": "Permanently delete record type",
        "description": "Delete a record type and all its associated data, fields, and records. This action is irreversible.",
        "operationId": "deleteRecordType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record type to be deleted",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (RECORD_TYPE_IN_HIERARCHY)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Record Types"
        ],
        "summary": "Patch Record Type",
        "description": "Partially update a record type using PATCH (merge-patch semantics). Only provided fields will be updated; omitted fields remain unchanged.",
        "operationId": "patchRecordType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record type to be patched",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "For global record types, the workspace whose default-permission rule is set when permissionSettings is provided. Defaults to the primary workspace; ignored for regular record types.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordTypeDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordTypeDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/fields/{id}": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Get Field",
        "description": "Retrieve a field by its ID.",
        "operationId": "getField",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the field to be retrieved",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FieldDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Fields"
        ],
        "summary": "Update Field",
        "description": "Update an existing field using PUT (full replacement). All fields not provided in the request will be set to null. The type-specific options object must meet the same requiredness bar as on create (see Create Field), even for fields that were persisted without one previously.",
        "operationId": "updateField",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the field to be updated",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FieldDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FieldDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure; FIELD_REQUIRED_VALUE_MISSING when a required type-specific option is missing, FIELD_VALUE_NOT_UNIQUE when select option displayNames/names are duplicated)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (FIELD_DISPLAY_NAME_NOT_UNIQUE)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Fields"
        ],
        "summary": "Delete Field",
        "description": "Delete a field by its ID.",
        "operationId": "deleteField",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the field to be deleted",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Fields"
        ],
        "summary": "Patch Field",
        "description": "Partially update a field using PATCH (merge-patch semantics). Only provided fields will be updated; omitted fields remain unchanged. Unlike create/PUT, PATCH does not require the type-specific options object to be (re-)supplied; an already-valid persisted options object is left as-is when omitted from the request.",
        "operationId": "patchField",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the field to be patched",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FieldDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FieldDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (FIELD_DISPLAY_NAME_NOT_UNIQUE)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (write conflict, retry)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces": {
      "get": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Get All Workspaces",
        "description": "Retrieve a cursor-paginated list of all workspaces.",
        "operationId": "getWorkspaces",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor from the previous page response for fetching the next page",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return per page (1-50, default 20)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "maximum": 50,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorResponseWorkspaceDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Workspaces"
        ],
        "summary": "Create Workspace",
        "description": "Create a new workspace.",
        "operationId": "createWorkspace",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkspaceBaseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceBaseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (admin only, or WORKSPACE_LIMIT_EXCEEDED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspaceId}/record-types": {
      "get": {
        "tags": [
          "Record Types"
        ],
        "summary": "Get Record Types by Workspace",
        "description": "Retrieve a cursor-paginated list of record types for a specific workspace.",
        "operationId": "getRecordTypesByWorkspace",
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "description": "ID of the workspace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor from the previous page response for fetching the next page",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return per page (1-100, default 20)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorResponseRecordTypeDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Workspace Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Record Types"
        ],
        "summary": "Create Record Type",
        "description": "Create a new record type in a workspace. Subject to limits: max 100 record types per workspace.",
        "operationId": "createRecordType",
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "description": "ID of the workspace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sectionIndex",
            "in": "query",
            "description": "Zero-based index of the section to add the record type to. Defaults to 0 (first section).",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordTypeBaseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordTypeDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (RECORD_TYPE_LIMIT_EXCEEDED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Workspace Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspaceId}/record-types/{recordTypeId}/detach": {
      "post": {
        "tags": [
          "Record Types"
        ],
        "summary": "Detach record type from workspace",
        "description": "Remove a dynamic (global) record type usage from a workspace. The underlying global record type and its data are preserved; only the workspace association is removed.",
        "operationId": "detachRecordTypeFromWorkspace",
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "description": "ID of the workspace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type to detach",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/records/{id}/thumbnail": {
      "post": {
        "tags": [
          "Records"
        ],
        "summary": "Upload thumbnail on record",
        "description": "Replace the record's thumbnail with the uploaded image. Each successful upload produces a new URL, even for identical content.",
        "operationId": "uploadThumbnail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "PNG or JPEG image file"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Thumbnail uploaded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid image (THUMBNAIL_EMPTY, THUMBNAIL_INVALID_FORMAT, THUMBNAIL_INVALID_CONTENT, THUMBNAIL_SIZE_EXCEEDED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "413": {
            "description": "Upload too large (UPLOAD_SIZE_EXCEEDED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Records"
        ],
        "summary": "Delete thumbnail on record",
        "description": "Remove the record's thumbnail. Idempotent — succeeds with 204 even when no thumbnail is set.",
        "operationId": "deleteThumbnail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Thumbnail removed"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/record-types/{recordTypeId}/views": {
      "get": {
        "tags": [
          "Views"
        ],
        "summary": "Get Views by Record Type",
        "description": "Retrieve a cursor-paginated list of views for a specific record type.",
        "operationId": "getViewsByRecordType",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor from the previous page response for fetching the next page",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return per page (1-100, default 20)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorResponseViewDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Views"
        ],
        "summary": "Create View",
        "description": "Create a new view for a record type. Subject to limits: max 100 personal views per record type.",
        "operationId": "createView",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ViewDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ViewDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (VIEW_LIMIT_EXCEEDED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (view references a field you cannot view)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/record-types/{recordTypeId}/records": {
      "get": {
        "tags": [
          "Records"
        ],
        "summary": "Get Records by Record Type",
        "description": "Retrieve a page-based paginated list of records for a specific record type. Uses standard page/size query parameters (default page=0, size=20, sorted by createdAt).",
        "operationId": "getRecordsByRecordType",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "default": [
                "createdAt,ASC"
              ],
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageRecordDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Records"
        ],
        "summary": "Create Record",
        "description": "Create a new record in a record type. Subject to limits: max 25,000 records per record type.",
        "operationId": "createRecord",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "ID of the workspace to scope global record type access and record creation",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordBaseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (RECORD_TYPE_RECORD_LIMIT_EXCEEDED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity (back-reference conflict)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/record-types/{recordTypeId}/records/search": {
      "get": {
        "tags": [
          "Records"
        ],
        "summary": "Search Records (GET)",
        "description": "Search records using query parameters. Accepts a JSON filter string using the composite filter pattern, field projection, and alias-based field access. Returns page-based paginated records along with group information.",
        "operationId": "searchRecordsGet",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "recordTypeAlias",
            "in": "query",
            "description": "Alias of the record type",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "aliased",
            "in": "query",
            "description": "Flag to include alias support in response (field keys will be aliases instead of IDs)",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "JSON filter using the composite filter pattern. Example: {\"operator\":\"AND\",\"conditions\":[{\"fieldId\":\"status\",\"condition\":\"IS\",\"value\":\"Active\"}]}",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "groupingFieldIds",
            "in": "query",
            "description": "List of field IDs to group results by",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": "F693ab1c96f11ea3f4175e000,F693ab1c96f11ea3f4175e001"
          },
          {
            "name": "scopeWorkspaceIds",
            "in": "query",
            "description": "List of workspace IDs to scope the search to (for global record types)",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": "Ws123,Ws456"
          },
          {
            "name": "globalRecordTypeWorkspaceFieldId",
            "in": "query",
            "description": "ID of the global record type workspace field (for global record types)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "F693ab1c96f11ea3f4175e717"
          },
          {
            "name": "fieldIds",
            "in": "query",
            "description": "List of field IDs to include in the record's data",
            "required": false,
            "schema": {
              "type": "array",
              "default": [
                "*"
              ],
              "items": {
                "type": "string"
              }
            },
            "example": "F693ab1c96f11ea3f4175e710,F693ab1c96f11ea3f4175e711"
          },
          {
            "name": "fieldAliases",
            "in": "query",
            "description": "List of field aliases to include in the record's data",
            "required": false,
            "schema": {
              "type": "array",
              "default": [
                "*"
              ],
              "items": {
                "type": "string"
              }
            },
            "example": "name,description"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordSearchPageDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (invalid filter parameter)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Records"
        ],
        "summary": "Search Records (POST)",
        "description": "Search records using the composite filter pattern with strongly-typed conditions. Supports recursive AND/OR filter nesting, sorting, grouping, field projection, and alias-based field access. Returns page-based paginated records along with group information.",
        "operationId": "searchRecordsPost",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "aliased",
            "in": "query",
            "description": "Flag to include alias support in response (field keys will be aliases instead of IDs)",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "fieldIds",
            "in": "query",
            "description": "List of field IDs to include in the record's data",
            "required": false,
            "schema": {
              "type": "array",
              "default": [
                "*"
              ],
              "items": {
                "type": "string"
              }
            },
            "example": "F693ab1c96f11ea3f4175e710,F693ab1c96f11ea3f4175e711"
          },
          {
            "name": "fieldAliases",
            "in": "query",
            "description": "List of field aliases to include in the record's data",
            "required": false,
            "schema": {
              "type": "array",
              "default": [
                "*"
              ],
              "items": {
                "type": "string"
              }
            },
            "example": "name,description"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordSearchRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordSearchPageDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (invalid filter / sort / group)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/record-types/{recordTypeId}/records/move": {
      "post": {
        "tags": [
          "Records"
        ],
        "summary": "Move Records",
        "description": "Reorder one or more records within a record type by specifying where to place them. Provide exactly one of putAfterRecordId (place after) or putBeforeRecordId (place before). Maximum 100 records per request. Requires EDIT permission on the record type. Move is all-or-nothing: on failure, no records are reordered.",
        "operationId": "moveRecords",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MoveRecordsRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "All items moved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "207": {
            "description": "Move failed — all records remain in original positions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordBulkResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (invalid move request)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type or anchor record not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/record-types/{recordTypeId}/fields": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Get Fields by Record Type",
        "description": "Retrieve a cursor-paginated list of fields for a specific record type.",
        "operationId": "getFieldsByRecordType",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor from the previous page response for fetching the next page",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return per page (1-100, default 20)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorResponseFieldDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Fields"
        ],
        "summary": "Create Field",
        "description": "Create a new field in a record type. Subject to limits: max 500 fields per record type, max 20 long-text fields, max 20 formula fields, max 30 reference fields per record type. The type-specific options object is required and validated against the field's type: dateOptions.dateFormat for date; numberOptions for number/percentage/currency (numberOptions.currency is additionally required for currency); userOptions.multipleUsersAllowed for user; and a non-empty options list with unique, non-blank displayNames for single-select/multi-select. The lookup and document types are not directly creatable and are rejected with 400 INVALID_DATA.",
        "operationId": "createField",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FieldDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FieldDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (validation failure; FIELD_REQUIRED_VALUE_MISSING when a required type-specific option is missing, FIELD_VALUE_NOT_UNIQUE when select option displayNames/names are duplicated)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (FIELD_LIMIT_EXCEEDED, LONG_TEXT_FIELD_LIMIT_EXCEEDED, FORMULA_FIELD_COUNT_LIMIT_EXCEEDED, REFERENCE_FIELDS_COUNT_LIMIT_EXCEEDED, FIELD_DISPLAY_NAME_NOT_UNIQUE)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/permissions/{resourceType}/{resourceId}/requests": {
      "get": {
        "tags": [
          "Permissions"
        ],
        "summary": "List pending access requests for a resource",
        "description": "Returns all pending access requests for the given resource. Requires MANAGE permission.",
        "operationId": "getAccessRequests",
        "parameters": [
          {
            "name": "resourceType",
            "in": "path",
            "description": "Type of resource (workspaces, record-types, records, views)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "ID of the resource",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AccessRequestDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Permissions"
        ],
        "summary": "Request access to a resource",
        "description": "Creates or updates an access request for the current user on the given resource.",
        "operationId": "createAccessRequest",
        "parameters": [
          {
            "name": "resourceType",
            "in": "path",
            "description": "Type of resource (workspaces, record-types, records, views)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "ID of the resource",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAccessRequestDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Object containing the ID of the created access request",
                  "example": {
                    "id": "AR1234567890"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Permissions"
        ],
        "summary": "Dismiss access requests",
        "description": "Dismisses the specified access requests by ID. Requires MANAGE permission.",
        "operationId": "deleteAccessRequests",
        "parameters": [
          {
            "name": "resourceType",
            "in": "path",
            "description": "Type of resource (workspaces, record-types, records, views)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "ID of the resource",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteAccessRequestsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/permissions/{resourceType}/{resourceId}/members/bulk": {
      "patch": {
        "tags": [
          "Permissions"
        ],
        "summary": "Bulk grant, update, or revoke member permissions",
        "description": "Grants new roles, changes existing roles, or revokes access for the provided subjects. Requires MANAGE permission.",
        "operationId": "updateMembers",
        "parameters": [
          {
            "name": "resourceType",
            "in": "path",
            "description": "Type of resource (workspaces, record-types, records, views, fields)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "ID of the resource",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "recordTypeId",
            "in": "query",
            "description": "The record type the field belongs to. Required for fields, ignored otherwise.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "The workspace the caller is operating from. For record-types: when the record-type is a global record-type genuinely attached dynamically to this workspace, every operation in the request (grants/revokes, inheritance, wildcard) is resolved against that dynamic-use context instead of the record-type's own (home) context. For records and views: has no effect on how the request is applied — grants/revokes/wildcard always act on the resource's own single set of members. The value is validated against the resource's real dynamic-use context (via its parent global record-type), and the request fails with 400 if it doesn't correspond to a genuine dynamic attachment. Ignored for workspace resources.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMembersRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/workspaces/{workspaceId}/global-record-types": {
      "get": {
        "tags": [
          "Record Types"
        ],
        "summary": "Get Global Record Types",
        "description": "Retrieve a cursor-paginated list of global record types available to attach to a specific workspace.",
        "operationId": "getGlobalRecordTypes",
        "parameters": [
          {
            "name": "workspaceId",
            "in": "path",
            "description": "ID of the workspace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor from the previous page response for fetching the next page",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return per page (1-100, default 20)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorResponseRecordTypeDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Workspace Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/views/{id}/restriction": {
      "get": {
        "tags": [
          "Views"
        ],
        "summary": "Get view field-restriction status",
        "description": "Manager-only: reports whether the view is restricted (or has restricted content) for anyone, not just the caller.",
        "operationId": "getViewRestriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the view to check",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ViewRestrictionDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/records/{id}/history": {
      "get": {
        "tags": [
          "Records"
        ],
        "summary": "Get Record Field Change History",
        "description": "Retrieve a cursor-paginated list of field change events for a specific record.",
        "operationId": "getHistory",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the record",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor from the previous page response for fetching the next page",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return per page (1-50, default 20)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "maximum": 50,
              "minimum": 1
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "Workspace context for dynamic record types",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorResponseHistoryEntryDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (invalid cursor or limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/record-types/{recordTypeId}/records/export": {
      "get": {
        "tags": [
          "Records"
        ],
        "summary": "Export Records",
        "description": "Stream ALL records the user can VIEW for a record type as a CSV or Excel (.xlsx) file. Columns and their order come from the given view (viewId); otherwise from fieldIds, otherwise all fields. Supports the same filter/grouping parameters as search, plus a single scopeWorkspaceId to scope global record types, so the export matches the on-screen table. The response is streamed to bound memory usage.",
        "operationId": "exportRecords",
        "parameters": [
          {
            "name": "recordTypeId",
            "in": "path",
            "description": "ID of the record type",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Export format: CSV or EXCEL",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "viewId",
            "in": "query",
            "description": "ID of the table view whose visible columns/order to export",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "recordTypeAlias",
            "in": "query",
            "description": "Alias of the record type",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "JSON filter using the composite filter pattern (same as search)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "groupingFieldIds",
            "in": "query",
            "description": "List of field IDs to group results by",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "ID of the workspace to scope the search to (for global record types); the workspace-link field is resolved automatically from the record type",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fieldIds",
            "in": "query",
            "description": "List of field IDs to include as columns (fallback when no viewId)",
            "required": false,
            "schema": {
              "type": "array",
              "default": [
                "*"
              ],
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "fieldAliases",
            "in": "query",
            "description": "List of field aliases to include as columns (fallback when no viewId)",
            "required": false,
            "schema": {
              "type": "array",
              "default": [
                "*"
              ],
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (invalid filter / too many records)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Record Type Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/permissions/{resourceType}/{resourceId}": {
      "get": {
        "tags": [
          "Permissions"
        ],
        "summary": "Get current user's effective permissions on a resource",
        "description": "Returns the current user's effective canView, canEdit, canDelete, and canAdd flags for the given resource.",
        "operationId": "getMyPermissions",
        "parameters": [
          {
            "name": "resourceType",
            "in": "path",
            "description": "Type of resource (workspaces, record-types, records, views, fields)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "ID of the resource",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "recordTypeId",
            "in": "query",
            "description": "The record type the field belongs to. Required for fields, ignored otherwise.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "The workspace the caller is operating from. For record-types: when the record-type is a global record-type genuinely attached dynamically to this workspace, the effective permissions returned reflect that dynamic-use context instead of the record-type's own (home) context. For records and views: has no effect on the result — the value is validated against the resource's real dynamic-use context (via its parent global record-type), and the request fails with 400 if it doesn't correspond to a genuine dynamic attachment. Ignored for workspace resources.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PermissionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/permissions/{resourceType}/{resourceId}/members": {
      "get": {
        "tags": [
          "Permissions"
        ],
        "summary": "Get all members and sharing settings for a resource",
        "description": "Lists all subjects (users, groups, teams) that have an explicit sharing relation on the resource, together with its wildcard access mode (records only) and inheritance setting (record-types only). Requires MANAGE permission.",
        "operationId": "getMembers",
        "parameters": [
          {
            "name": "resourceType",
            "in": "path",
            "description": "Type of resource (workspaces, record-types, records, views, fields)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "ID of the resource",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "recordTypeId",
            "in": "query",
            "description": "The record type the field belongs to. Required for fields, ignored otherwise.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "The workspace the caller is operating from. For record-types: when the record-type is a global record-type genuinely attached dynamically to this workspace, the members and settings returned are those of that dynamic-use context instead of the record-type's own (home) context. For records and views: has no effect on the result — the value is validated against the resource's real dynamic-use context (via its parent global record-type), and the request fails with 400 if it doesn't correspond to a genuine dynamic attachment. Ignored for workspace resources.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/permissions/{resourceType}/{resourceId}/inheritance": {
      "get": {
        "tags": [
          "Permissions"
        ],
        "summary": "Get inheritance members for a resource",
        "description": "Returns the members that inherit access onto the resource. For record-types: the members of its workspace. For records: the union of its parent record-type's own members and its workspace's members. Views and workspaces don't inherit through this chain and always return an empty list. Whether that inheritance is currently downgraded to view-only is reported separately, as inheritViewOnly on GET .../members. Requires MANAGE permission.",
        "operationId": "getInheritance",
        "parameters": [
          {
            "name": "resourceType",
            "in": "path",
            "description": "Type of resource (workspaces, record-types, records, views, fields)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "ID of the resource",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "recordTypeId",
            "in": "query",
            "description": "The record type the field belongs to. Required for fields, ignored otherwise.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scopeWorkspaceId",
            "in": "query",
            "description": "The workspace the caller is operating from. For record-types: when the record-type is a global record-type genuinely attached dynamically to this workspace, the members returned reflect that dynamic-use context instead of the record-type's own (home) context. For records: selects whether the dynamic-use workspace's or the home workspace's members are returned as part of the inherited set — the value is validated against the resource's real dynamic-use context (via its parent global record-type), and the request fails with 400 if it doesn't correspond to a genuine dynamic attachment. Ignored for views and workspaces.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MemberPermissionDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/fields/{name}/record-types": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Get Record Types using a Field",
        "description": "Retrieve a cursor-paginated list of record types that have a field whose linked field (e.g. a reference or lookup field's linked field) has the given alias. Only record types the caller has VIEW access to are included. Returns an empty list (not an error) both when no field has that alias and when the caller cannot view any matching field.",
        "operationId": "getRecordTypesUsingField",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "alias of the field",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor from the previous page response for fetching the next page",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return per page (1-100, default 20)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorResponseRecordTypeDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ProblemDetail"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "RecordTypeSectionDto": {
        "type": "object",
        "description": "Section for organizing and grouping record types within a workspace. Sections are ordered by their position in the array.",
        "properties": {
          "displayName": {
            "type": "string",
            "description": "Display name of the record type section",
            "example": "Marketing",
            "maxLength": 256,
            "minLength": 0
          },
          "recordTypeIds": {
            "type": "array",
            "description": "List of record type IDs included in this section",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "displayName"
        ]
      },
      "UserReferenceDto": {
        "type": "object",
        "description": "Reference to a user with identifier and display name",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the user",
            "example": "1C341E7B682505430A494138@0bd0200063c87f9749412b.e",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "Display name of the user",
            "example": "Jane Doe",
            "readOnly": true
          }
        }
      },
      "WorkspaceBaseDto": {
        "type": "object",
        "description": "Base class for Workspace DTOs containing common workspace properties",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the entity",
            "example": "Ws69a976d02587b929c9e26dfa",
            "readOnly": true
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who created this entity",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "description": "Date/time when this entity was created",
            "example": "2026-01-15T10:30:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "updatedBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who last updated this entity",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "description": "Date/time when this entity was last updated",
            "example": "2026-01-15T14:45:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "alias": {
            "type": "string",
            "description": "Unique alias identifier for the workspace",
            "example": "marketing-workspace",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "Display name of the workspace. Maximum 256 characters; cannot be blank.",
            "example": "Marketing Workspace",
            "maxLength": 256,
            "minLength": 0,
            "pattern": "(?s)^\\s*\\S.*$"
          },
          "description": {
            "type": "string",
            "description": "Description of the workspace purpose and content. Maximum 1024 characters.",
            "example": "Workspace for managing marketing campaigns and assets",
            "maxLength": 1024,
            "minLength": 0
          },
          "color": {
            "type": "string",
            "description": "Color theme for the workspace",
            "example": "blue"
          },
          "icon": {
            "type": "string",
            "description": "Icon identifier for the workspace",
            "example": "briefcase"
          },
          "ownerId": {
            "type": "string",
            "description": "User ID of the workspace owner",
            "example": "1C341E7B682505430A494138@0bd0200063c87f9749412b.e"
          },
          "recordTypeSections": {
            "type": "array",
            "description": "List of record type sections for organizing record types",
            "items": {
              "$ref": "#/components/schemas/RecordTypeSectionDto"
            }
          }
        }
      },
      "V2FieldError": {
        "type": "object",
        "description": "Field-level error detail used in validation errors and per-item batch failures.",
        "properties": {
          "field": {
            "type": "string",
            "description": "Name of the field or path that caused the error.",
            "example": "name"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error for this field.",
            "example": "Workspace name can not be blank"
          },
          "code": {
            "type": "string",
            "description": "Machine-readable code identifying the validation rule that failed.",
            "example": "NotBlank"
          }
        }
      },
      "V2ProblemDetail": {
        "type": "object",
        "description": "RFC 7807 Problem Details error response for V2 endpoints.",
        "properties": {
          "title": {
            "type": "string",
            "description": "Short, human-readable summary of the error type. Same for all occurrences of the same error.",
            "example": "Not found"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "description": "HTTP status code of the response.",
            "example": 404
          },
          "detail": {
            "type": "string",
            "description": "Human-readable, resource-specific explanation of this error occurrence. Always English.",
            "example": "Record type with ID 'Rt69b14f7e' was not found."
          },
          "errorCode": {
            "type": "string",
            "description": "Machine-readable error code (enum name).",
            "example": "ENTITY_WITH_ATTRIBUTE_NOT_FOUND"
          },
          "messageArguments": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Named parameters used to compose the detail message. Values are always strings.",
            "example": {
              "recordTypeId": "Rt69b14f7e"
            }
          },
          "requestId": {
            "type": "string",
            "description": "Request correlation ID for tracing and support.",
            "example": "5b1f7a8c-2c0e-4a8f-9c4f-2a3b1c0e4d5f"
          },
          "errors": {
            "type": "array",
            "description": "Field-level or per-item error details. Present for validation, business-rule, or batch failures.",
            "items": {
              "$ref": "#/components/schemas/V2FieldError"
            }
          }
        },
        "required": [
          "detail",
          "errorCode",
          "requestId",
          "status",
          "title"
        ]
      },
      "Coloring": {
        "type": "object",
        "properties": {
          "record": {
            "$ref": "#/components/schemas/RecordColoring"
          },
          "group": {
            "$ref": "#/components/schemas/GroupColoring"
          }
        }
      },
      "ColumnMetadata": {
        "type": "object",
        "properties": {
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "fieldId": {
            "type": "string"
          },
          "visibility": {
            "type": "boolean"
          },
          "aggregationFunction": {
            "type": "string",
            "enum": [
              "SUM",
              "AVG",
              "MIN",
              "MAX",
              "EMPTY_COUNT",
              "NOT_EMPTY_COUNT",
              "FILLED_COUNT"
            ]
          }
        }
      },
      "DynamicFieldMetadataDto": {
        "type": "object",
        "description": "Dynamic field metadata for global/dynamic record types",
        "properties": {
          "scopeWorkspaceId": {
            "type": "string",
            "description": "Workspace ID this view is scoped to",
            "example": "Ws69b14f7e0e38f35f28c3ccee"
          },
          "dynamicFieldIds": {
            "type": "array",
            "description": "Field IDs that are workspace-specific (dynamic) in this view",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          }
        }
      },
      "FilterColoringRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "appliedFilters": {
            "type": "array",
            "items": {}
          }
        }
      },
      "FilterCondition": {
        "type": "string",
        "description": "Supported filter conditions for record search",
        "enum": [
          "CONTAINS",
          "DOES_NOT_CONTAIN",
          "IS",
          "IS_NOT",
          "IS_EMPTY",
          "IS_NOT_EMPTY",
          "GREATER_THAN",
          "GREATER_THAN_OR_EQUAL",
          "LESS_THAN",
          "LESS_THAN_OR_EQUAL",
          "IS_AFTER",
          "IS_BEFORE",
          "IS_BETWEEN",
          "IS_NOT_BETWEEN",
          "IS_ANY_OF",
          "IS_NONE_OF",
          "HAS_ANY_OF",
          "HAS_ALL_OF",
          "HAS_NONE_OF",
          "IS_EXACTLY"
        ]
      },
      "FilterConditionDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/FilterNodeDto"
          },
          {
            "type": "object",
            "properties": {
              "fieldId": {
                "type": "string",
                "description": "ID or alias of the field to filter on",
                "example": "F693ab1c96f11ea3f4175e710",
                "minLength": 1
              },
              "condition": {
                "$ref": "#/components/schemas/FilterCondition",
                "description": "Filter condition to apply"
              },
              "value": {
                "description": "Value to compare against. Omit for unary conditions (IS_EMPTY, IS_NOT_EMPTY). Use an array for range conditions (IS_BETWEEN) or multi-value conditions (IS_ANY_OF). For People fields (USER, CREATED_BY, UPDATED_BY), by default plain string values are interpreted as Adobe IMS user IDs when the customer is IMS-migrated; otherwise they are interpreted as Workfront user IDs. To explicitly set the ID type and avoid ambiguity, pass a typed object such as {\"id\":\"63e3b13000078c1795146248182d15dc\",\"idType\":\"WF\"} (use \"idType\":\"IMS\" for Adobe IMS IDs).",
                "example": "Active"
              },
              "matchExternalId": {
                "type": "boolean",
                "description": "When true, values for REFERENCE fields are treated as external connection IDs and resolved to internal record IDs before the search executes. Only valid for external REFERENCE fields (isExternal=true)."
              }
            }
          }
        ],
        "description": "A leaf filter condition applied to a single field",
        "required": [
          "condition",
          "fieldId"
        ]
      },
      "FilterGroupDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/FilterNodeDto"
          },
          {
            "type": "object",
            "properties": {
              "operator": {
                "$ref": "#/components/schemas/FilterOperator",
                "description": "Logical operator to combine conditions"
              },
              "conditions": {
                "type": "array",
                "description": "List of filter nodes: leaf conditions or nested groups",
                "items": {
                  "$ref": "#/components/schemas/FilterNodeDto"
                },
                "minItems": 1
              }
            }
          }
        ],
        "description": "A group of filter conditions combined with a logical operator (AND/OR). Supports recursive nesting for complex filter logic.",
        "required": [
          "conditions",
          "operator"
        ]
      },
      "FilterNodeDto": {
        "description": "A node in the filter tree: either a leaf condition or a nested group",
        "oneOf": [
          {
            "$ref": "#/components/schemas/FilterConditionDto"
          },
          {
            "$ref": "#/components/schemas/FilterGroupDto"
          }
        ]
      },
      "FilterOperator": {
        "type": "string",
        "description": "Logical operator for combining filter conditions",
        "enum": [
          "AND",
          "OR"
        ]
      },
      "GroupColoring": {
        "type": "object",
        "properties": {
          "selected": {
            "type": "string",
            "enum": [
              "DEFAULT",
              "FIELD"
            ]
          }
        }
      },
      "GroupDto": {
        "type": "object",
        "description": "Grouping specification",
        "properties": {
          "fieldId": {
            "type": "string",
            "description": "ID or alias of the field to group by",
            "example": "F693ab1c96f11ea3f4175e710",
            "minLength": 1
          },
          "direction": {
            "type": "string",
            "description": "Sort direction for the grouped values (asc or desc). Defaults to asc if omitted.",
            "enum": [
              "asc",
              "desc"
            ],
            "example": "asc"
          }
        },
        "required": [
          "fieldId"
        ]
      },
      "RecordColoring": {
        "type": "object",
        "properties": {
          "selected": {
            "type": "string",
            "enum": [
              "RECORD_TYPE",
              "RECORD",
              "FIELD",
              "GROUP",
              "FILTER",
              "NONE"
            ]
          },
          "fieldId": {
            "type": "string"
          },
          "highlightFullRow": {
            "type": "boolean"
          },
          "filterColoringRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterColoringRule"
            }
          }
        }
      },
      "SortDto": {
        "type": "object",
        "description": "Sort specification",
        "properties": {
          "fieldId": {
            "type": "string",
            "description": "ID or alias of the field to sort by",
            "example": "F693ab1c96f11ea3f4175e710",
            "minLength": 1
          },
          "direction": {
            "type": "string",
            "description": "Sort direction (asc or desc). Defaults to asc if omitted.",
            "enum": [
              "asc",
              "desc"
            ],
            "example": "asc"
          }
        },
        "required": [
          "fieldId"
        ]
      },
      "ViewDto": {
        "type": "object",
        "description": "View data containing all view properties",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the entity",
            "example": "69a976d02587b929c9e26dfa",
            "readOnly": true
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who created this entity",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "description": "Date/time when this entity was created",
            "example": "2026-01-15T10:30:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "updatedBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who last updated this entity",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "description": "Date/time when this entity was last updated",
            "example": "2026-01-15T14:45:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "Name of the view. Maximum 255 characters; cannot be blank. Each record type allows up to 100 personal views.",
            "example": "My Table View",
            "maxLength": 255,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "Type of the view. Must be the exact canonical lowercase value; no other casing is accepted, consistent with the internal API.",
            "enum": [
              "table",
              "timeline",
              "calendar",
              "list",
              "gallery"
            ],
            "example": "table",
            "minLength": 1,
            "pattern": "table|timeline|calendar|list|gallery"
          },
          "recordTypeId": {
            "type": "string",
            "description": "ID of the record type this view belongs to",
            "example": "Rt69b14f7e0e38f35f28c3ccee"
          },
          "filter": {
            "type": "array",
            "description": "Filter conditions applied to records in this view",
            "example": [],
            "items": {
              "$ref": "#/components/schemas/FilterNodeDto"
            }
          },
          "grouping": {
            "type": "array",
            "description": "Grouping configuration for records in this view",
            "items": {
              "$ref": "#/components/schemas/GroupDto"
            }
          },
          "sorting": {
            "type": "array",
            "description": "Sorting configuration for records in this view",
            "items": {
              "$ref": "#/components/schemas/SortDto"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/ViewMetadataDto",
            "description": "View-specific metadata (column widths, date fields, etc.)"
          },
          "isHidden": {
            "type": "boolean",
            "description": "Whether this view is hidden from the view list",
            "example": false
          },
          "isPublicShared": {
            "type": "boolean",
            "description": "Whether this view is publicly shared via a link",
            "example": false,
            "readOnly": true
          },
          "isRestricted": {
            "type": "boolean",
            "description": "Whether this view is restricted (limited access for global/dynamic record types)",
            "example": false,
            "readOnly": true
          },
          "restrictionStatus": {
            "type": "string",
            "description": "Field-level-permission restriction status: INACCESSIBLE (a referenced field the caller cannot view is used in filter/coloring/dates), HAS_RESTRICTED_CONTENT (some restricted columns/sorting/grouping were dropped), or null (no field restriction). Independent of isRestricted (workspace visibility). Read-only.",
            "enum": [
              "INACCESSIBLE",
              "HAS_RESTRICTED_CONTENT"
            ],
            "readOnly": true
          }
        },
        "required": [
          "name",
          "type"
        ]
      },
      "ViewMetadataDto": {
        "type": "object",
        "description": "View metadata containing view-type specific configuration",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of the view metadata (should match view type)",
            "example": "TABLE"
          },
          "showThumbnail": {
            "type": "boolean",
            "description": "Whether to show thumbnail images in the view",
            "example": true
          },
          "showRecordColoring": {
            "type": "boolean",
            "description": "Whether to show record coloring in the view",
            "example": false
          },
          "columnMetadata": {
            "type": "array",
            "description": "Column metadata for table views (visibility and width)",
            "items": {
              "$ref": "#/components/schemas/ColumnMetadata"
            }
          },
          "newColumnMetadata": {
            "type": "array",
            "description": "New column metadata for table views (visible fields only)",
            "items": {
              "$ref": "#/components/schemas/ColumnMetadata"
            }
          },
          "rowOrder": {
            "type": "array",
            "description": "Custom row order for table views (deprecated)",
            "items": {
              "type": "string"
            }
          },
          "startDateKey": {
            "type": "string",
            "description": "Field ID of the start date field (required for timeline and calendar views; must reference a date field on the record type)",
            "example": "F69b14f7e0e38f35f28c3ccee"
          },
          "endDateKey": {
            "type": "string",
            "description": "Field ID of the end date field (required for timeline and calendar views; must reference a date field on the record type)",
            "example": "F69b14f7e0e38f35f28c3ccef"
          },
          "timelineScale": {
            "type": "string",
            "description": "Timeline scale type for timeline views",
            "enum": [
              "YEAR",
              "QUARTER",
              "MONTH",
              "WEEK"
            ]
          },
          "cardFieldIds": {
            "type": "array",
            "description": "Field IDs to display on timeline bars or calendar cards",
            "items": {
              "type": "string"
            }
          },
          "coloring": {
            "$ref": "#/components/schemas/Coloring",
            "description": "Coloring configuration for conditional formatting"
          },
          "rowHeight": {
            "type": "string",
            "description": "Row height setting for table and calendar views",
            "enum": [
              "SHORT",
              "COMPACT",
              "MEDIUM",
              "TALL",
              "FIT_CONTENT"
            ]
          },
          "truncateRecordContent": {
            "type": "boolean",
            "description": "Whether to truncate record content in timeline views",
            "example": false
          },
          "timelineLayout": {
            "type": "string",
            "description": "Layout for timeline views: 'stacked' or 'swimlane'",
            "enum": [
              "stacked",
              "swimlane"
            ],
            "example": "stacked"
          },
          "dynamicFieldMetadata": {
            "$ref": "#/components/schemas/DynamicFieldMetadataDto",
            "description": "Dynamic field metadata for global/dynamic record types"
          }
        }
      },
      "CoverImageDto": {
        "type": "object",
        "description": "Cover image information for a record",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL of the cover image",
            "example": "/maestro/static/thumbnail/default/thumbnail-1.png"
          },
          "position": {
            "type": "integer",
            "format": "int32",
            "description": "Vertical position of the cover image",
            "example": 0
          }
        }
      },
      "RecordBaseDto": {
        "type": "object",
        "description": "Partial record data to update. Only provided fields will be updated.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the record",
            "example": "Rc69b2a78e63cd0d41a1bedf2e",
            "readOnly": true
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who created this entity",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "description": "Date/time when this entity was created",
            "example": "2026-01-15T10:30:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "updatedBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who last updated this entity",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "description": "Date/time when this entity was last updated",
            "example": "2026-01-15T14:45:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "recordTypeId": {
            "type": "string",
            "description": "ID of the record type this record belongs to",
            "example": "Rt69b14f7e0e38f35f28c3ccee"
          },
          "data": {
            "type": "object",
            "additionalProperties": {},
            "description": "Field data for the record as key-value pairs where keys are field IDs",
            "example": {
              "F693ab1c96f11ea3f4175e710": "Campaign Name",
              "F693ab1c96f11ea3f4175e711": "2026-03-15"
            }
          },
          "thumbnailUrl": {
            "type": "string",
            "description": "URL of the record thumbnail image",
            "example": "/maestro/static/thumbnail/default/thumbnail-1.png",
            "readOnly": true
          },
          "coverImage": {
            "$ref": "#/components/schemas/CoverImageDto",
            "description": "Cover image information for the record",
            "readOnly": true
          },
          "metadata": {
            "$ref": "#/components/schemas/RecordMetadataDto",
            "description": "Additional metadata associated with the record"
          }
        }
      },
      "RecordMetadataDto": {
        "type": "object",
        "description": "Additional metadata associated with a record",
        "properties": {
          "catalyzeId": {
            "type": "string",
            "description": "External identifier linking this record to a Catalyze entity",
            "example": "cat-12345",
            "maxLength": 256,
            "minLength": 0
          }
        }
      },
      "RecordDto": {
        "type": "object",
        "description": "Complete record data including all record properties",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the record",
            "example": "Rc69b2a78e63cd0d41a1bedf2e",
            "readOnly": true
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who created this entity",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "description": "Date/time when this entity was created",
            "example": "2026-01-15T10:30:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "updatedBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who last updated this entity",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "description": "Date/time when this entity was last updated",
            "example": "2026-01-15T14:45:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "recordTypeId": {
            "type": "string",
            "description": "ID of the record type this record belongs to",
            "example": "Rt69b14f7e0e38f35f28c3ccee"
          },
          "data": {
            "type": "object",
            "additionalProperties": {},
            "description": "Field data for the record as key-value pairs where keys are field IDs",
            "example": {
              "F693ab1c96f11ea3f4175e710": "Campaign Name",
              "F693ab1c96f11ea3f4175e711": "2026-03-15"
            }
          },
          "thumbnailUrl": {
            "type": "string",
            "description": "URL of the record thumbnail image",
            "example": "/maestro/static/thumbnail/default/thumbnail-1.png",
            "readOnly": true
          },
          "coverImage": {
            "$ref": "#/components/schemas/CoverImageDto",
            "description": "Cover image information for the record",
            "readOnly": true
          },
          "metadata": {
            "$ref": "#/components/schemas/RecordMetadataDto",
            "description": "Additional metadata associated with the record"
          },
          "recordTypeAlias": {
            "type": "string",
            "description": "Alias of the record type (only populated when aliased=true)",
            "example": "campaigns",
            "readOnly": true
          }
        }
      },
      "RecordBulkItemErrorDto": {
        "type": "object",
        "description": "Per-item error detail in a bulk record operation response.",
        "properties": {
          "code": {
            "type": "string",
            "description": "Machine-readable error code.",
            "example": "ENTITY_WITH_ATTRIBUTE_NOT_FOUND"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of this specific item failure.",
            "example": "Record with ID 'Rc123' was not found."
          },
          "details": {
            "type": "object",
            "additionalProperties": {},
            "description": "Optional structured context for this item failure."
          }
        }
      },
      "RecordBulkRequestErrorDto": {
        "type": "object",
        "description": "Request-level error affecting multiple items in a bulk operation.",
        "properties": {
          "code": {
            "type": "string",
            "description": "Machine-readable error code.",
            "example": "RATE_LIMIT_EXCEEDED"
          },
          "message": {
            "type": "string",
            "description": "Human-readable description of the request-level error.",
            "example": "Bulk operation limit of 100 items per request exceeded; 58 items were skipped"
          },
          "affectedIds": {
            "type": "array",
            "description": "IDs of the items affected by this request-level error.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "RecordBulkResponseDto": {
        "type": "object",
        "description": "Response envelope for V2 bulk record operations.",
        "properties": {
          "status": {
            "type": "string",
            "description": "Overall bulk operation status.",
            "enum": [
              "success",
              "partial",
              "failed"
            ]
          },
          "total": {
            "type": "integer",
            "format": "int32",
            "description": "Number of input items submitted.",
            "example": 10
          },
          "succeeded": {
            "type": "integer",
            "format": "int32",
            "description": "Number of successful item results.",
            "example": 3
          },
          "failed": {
            "type": "integer",
            "format": "int32",
            "description": "Number of failed item results.",
            "example": 7
          },
          "requestId": {
            "type": "string",
            "description": "Request correlation ID for tracing and support.",
            "example": "5b1f7a8c-2c0e-4a8f-9c4f-2a3b1c0e4d5f"
          },
          "errors": {
            "type": "array",
            "description": "Request-level errors affecting multiple items.",
            "items": {
              "$ref": "#/components/schemas/RecordBulkRequestErrorDto"
            }
          },
          "results": {
            "type": "array",
            "description": "Per-item results in the same order as the input.",
            "items": {
              "$ref": "#/components/schemas/RecordBulkResultItemDtoObject"
            }
          }
        }
      },
      "RecordBulkResultItemDtoObject": {
        "type": "object",
        "description": "Result for one input item in a bulk record operation.",
        "properties": {
          "requestIndex": {
            "type": "integer",
            "format": "int32",
            "description": "Zero-based index of the input item.",
            "example": 0
          },
          "id": {
            "type": "string",
            "description": "Record ID for this item when available.",
            "example": "Rc69b2a78e63cd0d41a1bedf2e"
          },
          "status": {
            "type": "string",
            "description": "Per-item operation status.",
            "enum": [
              "success",
              "error"
            ]
          },
          "error": {
            "$ref": "#/components/schemas/RecordBulkItemErrorDto",
            "description": "Error payload. Present only when status is error."
          },
          "record": {
            "$ref": "#/components/schemas/RecordDto",
            "description": "Record payload. Present on successful create, update, and patch items."
          }
        }
      },
      "AuthzObjectType": {
        "type": "string",
        "enum": [
          "maestro/workspace",
          "maestro/public_workspace",
          "maestro/recordtype",
          "maestro/record",
          "redrock/user",
          "redrock/group",
          "redrock/cmpy",
          "redrock/cust",
          "redrock/teamob",
          "redrock/role",
          "ims/user",
          "member",
          "groupmember",
          "maestro/view",
          "maestro/dynamic_recordtype",
          "maestro/field"
        ]
      },
      "AuthzSubjectDtoV2": {
        "type": "object",
        "description": "Authorization subject reference (user, group, team, etc.)",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/AuthzObjectType",
            "description": "Type of the authorization subject",
            "example": "redrock/user"
          },
          "id": {
            "type": "string",
            "description": "ID of the authorization subject",
            "example": "U123abc"
          }
        }
      },
      "DefaultPermissionMode": {
        "type": "string",
        "enum": [
          "OPEN",
          "RESTRICTED",
          "NO_ACCESS"
        ]
      },
      "DefaultRecordPermissionsDto": {
        "type": "object",
        "description": "Record-sharing-aligned default permission rule for a record type (wildcard + inheritance + per-subject role). Requires the wf-planning-default-permission-enhancements feature.",
        "properties": {
          "wildcard": {
            "type": "string",
            "description": "EVERYONE_IN_WORKSPACE (inherited access allowed) or SELECTED_USERS_ONLY (no inherited access — only the creator + selected subjects). EVERYONE_IN_WORKSPACE supports all subject types (USER/GROUP/TEAM/ROLE/COMPANY) for per-subject overrides. SELECTED_USERS_ONLY requires the wf-planning-record-level-permissions-no-access feature and only supports USER/GROUP/TEAM subjects.",
            "enum": [
              "SELECTED_USERS_ONLY",
              "EVERYONE_IN_WORKSPACE"
            ],
            "example": "EVERYONE_IN_WORKSPACE"
          },
          "inheritViewOnly": {
            "type": "boolean",
            "description": "Inheritance mode (matches record sharing): true = inherited access is downgraded to view-only, false = fully inherited. Ignored when wildcard is SELECTED_USERS_ONLY.",
            "example": true
          },
          "subjects": {
            "type": "array",
            "description": "Subjects with an explicit per-subject role on new records.",
            "items": {
              "$ref": "#/components/schemas/SharingSubjectDto"
            }
          }
        }
      },
      "PermissionSubjectDto": {
        "type": "object",
        "description": "A subject (user/group/team/role/company) granted explicit edit access in a RESTRICTED rule",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the subject",
            "example": "642f1c0a0e38f35f28c3ccee",
            "minLength": 1
          },
          "type": {
            "$ref": "#/components/schemas/PermissionSubjectType",
            "description": "Type of the subject",
            "example": "USER"
          },
          "displayName": {
            "type": "string",
            "description": "Display name of the subject, resolved from Redrock at read time",
            "example": "Jane Doe",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "type"
        ]
      },
      "PermissionSubjectType": {
        "type": "string",
        "enum": [
          "USER",
          "GROUP",
          "TEAM",
          "ROLE",
          "COMPANY"
        ]
      },
      "RecordTypeDto": {
        "type": "object",
        "description": "Complete record type data including linkability settings and external options",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the entity",
            "example": "69a976d02587b929c9e26dfa",
            "readOnly": true
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who created this entity",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "description": "Date/time when this entity was created",
            "example": "2026-01-15T10:30:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "updatedBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who last updated this entity",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "description": "Date/time when this entity was last updated",
            "example": "2026-01-15T14:45:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "alias": {
            "type": "string",
            "description": "Unique alias identifier for the record type",
            "example": "campaigns",
            "readOnly": true
          },
          "displayName": {
            "type": "string",
            "description": "Display name of the record type. Maximum 255 characters; cannot be blank.",
            "example": "Campaigns",
            "maxLength": 255,
            "minLength": 0
          },
          "description": {
            "type": "string",
            "description": "Description of the record type purpose. Maximum 1024 characters.",
            "example": "Marketing campaigns and promotional activities",
            "maxLength": 1024,
            "minLength": 0
          },
          "primaryFieldId": {
            "type": "string",
            "description": "ID of the primary field for this record type",
            "example": "F693ab1c96f11ea3f4175e716"
          },
          "icon": {
            "type": "string",
            "description": "Icon identifier for the record type",
            "example": "diamond"
          },
          "color": {
            "type": "string",
            "description": "Color theme for the record type",
            "example": "purple"
          },
          "isExternal": {
            "type": "boolean",
            "description": "Indicates if this is an external record type",
            "example": false
          },
          "sourceRecordTypeId": {
            "type": "string",
            "description": "ID of an existing global record type to attach to the workspace (used only on create). When provided, the record type is not created but attached as a dynamic usage.",
            "example": "Rt69b14f7e0e38f35f28c3ccee",
            "writeOnly": true
          },
          "permissionSettings": {
            "$ref": "#/components/schemas/RecordTypePermissionSettingsDto",
            "description": "Default record-level permission rule for this record type. On read, the resolved rule for the current workspace context (defaulted to OPEN when never configured); omitted when the default-record-permissions feature is disabled. On PATCH/PUT, set this to configure the rule — for global record types it applies to the workspace given by the scopeWorkspaceId query param (defaulting to the primary workspace)."
          },
          "defaultRecordPermissions": {
            "$ref": "#/components/schemas/DefaultRecordPermissionsDto",
            "description": "Record-sharing-aligned default permission rule (wildcard + inheritance + per-subject role). On read, the resolved rule for the current workspace context; omitted when the wf-planning-default-permission-enhancements feature is disabled. On PATCH/PUT, set this to configure the rule — for global record types it applies to the workspace given by the scopeWorkspaceId query param (defaulting to the primary workspace). Supersedes permissionSettings, which is rejected on write while enhancements are enabled."
          },
          "externalOptions": {
            "$ref": "#/components/schemas/RecordTypeExternalOptionsDto",
            "description": "External options for external record types"
          },
          "linkableWithAllWorkspaces": {
            "type": "boolean",
            "description": "Indicates if this record type can be linked with all workspaces",
            "example": false
          },
          "linkableWithWorkspaceIds": {
            "type": "array",
            "description": "List of workspace IDs that this record type can be linked with",
            "items": {
              "type": "string"
            }
          },
          "globalRecordTypeWorkspaceFieldId": {
            "type": "string",
            "description": "ID of the global record type workspace field",
            "example": "F693ab1c96f11ea3f4175e717",
            "readOnly": true
          },
          "isGlobal": {
            "type": "boolean",
            "description": "Indicates if this is a global record type",
            "example": false,
            "readOnly": true
          },
          "authorizedToCreateDynamicRecordType": {
            "type": "array",
            "description": "List of subjects authorized to create dynamic record types from this global record type",
            "items": {
              "$ref": "#/components/schemas/AuthzSubjectDtoV2"
            }
          },
          "primaryWorkspaceId": {
            "type": "string",
            "description": "ID of the workspace where this global record type was originally created",
            "example": "Ws69b14f7e0e38f35f28c3ccee",
            "readOnly": true
          },
          "dynamicWorkspaceIds": {
            "type": "array",
            "description": "List of workspace IDs that use this global record type dynamically",
            "items": {
              "type": "string"
            },
            "readOnly": true
          }
        },
        "required": [
          "displayName"
        ]
      },
      "RecordTypeExternalOptionsDto": {
        "type": "object",
        "description": "External options for external record types",
        "properties": {
          "connection": {
            "type": "string",
            "description": "External connection type",
            "enum": [
              "WORKFRONT",
              "AEM",
              "BRAND",
              "INTAKE"
            ],
            "example": "WORKFRONT"
          },
          "object": {
            "type": "string",
            "description": "External object type",
            "enum": [
              "PROJECT",
              "PORTFOLIO",
              "PROGRAM",
              "COMPANY",
              "GROUP",
              "TEMPLATE",
              "ASSET",
              "BRAND",
              "ORIGINAL_REQUEST"
            ],
            "example": "PROJECT"
          },
          "fields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Field mappings between external and internal fields"
          }
        }
      },
      "RecordTypePermissionSettingsDto": {
        "type": "object",
        "description": "Default record-level permission rule for a record type",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/DefaultPermissionMode",
            "description": "OPEN (all workspace contributors can edit new records), RESTRICTED (only the creator + selected subjects can edit; inheritance of edit access disabled), or NO_ACCESS (only the creator + selected subjects can even view; inheritance of view and edit disabled - mirrors the per-record \"Only Selected People Can Have Access\" wildcard. Requires the wf-planning-record-level-permissions-no-access feature and only supports USER/GROUP/TEAM subjects)",
            "example": "RESTRICTED"
          },
          "subjects": {
            "type": "array",
            "description": "Subjects with explicit access in RESTRICTED/NO_ACCESS mode. Retained across mode toggles so a prior selection is restored when switching back. NO_ACCESS only supports USER/GROUP/TEAM subjects.",
            "items": {
              "$ref": "#/components/schemas/PermissionSubjectDto"
            }
          }
        },
        "required": [
          "mode"
        ]
      },
      "SharingSubjectDto": {
        "type": "object",
        "description": "A subject (user/group/team/role/company) with a per-subject role in a default record permissions rule",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the subject",
            "example": "642f1c0a0e38f35f28c3ccee",
            "minLength": 1
          },
          "type": {
            "$ref": "#/components/schemas/PermissionSubjectType",
            "description": "Type of the subject",
            "example": "USER"
          },
          "role": {
            "type": "string",
            "description": "Role granted to the subject on new records. Records support only VIEWER (\"View record\") or EDITOR (\"Manage record\") — MANAGER is rejected.",
            "enum": [
              "viewer",
              "editor",
              "manager"
            ],
            "example": "EDITOR"
          },
          "displayName": {
            "type": "string",
            "description": "Display name of the subject, resolved from Redrock at read time",
            "example": "Jane Doe",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "role",
          "type"
        ]
      },
      "FieldDateOptions": {
        "type": "object",
        "properties": {
          "dateFormat": {
            "type": "string",
            "enum": [
              "locale",
              "standard",
              "friendly",
              "european",
              "iso",
              "short",
              "medium",
              "long"
            ]
          },
          "timeFormat": {
            "type": "string",
            "enum": [
              "h12",
              "h24"
            ]
          },
          "useSameTimezoneForAllCollaborators": {
            "type": "boolean"
          },
          "timezoneId": {
            "type": "string"
          }
        }
      },
      "FieldDateOptionsDto": {
        "type": "object",
        "description": "Date field options",
        "properties": {
          "dateFormat": {
            "type": "string",
            "description": "Date format. Required on create/PUT for DATE fields.",
            "enum": [
              "locale",
              "standard",
              "friendly",
              "european",
              "iso",
              "short",
              "medium",
              "long"
            ]
          },
          "timeFormat": {
            "type": "string",
            "description": "Time format",
            "enum": [
              "h12",
              "h24"
            ]
          }
        }
      },
      "FieldDocumentOptionsDto": {
        "type": "object",
        "description": "Document field options. Required on create/PUT for DOCUMENT fields; not required on PATCH.",
        "properties": {
          "showThumbnail": {
            "type": "boolean",
            "description": "Whether to display document thumbnails"
          },
          "showTitle": {
            "type": "boolean",
            "description": "Whether to display document titles"
          }
        }
      },
      "FieldDto": {
        "type": "object",
        "description": "Field data for record types",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the field",
            "example": "F693ab1c96f11ea3f4175e716",
            "readOnly": true
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who created this entity",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "description": "Date/time when this entity was created",
            "example": "2026-01-15T10:30:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "updatedBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who last updated this entity",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "description": "Date/time when this entity was last updated",
            "example": "2026-01-15T14:45:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "alias": {
            "type": "string",
            "description": "Unique alias identifier for the field",
            "example": "campaign_name",
            "readOnly": true
          },
          "displayName": {
            "type": "string",
            "description": "Display name of the field. Maximum 256 characters; must be unique within the parent record type.",
            "example": "Campaign Name",
            "maxLength": 256,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "Type of the field. Subject to per-record-type quotas: max 20 long-text, max 20 formula, max 30 reference. lookup and document are not directly creatable.",
            "enum": [
              "text",
              "long-text",
              "number",
              "percentage",
              "currency",
              "date",
              "single-select",
              "multi-select",
              "boolean",
              "reference",
              "user",
              "formula",
              "created-by",
              "created-at",
              "updated-by",
              "updated-at",
              "record-id"
            ],
            "example": "text"
          },
          "description": {
            "type": "string",
            "description": "Description of the field. Maximum 512 characters.",
            "example": "Name of the marketing campaign",
            "maxLength": 512,
            "minLength": 0
          },
          "linkedField": {
            "$ref": "#/components/schemas/FieldDto",
            "description": "Linked field for reference and lookup fields"
          },
          "options": {
            "type": "array",
            "description": "Field options for single-select and multi-select fields. Required (non-empty) on create/PUT for those types; every option needs a non-blank displayName, and both displayName (case-insensitive) and non-null name values must be unique within the list.",
            "items": {
              "$ref": "#/components/schemas/FieldOptionDto"
            }
          },
          "defaultOptions": {
            "type": "array",
            "description": "Default options for single-select and multi-select fields",
            "items": {
              "type": "string"
            }
          },
          "dateOptions": {
            "$ref": "#/components/schemas/FieldDateOptionsDto",
            "description": "Date field options. Required on create/PUT for date fields (dateOptions.dateFormat must be set); not required on PATCH."
          },
          "numberOptions": {
            "$ref": "#/components/schemas/FieldNumberOptionsDto",
            "description": "Number field options for number, percentage, and currency fields. Required on create/PUT for number/percentage/currency fields (numberOptions.currency is additionally required for currency); not required on PATCH."
          },
          "referenceOptions": {
            "$ref": "#/components/schemas/FieldReferenceOptionsDto",
            "description": "Reference field options"
          },
          "lookupOptions": {
            "$ref": "#/components/schemas/FieldLookupOptionsDto",
            "description": "Lookup field options"
          },
          "formulaOptions": {
            "$ref": "#/components/schemas/FieldFormulaOptionsDto",
            "description": "Formula field options"
          },
          "userOptions": {
            "$ref": "#/components/schemas/FieldUserOptionsDto",
            "description": "User field options. Required on create/PUT for user fields (userOptions.multipleUsersAllowed must be set); not required on PATCH."
          },
          "defaultUsers": {
            "type": "array",
            "description": "Default user option",
            "items": {
              "type": "string"
            }
          },
          "documentOptions": {
            "$ref": "#/components/schemas/FieldDocumentOptionsDto",
            "description": "Document field options. Document fields are not directly creatable; on PUT of an existing document field these options are required. Not required on PATCH."
          },
          "hasError": {
            "type": "boolean",
            "description": "Indicates if the field has an error"
          },
          "isHtmlNative": {
            "type": "boolean",
            "description": "Indicates if the long text field is HTML native"
          },
          "restricted": {
            "type": "boolean",
            "description": "Indicates whether the field is currently restricted to selected users only (field-sharing wildcard set to \"selected users\"). Read-only.",
            "readOnly": true
          },
          "metadata": {
            "$ref": "#/components/schemas/FieldMetadataDto",
            "description": "Field metadata"
          }
        }
      },
      "FieldFormulaOptionsDto": {
        "type": "object",
        "description": "Formula field options",
        "properties": {
          "formula": {
            "type": "string",
            "description": "Formula expression"
          },
          "returnType": {
            "type": "string",
            "description": "Return type of the formula",
            "enum": [
              "DATE",
              "DATETIME",
              "NUMBER",
              "PERCENTAGE",
              "CURRENCY",
              "TEXT",
              "TEXT_ARRAY"
            ]
          },
          "numberOptions": {
            "$ref": "#/components/schemas/FieldNumberOptions",
            "description": "Number options for number-type formulas"
          },
          "dateOptions": {
            "$ref": "#/components/schemas/FieldDateOptions",
            "description": "Date options for date-type formulas"
          }
        }
      },
      "FieldLookupOptionsDto": {
        "type": "object",
        "description": "Lookup field options",
        "properties": {
          "referenceFieldId": {
            "type": "string",
            "description": "Reference field ID"
          },
          "rollup": {
            "type": "string",
            "description": "Rollup function (e.g., SUM, AVG, COUNT)"
          },
          "sourceField": {
            "$ref": "#/components/schemas/FieldDto",
            "description": "Source field being looked up"
          }
        }
      },
      "FieldMetadataDto": {
        "type": "object",
        "description": "Field metadata",
        "properties": {
          "originType": {
            "type": "string",
            "description": "Origin type of the field"
          },
          "extendedRollup": {
            "type": "string",
            "description": "Extended rollup information"
          }
        }
      },
      "FieldNumberOptions": {
        "type": "object",
        "properties": {
          "precision": {
            "type": "integer",
            "format": "int32"
          },
          "allowNegatives": {
            "type": "boolean"
          },
          "currency": {
            "type": "string",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "AON",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGL",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BYR",
              "BZD",
              "CAD",
              "CDF",
              "CHF",
              "CLP",
              "CNY",
              "COP",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHC",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LTL",
              "LVL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRO",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MYR",
              "MZM",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STD",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGS",
              "UGX",
              "USD",
              "UYU",
              "UZS",
              "VEF",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAF",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPF",
              "YER",
              "ZAR",
              "ZMK",
              "ZMW",
              "ZWD",
              "ZWG",
              "ZWL"
            ]
          },
          "visualizationType": {
            "type": "string",
            "enum": [
              "TEXT",
              "PROGRESS_BAR",
              "PROGRESS_CIRCLE"
            ]
          },
          "financeType": {
            "type": "string",
            "enum": [
              "GENERAL",
              "BILLING",
              "COST",
              "COMBINED"
            ]
          }
        }
      },
      "FieldNumberOptionsDto": {
        "type": "object",
        "description": "Number field options for number, percentage, and currency fields",
        "properties": {
          "precision": {
            "type": "integer",
            "format": "int32",
            "description": "Decimal places (0-4)"
          },
          "allowNegatives": {
            "type": "boolean",
            "description": "Whether negative values are allowed"
          },
          "currency": {
            "type": "string",
            "description": "Currency code (e.g. USD, EUR, GBP); only for currency fields. Required on create/PUT for CURRENCY fields.",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "AON",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGL",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BYR",
              "BZD",
              "CAD",
              "CDF",
              "CHF",
              "CLP",
              "CNY",
              "COP",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHC",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LTL",
              "LVL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRO",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MYR",
              "MZM",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STD",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGS",
              "UGX",
              "USD",
              "UYU",
              "UZS",
              "VEF",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAF",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPF",
              "YER",
              "ZAR",
              "ZMK",
              "ZMW",
              "ZWD",
              "ZWG",
              "ZWL"
            ]
          },
          "visualizationType": {
            "type": "string",
            "description": "Display format: TEXT (default), PROGRESS_BAR, or PROGRESS_CIRCLE",
            "enum": [
              "TEXT",
              "PROGRESS_BAR",
              "PROGRESS_CIRCLE"
            ]
          },
          "financeType": {
            "type": "string",
            "description": "Finance permission classification for currency fields: general, billing, cost, or combined (lower case only). combined requires general, billing, and cost view permission all at once, not just one. Absent/null means no access restriction. Only for currency fields; requires field-level permissions; not available for standalone (Planning-only) tenants.",
            "enum": [
              "GENERAL",
              "BILLING",
              "COST",
              "COMBINED"
            ]
          }
        }
      },
      "FieldOptionDto": {
        "type": "object",
        "description": "Field option for single-select and multi-select fields",
        "properties": {
          "name": {
            "description": "Name identifier for the option. When provided, must be unique among the field's other options."
          },
          "displayName": {
            "type": "string",
            "description": "Display name for the option. Required (non-blank) on create/PUT, and must be unique (case-insensitive) among the field's other options."
          },
          "color": {
            "type": "string",
            "description": "Color code for the option"
          },
          "groupId": {
            "type": "string",
            "description": "Group ID for grouped options"
          }
        }
      },
      "FieldReferenceExternalOptionsDto": {
        "type": "object",
        "description": "External reference options for external connections",
        "properties": {
          "connectionName": {
            "type": "string",
            "description": "Connection name"
          },
          "objectName": {
            "type": "string",
            "description": "Object name in the external system"
          },
          "connectionOptions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Connection-specific options"
          }
        }
      },
      "FieldReferenceLookupFieldDto": {
        "type": "object",
        "description": "Lookup field configuration for reference fields",
        "properties": {
          "fieldId": {
            "type": "string",
            "description": "Field ID to auto-create as a lookup from the linked record type"
          },
          "rollup": {
            "type": "string",
            "description": "Optional aggregation function: sum, avg, min, max, or dist"
          }
        }
      },
      "FieldReferenceOptionsDto": {
        "type": "object",
        "description": "Reference field options",
        "properties": {
          "multiple": {
            "type": "boolean",
            "description": "Whether multiple records can be selected"
          },
          "showThumbnail": {
            "type": "boolean",
            "description": "Whether to show thumbnail"
          },
          "showTitle": {
            "type": "boolean",
            "description": "Whether to show title"
          },
          "showColor": {
            "type": "boolean",
            "description": "Whether to show color"
          },
          "recordTypeId": {
            "type": "string",
            "description": "Referenced record type ID"
          },
          "isExternal": {
            "type": "boolean",
            "description": "Whether the reference is external"
          },
          "createBackReference": {
            "type": "boolean",
            "description": "Whether to create a back reference"
          },
          "backField": {
            "$ref": "#/components/schemas/FieldDto",
            "description": "Back reference field"
          },
          "externalOptions": {
            "$ref": "#/components/schemas/FieldReferenceExternalOptionsDto",
            "description": "External options for external references"
          },
          "filters": {
            "type": "object",
            "additionalProperties": {},
            "description": "Filters for the reference field"
          },
          "connectionFilters": {
            "type": "array",
            "description": "Connection filters restricting which target records are selectable for the reference field",
            "items": {}
          },
          "workfrontFilterIds": {
            "type": "array",
            "description": "IDs of the Workfront saved filters attached to this Workfront object connection field. The picker offers only objects matching every attached filter. Omit or send null to leave the stored list unchanged; send an empty array to remove all attached filters.",
            "items": {
              "type": "string"
            }
          },
          "lookupFields": {
            "type": "array",
            "description": "Lookup fields for the reference",
            "items": {
              "$ref": "#/components/schemas/FieldReferenceLookupFieldDto"
            }
          },
          "scopeWorkspaceIds": {
            "type": "array",
            "description": "Scope workspace IDs for global record types",
            "items": {
              "type": "string"
            }
          },
          "globalRecordTypeWorkspaceFieldId": {
            "type": "string",
            "description": "Global record type workspace field ID"
          },
          "isControlled": {
            "type": "boolean",
            "description": "Whether the referenced record type is controlled by this reference (drives cascading connections)"
          }
        }
      },
      "FieldUserOptionsDto": {
        "type": "object",
        "description": "User field options",
        "properties": {
          "multipleUsersAllowed": {
            "type": "boolean",
            "description": "Whether multiple users can be selected. Required on create/PUT for USER fields."
          }
        }
      },
      "RecordTypeBaseDto": {
        "type": "object",
        "description": "Base record type data containing common record type properties",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the entity",
            "example": "69a976d02587b929c9e26dfa",
            "readOnly": true
          },
          "createdBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who created this entity",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "description": "Date/time when this entity was created",
            "example": "2026-01-15T10:30:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "updatedBy": {
            "$ref": "#/components/schemas/UserReferenceDto",
            "description": "User who last updated this entity",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "description": "Date/time when this entity was last updated",
            "example": "2026-01-15T14:45:00.000Z",
            "pattern": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "readOnly": true
          },
          "alias": {
            "type": "string",
            "description": "Unique alias identifier for the record type",
            "example": "campaigns",
            "readOnly": true
          },
          "displayName": {
            "type": "string",
            "description": "Display name of the record type. Maximum 255 characters; cannot be blank.",
            "example": "Campaigns",
            "maxLength": 255,
            "minLength": 0
          },
          "description": {
            "type": "string",
            "description": "Description of the record type purpose. Maximum 1024 characters.",
            "example": "Marketing campaigns and promotional activities",
            "maxLength": 1024,
            "minLength": 0
          },
          "primaryFieldId": {
            "type": "string",
            "description": "ID of the primary field for this record type",
            "example": "F693ab1c96f11ea3f4175e716"
          },
          "icon": {
            "type": "string",
            "description": "Icon identifier for the record type",
            "example": "diamond"
          },
          "color": {
            "type": "string",
            "description": "Color theme for the record type",
            "example": "purple"
          },
          "isExternal": {
            "type": "boolean",
            "description": "Indicates if this is an external record type",
            "example": false
          },
          "sourceRecordTypeId": {
            "type": "string",
            "description": "ID of an existing global record type to attach to the workspace (used only on create). When provided, the record type is not created but attached as a dynamic usage.",
            "example": "Rt69b14f7e0e38f35f28c3ccee",
            "writeOnly": true
          },
          "permissionSettings": {
            "$ref": "#/components/schemas/RecordTypePermissionSettingsDto",
            "description": "Default record-level permission rule for this record type. On read, the resolved rule for the current workspace context (defaulted to OPEN when never configured); omitted when the default-record-permissions feature is disabled. On PATCH/PUT, set this to configure the rule — for global record types it applies to the workspace given by the scopeWorkspaceId query param (defaulting to the primary workspace)."
          },
          "defaultRecordPermissions": {
            "$ref": "#/components/schemas/DefaultRecordPermissionsDto",
            "description": "Record-sharing-aligned default permission rule (wildcard + inheritance + per-subject role). On read, the resolved rule for the current workspace context; omitted when the wf-planning-default-permission-enhancements feature is disabled. On PATCH/PUT, set this to configure the rule — for global record types it applies to the workspace given by the scopeWorkspaceId query param (defaulting to the primary workspace). Supersedes permissionSettings, which is rejected on write while enhancements are enabled."
          }
        },
        "required": [
          "displayName"
        ]
      },
      "RecordSearchRequestDto": {
        "type": "object",
        "description": "Search criteria including filters, sorting, and grouping",
        "properties": {
          "recordTypeId": {
            "type": "string",
            "description": "ID of the record type to search within",
            "example": "Rt69b14f7e0e38f35f28c3ccee"
          },
          "recordTypeAlias": {
            "type": "string",
            "description": "Alias of the record type to search within",
            "example": "campaigns"
          },
          "filter": {
            "$ref": "#/components/schemas/FilterGroupDto",
            "description": "Filter criteria using the composite filter pattern. Supports recursive AND/OR nesting with strongly-typed conditions."
          },
          "sort": {
            "type": "array",
            "description": "Sorting configuration for records",
            "items": {
              "$ref": "#/components/schemas/SortDto"
            }
          },
          "group": {
            "type": "array",
            "description": "Grouping configuration for records",
            "items": {
              "$ref": "#/components/schemas/GroupDto"
            }
          },
          "scopeWorkspaceIds": {
            "type": "array",
            "description": "List of workspace IDs to scope the search to (for global record types)",
            "example": [
              "Ws123",
              "Ws456"
            ],
            "items": {
              "type": "string"
            }
          },
          "globalRecordTypeWorkspaceFieldId": {
            "type": "string",
            "description": "ID of the global record type workspace field (for global record types)",
            "example": "F693ab1c96f11ea3f4175e717"
          }
        }
      },
      "PageRecordDto": {
        "type": "object",
        "properties": {
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecordDto"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "empty": {
            "type": "boolean"
          }
        }
      },
      "PageableObject": {
        "type": "object",
        "properties": {
          "paged": {
            "type": "boolean"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int64"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "unpaged": {
            "type": "boolean"
          }
        }
      },
      "RecordGroupDto": {
        "type": "object",
        "description": "Group of records with common field values",
        "properties": {
          "fieldId": {
            "type": "string",
            "description": "ID of the field used for grouping",
            "example": "F693ab1c96f11ea3f4175e716"
          },
          "value": {
            "description": "Value of the grouping field",
            "example": "Active"
          },
          "recordIds": {
            "type": "array",
            "description": "List of record IDs in this group",
            "example": [
              "R123",
              "R456",
              "R789"
            ],
            "items": {
              "type": "string"
            }
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "description": "Count of records in this group",
            "example": 3
          }
        }
      },
      "RecordSearchPageDto": {
        "type": "object",
        "description": "Paginated search response containing records and groups",
        "properties": {
          "records": {
            "$ref": "#/components/schemas/PageRecordDto",
            "description": "Paginated records matching the search criteria"
          },
          "groups": {
            "type": "array",
            "description": "List of record groups (if grouping was requested)",
            "items": {
              "$ref": "#/components/schemas/RecordGroupDto"
            }
          }
        }
      },
      "SortObject": {
        "type": "object",
        "properties": {
          "sorted": {
            "type": "boolean"
          },
          "empty": {
            "type": "boolean"
          },
          "unsorted": {
            "type": "boolean"
          }
        }
      },
      "MoveRecordsRequestDto": {
        "type": "object",
        "description": "Move request specifying which records to move and where",
        "properties": {
          "recordIds": {
            "type": "array",
            "description": "IDs of the records to move, in the order they should appear at the destination.",
            "example": [
              "Rc6796...01",
              "Rc6796...02"
            ],
            "items": {
              "type": "string",
              "minLength": 1
            },
            "maxItems": 100,
            "minItems": 0
          },
          "putAfterRecordId": {
            "type": "string",
            "description": "Place the moved records immediately AFTER this record. Mutually exclusive with putBeforeRecordId.",
            "example": "Rc67a1..."
          },
          "putBeforeRecordId": {
            "type": "string",
            "description": "Place the moved records immediately BEFORE this record. Mutually exclusive with putAfterRecordId.",
            "example": "Rc67a2..."
          }
        },
        "required": [
          "recordIds"
        ]
      },
      "CreateAccessRequestDto": {
        "type": "object",
        "description": "Request body for creating an access request",
        "properties": {
          "message": {
            "type": "string",
            "description": "Optional message to include with the access request",
            "maxLength": 2000,
            "minLength": 0
          }
        }
      },
      "MemberGrantDto": {
        "type": "object",
        "description": "A subject and role to grant or update on a resource",
        "properties": {
          "subjectId": {
            "type": "string",
            "description": "ID of the user, group, team, role, or company",
            "minLength": 1
          },
          "subjectType": {
            "type": "string",
            "description": "Type of the subject",
            "enum": [
              "user",
              "group",
              "team",
              "role",
              "company"
            ]
          },
          "role": {
            "type": "string",
            "description": "Role to assign to the subject",
            "enum": [
              "viewer",
              "editor",
              "manager"
            ]
          }
        },
        "required": [
          "role",
          "subjectId",
          "subjectType"
        ]
      },
      "MemberRevokeDto": {
        "type": "object",
        "description": "A subject to revoke permissions from",
        "properties": {
          "subjectId": {
            "type": "string",
            "description": "ID of the subject to revoke access from",
            "minLength": 1
          },
          "subjectType": {
            "type": "string",
            "description": "Type of the subject",
            "enum": [
              "user",
              "group",
              "team",
              "role",
              "company"
            ]
          }
        },
        "required": [
          "subjectId",
          "subjectType"
        ]
      },
      "UpdateMembersRequestDto": {
        "type": "object",
        "description": "Bulk grant, update, and revoke operations for resource members",
        "properties": {
          "grant": {
            "type": "array",
            "description": "Members to grant new access to",
            "items": {
              "$ref": "#/components/schemas/MemberGrantDto"
            }
          },
          "update": {
            "type": "array",
            "description": "Members whose existing role should be changed",
            "items": {
              "$ref": "#/components/schemas/MemberGrantDto"
            }
          },
          "revoke": {
            "type": "array",
            "description": "Members to revoke all access from",
            "items": {
              "$ref": "#/components/schemas/MemberRevokeDto"
            }
          },
          "inheritViewOnly": {
            "type": "boolean",
            "description": "Inheritance mode: true = downgrade inherited access to view-only, false = fully inherited. Valid for record-types, records, and fields; ignored when a record's/field's wildcard is SELECTED_USERS_ONLY (that state isn't inheriting)."
          },
          "wildcard": {
            "type": "string",
            "description": "Set wildcard access mode. Valid for records and fields (not record-types); defaults to EVERYONE_IN_WORKSPACE if never set. SELECTED_USERS_ONLY additionally requires the record-level no-access feature.",
            "enum": [
              "SELECTED_USERS_ONLY",
              "EVERYONE_IN_WORKSPACE"
            ]
          }
        }
      },
      "CursorInfo": {
        "type": "object",
        "description": "Cursor pagination metadata",
        "properties": {
          "nextCursor": {
            "type": "string",
            "description": "Opaque cursor for fetching the next page. Absent when there are no more pages.",
            "example": "UnQ2OWIxNGY3ZTBlMzhmMzVmMjhjM2NjZWU="
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether more items exist beyond this page"
          }
        },
        "required": [
          "hasMore"
        ]
      },
      "CursorResponseWorkspaceDto": {
        "type": "object",
        "description": "Cursor-paginated list of workspaces",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of workspaces in the current page",
            "items": {
              "$ref": "#/components/schemas/WorkspaceBaseDto"
            }
          },
          "cursor": {
            "$ref": "#/components/schemas/CursorInfo",
            "description": "Cursor metadata for fetching subsequent pages"
          }
        }
      },
      "CursorResponseRecordTypeDto": {
        "type": "object",
        "description": "Cursor-paginated list of record types",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of record types in the current page",
            "items": {
              "$ref": "#/components/schemas/RecordTypeBaseDto"
            }
          },
          "cursor": {
            "$ref": "#/components/schemas/CursorInfo",
            "description": "Cursor metadata for fetching subsequent pages"
          }
        }
      },
      "ViewRestrictionDto": {
        "type": "object",
        "properties": {
          "restrictionStatus": {
            "type": "string",
            "description": "Field-level-permission restriction status: INACCESSIBLE (a referenced field the caller cannot view is used), HAS_RESTRICTED_CONTENT (restricted columns/sorting/grouping were dropped), or null (no field restriction).",
            "enum": [
              "INACCESSIBLE",
              "HAS_RESTRICTED_CONTENT"
            ],
            "readOnly": true
          }
        }
      },
      "CellValueDto": {
        "type": "object",
        "description": "A snapshot of a field value at a point in time",
        "properties": {
          "value": {
            "description": "The stored value of the field at the time of the change"
          },
          "fieldSnapshot": {
            "$ref": "#/components/schemas/FieldSnapshotDto",
            "description": "Snapshot of the field metadata at the time of the change"
          }
        }
      },
      "CursorResponseHistoryEntryDto": {
        "type": "object",
        "description": "Cursor-paginated list of history entries",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of history entries in the current page",
            "items": {
              "$ref": "#/components/schemas/HistoryEntryDto"
            }
          },
          "cursor": {
            "$ref": "#/components/schemas/CursorInfo",
            "description": "Cursor metadata for fetching subsequent pages"
          }
        }
      },
      "FieldSnapshotDto": {
        "type": "object",
        "description": "Snapshot of field metadata captured at the time of the change",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID of the field"
          },
          "type": {
            "type": "string",
            "description": "Type of the field"
          },
          "displayName": {
            "type": "string",
            "description": "Display name of the field"
          },
          "description": {
            "type": "string",
            "description": "Description of the field"
          },
          "hasError": {
            "type": "boolean",
            "description": "Whether the field has a configuration error"
          },
          "options": {
            "type": "array",
            "description": "Options for single-select or multi-select fields",
            "items": {
              "$ref": "#/components/schemas/FieldOptionDto"
            }
          },
          "dateOptions": {
            "$ref": "#/components/schemas/FieldDateOptionsDto",
            "description": "Date-specific configuration options"
          },
          "numberOptions": {
            "$ref": "#/components/schemas/FieldNumberOptionsDto",
            "description": "Number-specific configuration options"
          },
          "userOptions": {
            "$ref": "#/components/schemas/FieldUserOptionsDto",
            "description": "User-specific configuration options"
          }
        }
      },
      "HistoryEntryDto": {
        "type": "object",
        "description": "A single record field change event",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of this history entry"
          },
          "recordId": {
            "type": "string",
            "description": "ID of the record this change belongs to"
          },
          "createdBy": {
            "type": "string",
            "description": "ID of the user who made the change"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO-8601 timestamp of when the change occurred",
            "example": "2026-01-15T10:30:00.000Z"
          },
          "fieldId": {
            "type": "string",
            "description": "ID of the field that changed"
          },
          "before": {
            "$ref": "#/components/schemas/CellValueDto",
            "description": "Field state before the change"
          },
          "after": {
            "$ref": "#/components/schemas/CellValueDto",
            "description": "Field state after the change"
          }
        }
      },
      "CursorResponseViewDto": {
        "type": "object",
        "description": "Cursor-paginated list of views",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of views in the current page",
            "items": {
              "$ref": "#/components/schemas/ViewDto"
            }
          },
          "cursor": {
            "$ref": "#/components/schemas/CursorInfo",
            "description": "Cursor metadata for fetching subsequent pages"
          }
        }
      },
      "StreamingResponseBody": {},
      "CursorResponseFieldDto": {
        "type": "object",
        "description": "Cursor-paginated list of fields",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of fields in the current page",
            "items": {
              "$ref": "#/components/schemas/FieldDto"
            }
          },
          "cursor": {
            "$ref": "#/components/schemas/CursorInfo",
            "description": "Cursor metadata for fetching subsequent pages"
          }
        }
      },
      "PermissionDto": {
        "type": "object",
        "description": "Current user's effective permissions on a resource",
        "properties": {
          "canView": {
            "type": "boolean",
            "description": "Whether the user can view this resource"
          },
          "canEdit": {
            "type": "boolean",
            "description": "Whether the user can edit this resource"
          },
          "canDelete": {
            "type": "boolean",
            "description": "Whether the user can delete this resource"
          },
          "canAdd": {
            "type": "boolean",
            "description": "Whether the user can add items to this resource"
          }
        }
      },
      "AccessRequestDto": {
        "type": "object",
        "description": "A pending access request for a resource",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the access request"
          },
          "message": {
            "type": "string",
            "description": "Optional message from the requester"
          },
          "requester": {
            "$ref": "#/components/schemas/RequesterDto",
            "description": "User who submitted the request"
          }
        }
      },
      "RequesterDto": {
        "type": "object",
        "description": "The user who submitted an access request",
        "properties": {
          "id": {
            "type": "string",
            "description": "User's external identifier"
          },
          "name": {
            "type": "string",
            "description": "User's display name"
          },
          "email": {
            "type": "string",
            "description": "User's email address"
          }
        }
      },
      "MemberPermissionDto": {
        "type": "object",
        "description": "A subject (user, group, team, role, or company) with a role on a resource",
        "properties": {
          "subjectId": {
            "type": "string",
            "description": "ID of the subject"
          },
          "subjectType": {
            "type": "string",
            "description": "Type of the subject",
            "enum": [
              "user",
              "group",
              "team",
              "role",
              "company"
            ]
          },
          "name": {
            "type": "string",
            "description": "Display name of the subject"
          },
          "avatarUrl": {
            "type": "string",
            "description": "Avatar URL of the subject, if available"
          },
          "role": {
            "type": "string",
            "description": "Role of the subject on this resource",
            "enum": [
              "viewer",
              "editor",
              "manager"
            ]
          }
        }
      },
      "MemberResponse": {
        "type": "object",
        "description": "Members and sharing settings for a resource",
        "properties": {
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MemberPermissionDto"
            }
          },
          "wildcard": {
            "type": "string",
            "description": "Wildcard access mode for the resource's members. Only set for records (null for workspaces, record-types, and views). Defaults to EVERYONE_IN_WORKSPACE; SELECTED_USERS_ONLY is only reachable for records.",
            "enum": [
              "SELECTED_USERS_ONLY",
              "EVERYONE_IN_WORKSPACE"
            ]
          },
          "inheritViewOnly": {
            "type": "boolean",
            "description": "Whether the resource's inherited access is downgraded to view-only (true) or fully inherited (false). Set for record-types, records, and fields; null for workspaces and views, and null for a record/field that is not inheriting at all (wildcard SELECTED_USERS_ONLY)."
          }
        }
      },
      "BulkDeleteRequestDto": {
        "type": "object",
        "description": "List of record IDs to delete",
        "properties": {
          "ids": {
            "type": "array",
            "description": "List of record IDs to delete (max 100)",
            "example": [
              "r1",
              "r2"
            ],
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 0
          }
        },
        "required": [
          "ids"
        ]
      },
      "DeleteAccessRequestsDto": {
        "type": "object",
        "description": "Request body for dismissing access requests",
        "properties": {
          "requestIds": {
            "type": "array",
            "description": "IDs of access requests to dismiss",
            "items": {
              "type": "string"
            },
            "minItems": 1
          }
        },
        "required": [
          "requestIds"
        ]
      }
    }
  }
}