From 77dd26c96c107c41f6931d8611a8c9120082773f Mon Sep 17 00:00:00 2001 From: Armen Avagumyan Date: Tue, 26 May 2026 11:22:04 +0400 Subject: [PATCH] fix: v1 json --- static/v1.json | 7700 ++++++------------------------------------------ 1 file changed, 827 insertions(+), 6873 deletions(-) diff --git a/static/v1.json b/static/v1.json index 4542450..d50b639 100644 --- a/static/v1.json +++ b/static/v1.json @@ -1,9 +1,9 @@ { - "openapi": "3.1.0", + "openapi": "3.0.1", "info": { "title": "Workfront Planning API", "description": "This is Workfront Planning Service API documentation. Workfront 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" + "version": "v1" }, "servers": [ { @@ -14,100 +14,69 @@ "tags": [ { "name": "Workspaces", - "description": "Workspace management. Limits: max 100,000 workspaces per tenant; max 256 characters for workspace name." + "description": "Workspace Controller" }, { "name": "Record Types", - "description": "Record type management. Limits: max 100 record types per workspace; max 255 characters for display name." + "description": "Record Type Controller" }, { "name": "Records", - "description": "Record management. Limits: max 25,000 records per record type; max 100 records per bulk operation; 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 PARAGRAPH (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- Fields per record type: 500\n- PARAGRAPH (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 any of these limits returns an HTTP 403 with a specific `errorCode` (e.g. `RECORD_TYPE_LIMIT_EXCEEDED`, `FIELD_LIMIT_EXCEEDED`, `VIEW_LIMIT_EXCEEDED`)." + "description": "Record Controller" } ], "paths": { - "/v2/workspaces/{id}": { + "/v1/records/{id}": { "get": { "tags": [ - "Workspaces" + "Records" ], - "summary": "Get Workspace", - "description": "Retrieve a workspace by its ID.", - "operationId": "getWorkspace", + "summary": "Get Record", + "description": "Retrieve a specific record by its ID along with optional attributes.", + "operationId": "getRecord", "parameters": [ { "name": "id", "in": "path", - "description": "ID of the workspace to be retrieved", + "description": "ID of the record to be retrieved", "required": true, "schema": { "type": "string" } + }, + { + "name": "aliased", + "in": "query", + "description": "Flag to include alias support", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "attributes", + "in": "query", + "description": "List of attributes to be included in the response", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "*" + ] + }, + "example": "ALL" } ], "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" + "$ref": "#/components/schemas/RecordDto" } } } @@ -116,16 +85,16 @@ }, "put": { "tags": [ - "Workspaces" + "Records" ], - "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", + "summary": "Update Record", + "description": "Update an existing record with the given ID and details.", + "operationId": "updateRecord", "parameters": [ { "name": "id", "in": "path", - "description": "ID of the workspace to be updated", + "description": "ID of the record to be updated", "required": true, "schema": { "type": "string" @@ -136,7 +105,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkspaceBaseDto" + "$ref": "#/components/schemas/RecordDto" } } }, @@ -146,69 +115,9 @@ "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" + "$ref": "#/components/schemas/RecordDto" } } } @@ -217,16 +126,16 @@ }, "delete": { "tags": [ - "Workspaces" + "Records" ], - "summary": "Delete Workspace", - "description": "Delete a workspace by its ID.", - "operationId": "deleteWorkspace", + "summary": "Delete Record by ID", + "description": "Delete a specific record by its ID.", + "operationId": "deleteRecord", "parameters": [ { "name": "id", "in": "path", - "description": "ID of the workspace to be deleted", + "description": "ID of the record to be deleted", "required": true, "schema": { "type": "string" @@ -234,74 +143,25 @@ } ], "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" - } - } - } + "200": { + "description": "OK" } } - }, - "patch": { + } + }, + "/v1/records": { + "post": { "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" - } - } + "Records" ], + "summary": "Create Record", + "description": "Create a new record with the given details.", + "operationId": "createRecord", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkspaceBaseDto" + "$ref": "#/components/schemas/RecordDto" } } }, @@ -311,171 +171,182 @@ "200": { "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/WorkspaceBaseDto" + "$ref": "#/components/schemas/RecordDto" } } } + } + } + } + }, + "/v1/records/search": { + "get": { + "tags": [ + "Records" + ], + "summary": "Search Records by field values", + "description": "Search for records based on specific field values.", + "operationId": "searchRecordsGet", + "parameters": [ + { + "name": "recordTypeId", + "in": "query", + "description": "Id of the record type", + "required": false, + "schema": { + "type": "string" + } }, - "400": { - "description": "Bad Request (validation failure)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" - } - } + { + "name": "recordTypeAlias", + "in": "query", + "description": "Alias of the record type", + "required": false, + "schema": { + "type": "string" } }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" - } - } + { + "name": "aliased", + "in": "query", + "description": "Flag to include alias support", + "required": false, + "schema": { + "type": "boolean" } }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" - } - } + { + "name": "filters", + "in": "query", + "description": "Filters", + "required": false, + "schema": { + "type": "string" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" - } + { + "name": "groupingFieldIds", + "in": "query", + "description": "Grouping field ids", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" } } }, - "409": { - "description": "Conflict (write conflict, retry)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" - } - } + { + "name": "offset", + "in": "query", + "description": "Offset", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 0 } }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" - } - } + { + "name": "limit", + "in": "query", + "description": "Limit", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "default": 500 } - } - } - } - }, - "/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, + "name": "rowOrderViewId", + "in": "query", + "description": "Row order view id", + "required": false, "schema": { "type": "string" } + }, + { + "name": "attributes", + "in": "query", + "description": "List of attributes to be included in the response", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "*" + ] + }, + "example": "ALL" } ], "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" + "$ref": "#/components/schemas/GroupedRecordsDto" } } } } } }, - "put": { + "post": { "tags": [ - "Views" + "Records" ], - "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", + "summary": "Search Records by field values", + "description": "Search for records based on specific field values.", + "operationId": "searchRecordsPost", "parameters": [ { - "name": "id", - "in": "path", - "description": "ID of the view to be updated", - "required": true, + "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", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "attributes", + "in": "query", + "description": "List of attributes to be included in the response", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "*" + ] + }, + "example": "ALL" } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ViewDto" + "$ref": "#/components/schemas/RecordSearchDto" } } }, @@ -485,234 +356,150 @@ "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" + "$ref": "#/components/schemas/GroupedRecordsDto" } } } - }, - "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", + } + } + } + }, + "/v1/workspaces": { + "get": { + "tags": [ + "Workspaces" + ], + "summary": "Get All Workspaces", + "description": "Retrieve a list of all workspaces along with optional attributes.", + "operationId": "getWorkspaces", + "parameters": [ + { + "name": "attributes", + "in": "query", + "description": "List of attributes to be included in the response", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "*" + ] + }, + "example": "ALL" + } + ], + "responses": { + "200": { + "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" + "$ref": "#/components/schemas/WorkspaceListDto" } } } } } - }, - "delete": { + } + }, + "/v1/workspaces/{id}": { + "get": { "tags": [ - "Views" + "Workspaces" ], - "summary": "Delete View", - "description": "Delete a view by its ID.", - "operationId": "deleteView", + "summary": "Get Workspace", + "description": "Retrieve a workspace by its ID along with optional attributes.", + "operationId": "getWorkspace", "parameters": [ { "name": "id", "in": "path", - "description": "ID of the view to be deleted", + "description": "ID of the workspace to be retrieved", "required": true, "schema": { "type": "string" } + }, + { + "name": "attributes", + "in": "query", + "description": "List of attributes to be included in the response", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "*" + ] + }, + "example": "ALL" } ], "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", + "200": { + "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" + "$ref": "#/components/schemas/WorkspaceDto" } } } } } - }, - "patch": { + } + }, + "/v1/record-types": { + "get": { "tags": [ - "Views" + "Record Types" ], - "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", + "summary": "Get Record Types of specified Workspace", + "description": "Retrieve a list of record types associated with a specified workspace. If a user has view access to workspaces, they gain visibility into all record types.", + "operationId": "getRecordTypes", "parameters": [ { - "name": "id", - "in": "path", - "description": "ID of the view to be patched", + "name": "workspaceId", + "in": "query", + "description": "ID of the workspace", "required": true, "schema": { "type": "string" } + }, + { + "name": "attributes", + "in": "query", + "description": "List of attributes to be included in the response", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "*" + ] + }, + "example": "ALL" } ], - "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)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/V2ProblemDetail" + "type": "array", + "items": { + "$ref": "#/components/schemas/RecordTypeDto" + } } } } @@ -720,6056 +507,222 @@ } } }, - "/v2/records/{id}": { + "/v1/record-types/{id}": { "get": { "tags": [ - "Records" + "Record Types" ], - "summary": "Get Record", - "description": "Retrieve a record by its ID.", - "operationId": "getRecord", + "summary": "Get Record Type by ID", + "description": "Retrieve a specific record type by its ID along with optional attributes.", + "operationId": "getRecordType", "parameters": [ { "name": "id", "in": "path", - "description": "ID of the record to be retrieved", + "description": "ID of the record type to be retrieved", "required": true, "schema": { "type": "string" } + }, + { + "name": "attributes", + "in": "query", + "description": "List of attributes to be included in the response", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "*" + ] + }, + "example": "ALL" } ], "responses": { "200": { "description": "OK", "content": { - "application/json": { + "*/*": { "schema": { - "$ref": "#/components/schemas/RecordDto" + "$ref": "#/components/schemas/RecordTypeDto" } } } + } + } + } + } + }, + "components": { + "schemas": { + "CoverImage": { + "type": "object", + "properties": { + "url": { + "type": "string" }, - "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 - } - } - ], - "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" - } - } - ], - "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" - } - } - ], - "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.", - "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)", - "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.", - "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" - } - } - } - }, - "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" - } - } - ], - "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.", - "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)", - "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": { - "get": { - "tags": [ - "Permissions" - ], - "summary": "Get all members and their roles for a resource", - "description": "Lists all subjects (users, groups, teams) that have an explicit sharing relation on the resource. Requires MANAGE permission.", - "operationId": "getMembers", - "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/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" - } - } - } - } - } - }, - "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)", - "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/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/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 - } - } - ], - "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/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)", - "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": { - "$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}/inheritance": { - "get": { - "tags": [ - "Permissions" - ], - "summary": "Get inheritance setting for a record-type", - "description": "Returns whether workspace members inherit their workspace-level access on the record type. Only valid for record-types.", - "operationId": "getInheritance", - "parameters": [ - { - "name": "resourceType", - "in": "path", - "description": "Type of resource (must be record-types)", - "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": { - "$ref": "#/components/schemas/InheritanceDto" - } - } - } - }, - "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" - } - } - } - } - } - } - } - }, - "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" - ] - } - } - }, - "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": {} - } - } - }, - "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 (TABLE, TIMELINE, CALENDAR, LIST, GALLERY)", - "enum": [ - "TABLE", - "TIMELINE", - "CALENDAR", - "LIST", - "GALLERY" - ], - "example": "TABLE", - "minLength": 1 - }, - "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 - } - }, - "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)", - "example": "F69b14f7e0e38f35f28c3ccee" - }, - "endDateKey": { - "type": "string", - "description": "Field ID of the end date field (for timeline and calendar views)", - "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 - }, - "dynamicFieldMetadata": { - "$ref": "#/components/schemas/DynamicFieldMetadataDto", - "description": "Dynamic field metadata for global/dynamic record types" - } - } - }, - "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, APPROVED_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" - ] - }, - "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 - } - } - }, - "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 - }, - "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." - } - } - }, - "AuthzSubjectDtoV2": { - "type": "object", - "description": "Authorization subject reference (user, group, team, etc.)", - "properties": { - "type": { - "type": "string", - "description": "Type of the authorization subject", - "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" - ], - "example": "redrock/user" - }, - "id": { - "type": "string", - "description": "ID of the authorization subject", - "example": "U123abc" - } - } - }, - "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 - }, - "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", - "BRAND", - "AEM", - "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" - } - } - }, - "FieldAttachmentOptionsDto": { - "type": "object", - "description": "Attachment field options", - "properties": { - "showThumbnail": { - "type": "boolean", - "description": "Whether to display attachment thumbnails" - }, - "showTitle": { - "type": "boolean", - "description": "Whether to display attachment titles" - } - } - }, - "FieldDateOptions": { - "type": "object", - "properties": { - "dateFormat": { - "type": "string", - "enum": [ - "locale", - "standard", - "friendly", - "european", - "iso" - ] - }, - "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", - "enum": [ - "locale", - "standard", - "friendly", - "european", - "iso" - ] - }, - "timeFormat": { - "type": "string", - "description": "Time format", - "enum": [ - "h12", - "h24" - ] - } - } - }, - "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 PARAGRAPH (long text), max 20 FORMULA, max 30 REFERENCE.", - "enum": [ - "TEXT", - "PARAGRAPH", - "NUMBER", - "PERCENTAGE", - "CURRENCY", - "DATE", - "SINGLE_SELECT", - "MULTI_SELECT", - "CHECKBOX", - "REFERENCE", - "USER", - "FORMULA" - ], - "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", - "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" - }, - "numberOptions": { - "$ref": "#/components/schemas/FieldNumberOptionsDto", - "description": "Number field options for number, percentage, and currency fields" - }, - "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" - }, - "defaultUsers": { - "type": "array", - "description": "Default user option", - "items": { - "type": "string" - } - }, - "attachmentOptions": { - "$ref": "#/components/schemas/FieldAttachmentOptionsDto", - "description": "Attachment field options" - }, - "hasError": { - "type": "boolean", - "description": "Indicates if the field has an error" - }, - "isHtmlNative": { - "type": "boolean", - "description": "Indicates if the long text field is HTML native" - }, - "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", - "AON", - "ARS", - "AUD", - "AZN", - "BAM", - "BBD", - "BDT", - "BGL", - "BHD", - "BIF", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CUP", - "CVE", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "GBP", - "GEL", - "GHC", - "GMD", - "GNF", - "GTQ", - "GYD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "INR", - "IQD", - "IRR", - "ISK", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MRU", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZM", - "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", - "SLL", - "SOS", - "SRD", - "SSP", - "STN", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TZS", - "UAH", - "UGS", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XCD", - "XOF", - "YER", - "ZAR", - "ZMK", - "ZWD" - ] - }, - "visualizationType": { - "type": "string", - "enum": [ - "TEXT", - "PROGRESS_BAR", - "PROGRESS_CIRCLE" - ] - } - } - }, - "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", - "enum": [ - "AED", - "AFN", - "ALL", - "AMD", - "AON", - "ARS", - "AUD", - "AZN", - "BAM", - "BBD", - "BDT", - "BGL", - "BHD", - "BIF", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CUP", - "CVE", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "GBP", - "GEL", - "GHC", - "GMD", - "GNF", - "GTQ", - "GYD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "INR", - "IQD", - "IRR", - "ISK", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MRU", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZM", - "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", - "SLL", - "SOS", - "SRD", - "SSP", - "STN", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TZS", - "UAH", - "UGS", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XCD", - "XOF", - "YER", - "ZAR", - "ZMK", - "ZWD" - ] - }, - "visualizationType": { - "type": "string", - "description": "Display format: TEXT (default), PROGRESS_BAR, or PROGRESS_CIRCLE", - "enum": [ - "TEXT", - "PROGRESS_BAR", - "PROGRESS_CIRCLE" - ] - } - } - }, - "FieldOptionDto": { - "type": "object", - "description": "Field option for single-select and multi-select fields", - "properties": { - "name": { - "description": "Name identifier for the option" - }, - "displayName": { - "type": "string", - "description": "Display name for the option" - }, - "color": { - "type": "string", - "description": "Color code for the option" - }, - "groupId": { - "type": "string", - "description": "Group ID for grouped options" + "position": { + "type": "integer", + "format": "int32" } - } + }, + "readOnly": true }, - "FieldReferenceExternalOptionsDto": { + "RecordDto": { "type": "object", - "description": "External reference options for external connections", "properties": { - "connectionName": { - "type": "string", - "description": "Connection name" + "id": { + "type": "string" }, - "objectName": { - "type": "string", - "description": "Object name in the external system" + "createdBy": { + "type": "string" }, - "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" + "createdAt": { + "type": "string" }, - "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" + "updatedBy": { + "type": "string" }, - "showThumbnail": { - "type": "boolean", - "description": "Whether to show thumbnail" + "updatedAt": { + "type": "string" }, - "showTitle": { - "type": "boolean", - "description": "Whether to show title" + "customerId": { + "type": "string" }, - "showColor": { - "type": "boolean", - "description": "Whether to show color" + "imsOrgId": { + "type": "string" }, "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" + "type": "string" }, - "filters": { + "data": { "type": "object", - "additionalProperties": {}, - "description": "Filters for the reference field" - }, - "lookupFields": { - "type": "array", - "description": "Lookup fields for the reference", - "items": { - "$ref": "#/components/schemas/FieldReferenceLookupFieldDto" + "additionalProperties": { + "type": "object" } }, - "scopeWorkspaceIds": { - "type": "array", - "description": "Scope workspace IDs for global record types", - "items": { - "type": "string" - } + "recordExternalOptions": { + "$ref": "#/components/schemas/RecordExternalOptions" }, - "globalRecordTypeWorkspaceFieldId": { + "thumbnailUrl": { "type": "string", - "description": "Global record type workspace field ID" - } - } - }, - "FieldUserOptionsDto": { - "type": "object", - "description": "User field options", - "properties": { - "multipleUsersAllowed": { - "type": "boolean", - "description": "Whether multiple users can be selected" + "readOnly": true + }, + "coverImage": { + "$ref": "#/components/schemas/CoverImage" } } }, - "RecordTypeBaseDto": { + "RecordExternalOptions": { "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": { + "connection": { "type": "string", - "description": "ID of the primary field for this record type", - "example": "F693ab1c96f11ea3f4175e716" + "enum": [ + "WORKFRONT", + "AEM" + ] }, - "icon": { + "object": { "type": "string", - "description": "Icon identifier for the record type", - "example": "diamond" + "enum": [ + "PROJECT", + "PORTFOLIO", + "PROGRAM", + "COMPANY", + "GROUP", + "ASSET" + ] }, - "color": { - "type": "string", - "description": "Color theme for the record type", - "example": "purple" + "externalId": { + "type": "string" }, - "isExternal": { - "type": "boolean", - "description": "Indicates if this is an external record type", - "example": false + "connectionOptions": { + "type": "object", + "additionalProperties": { + "type": "object" + } }, - "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 + "link": { + "type": "string" } - }, - "required": [ - "displayName" - ] + } }, - "RecordSearchRequestDto": { + "JsonNode": { + "type": "object" + }, + "RecordSearchDto": { "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" + "type": "string" }, "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" - } + "type": "string" }, - "group": { - "type": "array", - "description": "Grouping configuration for records", - "items": { - "$ref": "#/components/schemas/GroupDto" - } + "filters": { + "$ref": "#/components/schemas/JsonNode" }, - "scopeWorkspaceIds": { + "groupingFieldIds": { "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" - }, - "first": { - "type": "boolean" - }, - "last": { - "type": "boolean" - }, - "size": { - "type": "integer", - "format": "int32" - }, - "content": { + "sorting": { "type": "array", "items": { - "$ref": "#/components/schemas/RecordDto" + "$ref": "#/components/schemas/RecordSorting" } }, - "number": { + "offset": { "type": "integer", "format": "int32" }, - "sort": { - "$ref": "#/components/schemas/SortObject" - }, - "pageable": { - "$ref": "#/components/schemas/PageableObject" - }, - "numberOfElements": { + "limit": { "type": "integer", "format": "int32" }, - "empty": { - "type": "boolean" + "rowOrderViewId": { + "type": "string" } } }, - "PageableObject": { + "RecordSorting": { "type": "object", "properties": { - "offset": { - "type": "integer", - "format": "int64" - }, - "sort": { - "$ref": "#/components/schemas/SortObject" - }, - "unpaged": { - "type": "boolean" + "fieldId": { + "type": "string" }, - "paged": { - "type": "boolean" + "direction": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + } + } + }, + "GroupedRecordsDto": { + "type": "object", + "properties": { + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecordDto" + } }, - "pageNumber": { - "type": "integer", - "format": "int32" + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecordGroupDto" + } }, - "pageSize": { + "totalCount": { "type": "integer", "format": "int32" } @@ -6777,552 +730,553 @@ }, "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" + "type": "string" }, "value": { - "description": "Value of the grouping field", - "example": "Active" + "type": "object" }, "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": { + "FieldDateOptionsDto": { "type": "object", - "description": "Paginated search response containing records and groups", "properties": { - "records": { - "$ref": "#/components/schemas/PageRecordDto", - "description": "Paginated records matching the search criteria" + "dateFormat": { + "type": "string", + "enum": [ + "locale", + "standard", + "friendly", + "european", + "iso" + ] }, - "groups": { - "type": "array", - "description": "List of record groups (if grouping was requested)", - "items": { - "$ref": "#/components/schemas/RecordGroupDto" - } + "timeFormat": { + "type": "string", + "enum": [ + "h12", + "h24" + ] } } }, - "SortObject": { + "FieldDto": { "type": "object", "properties": { - "empty": { - "type": "boolean" + "id": { + "type": "string" }, - "sorted": { - "type": "boolean" + "createdBy": { + "type": "string" }, - "unsorted": { - "type": "boolean" - } - } - }, - "MoveRecordsRequestDto": { - "type": "object", - "description": "Move request specifying which records to move and where", - "properties": { - "recordIds": { + "createdAt": { + "type": "string" + }, + "updatedBy": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "customerId": { + "type": "string" + }, + "imsOrgId": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "type": { + "type": "string" + }, + "linkedField": { + "$ref": "#/components/schemas/FieldDto" + }, + "description": { + "type": "string" + }, + "options": { "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 + "$ref": "#/components/schemas/FieldOptionDto" + } }, - "putAfterRecordId": { - "type": "string", - "description": "Place the moved records immediately AFTER this record. Mutually exclusive with putBeforeRecordId.", - "example": "Rc67a1..." + "dateOptions": { + "$ref": "#/components/schemas/FieldDateOptionsDto" }, - "putBeforeRecordId": { - "type": "string", - "description": "Place the moved records immediately BEFORE this record. Mutually exclusive with putAfterRecordId.", - "example": "Rc67a2..." + "numberOptions": { + "$ref": "#/components/schemas/FieldNumberOptionsDto" + }, + "referenceOptions": { + "$ref": "#/components/schemas/FieldReferenceOptionsDto" + }, + "lookupOptions": { + "$ref": "#/components/schemas/FieldLookupOptionsDto" + }, + "formulaOptions": { + "$ref": "#/components/schemas/FieldFormulaOptionsDto" + }, + "userOptions": { + "$ref": "#/components/schemas/FieldUserOptionsDto" + }, + "hasError": { + "type": "boolean" } - }, - "required": [ - "recordIds" - ] + } }, - "CreateAccessRequestDto": { + "FieldFormulaOptionsDto": { "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 + "formula": { + "type": "string" } } }, - "MemberGrantDto": { + "FieldLookupOptionsDto": { "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 + "referenceFieldId": { + "type": "string" }, - "subjectType": { - "type": "string", - "description": "Type of the subject", - "enum": [ - "user", - "group", - "team", - "role", - "company" - ] + "rollup": { + "type": "string" }, - "role": { - "type": "string", - "description": "Role to assign to the subject", - "enum": [ - "viewer", - "editor", - "manager" - ] + "sourceField": { + "$ref": "#/components/schemas/FieldDto" } - }, - "required": [ - "role", - "subjectId", - "subjectType" - ] + } }, - "MemberRevokeDto": { + "FieldNumberOptionsDto": { "type": "object", - "description": "A subject to revoke permissions from", "properties": { - "subjectId": { - "type": "string", - "description": "ID of the subject to revoke access from", - "minLength": 1 + "precision": { + "type": "integer", + "format": "int32" + }, + "allowNegatives": { + "type": "boolean" }, - "subjectType": { + "currency": { "type": "string", - "description": "Type of the subject", "enum": [ - "user", - "group", - "team", - "role", - "company" + "AED", + "AFN", + "ALL", + "AMD", + "AON", + "ARS", + "AUD", + "AZN", + "BAM", + "BBD", + "BDT", + "BGL", + "BHD", + "BIF", + "BND", + "BOB", + "BRL", + "BSD", + "BTN", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHF", + "CLP", + "CNY", + "COP", + "CRC", + "CUP", + "CVE", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "ERN", + "ETB", + "EUR", + "FJD", + "GBP", + "GEL", + "GHC", + "GMD", + "GNF", + "GTQ", + "GYD", + "HNL", + "HRK", + "HTG", + "HUF", + "IDR", + "ILS", + "INR", + "IQD", + "IRR", + "ISK", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "LSL", + "LYD", + "MAD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MRU", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZM", + "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", + "SLL", + "SOS", + "SRD", + "SSP", + "STN", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TZS", + "UAH", + "UGS", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XOF", + "YER", + "ZAR", + "ZMK", + "ZWD" ] } - }, - "required": [ - "subjectId", - "subjectType" - ] + } }, - "UpdateMembersRequestDto": { + "FieldOptionDto": { "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" - } + "name": { + "type": "string" }, - "inheritViewOnly": { - "type": "boolean", - "description": "Set inheritance for a record-type (true=inherited, false=view-only). Only valid for record-types." + "displayName": { + "type": "string" }, - "wildcard": { - "type": "string", - "description": "Set wildcard access mode for a record. Only valid for records.", - "enum": [ - "SELECTED_USERS_ONLY", - "EVERYONE_IN_WORKSPACE" - ] + "color": { + "type": "string" } } }, - "CursorInfo": { + "FieldReferenceExternalOptionsDto": { "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=" + "connectionName": { + "type": "string" + }, + "objectName": { + "type": "string" }, - "hasMore": { - "type": "boolean", - "description": "Whether more items exist beyond this page" + "connectionOptions": { + "type": "object", + "additionalProperties": { + "type": "string" + } } } }, - "CursorResponseWorkspaceDto": { + "FieldReferenceLookupFieldDto": { "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" - } + "fieldId": { + "type": "string" }, - "cursor": { - "$ref": "#/components/schemas/CursorInfo", - "description": "Cursor metadata for fetching subsequent pages" + "rollup": { + "type": "string" } } }, - "CursorResponseRecordTypeDto": { + "FieldReferenceOptionsDto": { "type": "object", - "description": "Cursor-paginated list of record types", "properties": { - "content": { + "multiple": { + "type": "boolean" + }, + "recordTypeId": { + "type": "string" + }, + "isExternal": { + "type": "boolean" + }, + "externalOptions": { + "$ref": "#/components/schemas/FieldReferenceExternalOptionsDto" + }, + "filters": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, + "lookupFields": { "type": "array", - "description": "List of record types in the current page", "items": { - "$ref": "#/components/schemas/RecordTypeBaseDto" + "$ref": "#/components/schemas/FieldReferenceLookupFieldDto" } - }, - "cursor": { - "$ref": "#/components/schemas/CursorInfo", - "description": "Cursor metadata for fetching subsequent pages" - } - } - }, - "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": { + "FieldUserOptionsDto": { "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" + "multipleUsersAllowed": { + "type": "boolean" } } }, - "FieldSnapshotDto": { + "RecordTypeDto": { "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" + "type": "string" }, - "displayName": { - "type": "string", - "description": "Display name of the field" + "createdBy": { + "type": "string" }, - "description": { - "type": "string", - "description": "Description of the field" + "createdAt": { + "type": "string" }, - "hasError": { - "type": "boolean", - "description": "Whether the field has a configuration error" + "updatedBy": { + "type": "string" }, - "options": { - "type": "array", - "description": "Options for single-select or multi-select fields", - "items": { - "$ref": "#/components/schemas/FieldOptionDto" - } + "updatedAt": { + "type": "string" }, - "dateOptions": { - "$ref": "#/components/schemas/FieldDateOptionsDto", - "description": "Date-specific configuration options" + "customerId": { + "type": "string" }, - "numberOptions": { - "$ref": "#/components/schemas/FieldNumberOptionsDto", - "description": "Number-specific configuration options" + "imsOrgId": { + "type": "string" }, - "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" + "alias": { + "type": "string" }, - "recordId": { - "type": "string", - "description": "ID of the record this change belongs to" + "displayName": { + "type": "string" }, - "createdBy": { + "permission": { "type": "string", - "description": "ID of the user who made the change" + "enum": [ + "manage", + "edit", + "view", + "none" + ] }, - "createdAt": { - "type": "string", - "description": "ISO-8601 timestamp of when the change occurred", - "example": "2026-01-15T10:30:00.000Z" + "primaryFieldId": { + "type": "string" }, - "fieldId": { - "type": "string", - "description": "ID of the field that changed" + "icon": { + "type": "string" }, - "before": { - "$ref": "#/components/schemas/CellValueDto", - "description": "Field state before the change" + "description": { + "type": "string" }, - "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" - } + "color": { + "type": "string" }, - "cursor": { - "$ref": "#/components/schemas/CursorInfo", - "description": "Cursor metadata for fetching subsequent pages" - } - } - }, - "CursorResponseFieldDto": { - "type": "object", - "description": "Cursor-paginated list of fields", - "properties": { - "content": { + "fields": { "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" + "isExternal": { + "type": "boolean" + }, + "externalOptions": { + "$ref": "#/components/schemas/RecordTypeExternalOptionsDto" } } }, - "PermissionDto": { + "RecordTypeExternalOptionsDto": { "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" + "connectionName": { + "type": "string" }, - "canDelete": { - "type": "boolean", - "description": "Whether the user can delete this resource" + "objectName": { + "type": "string" }, - "canAdd": { - "type": "boolean", - "description": "Whether the user can add items to this resource" + "fields": { + "type": "object", + "additionalProperties": { + "type": "string" + } } } }, - "AccessRequestDto": { + "RecordTypeSectionDto": { "type": "object", - "description": "A pending access request for a resource", "properties": { - "id": { - "type": "string", - "description": "Unique identifier of the access request" + "name": { + "type": "string" }, - "message": { - "type": "string", - "description": "Optional message from the requester" + "displayName": { + "type": "string" }, - "requester": { - "$ref": "#/components/schemas/RequesterDto", - "description": "User who submitted the request" + "recordTypeIds": { + "type": "array", + "items": { + "type": "string" + } } } }, - "RequesterDto": { + "WorkspaceDto": { "type": "object", - "description": "The user who submitted an access request", "properties": { "id": { - "type": "string", - "description": "User's external identifier" + "type": "string" }, - "name": { - "type": "string", - "description": "User's display name" + "createdBy": { + "type": "string" }, - "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" + "createdAt": { + "type": "string" }, - "subjectType": { - "type": "string", - "description": "Type of the subject", - "enum": [ - "user", - "group", - "team", - "role", - "company" - ] + "updatedBy": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "customerId": { + "type": "string" + }, + "imsOrgId": { + "type": "string" + }, + "alias": { + "type": "string" }, "name": { - "type": "string", - "description": "Display name of the subject" + "type": "string" }, - "avatarUrl": { - "type": "string", - "description": "Avatar URL of the subject, if available" + "description": { + "type": "string" + }, + "color": { + "type": "string" }, - "role": { + "permission": { "type": "string", - "description": "Role of the subject on this resource", "enum": [ - "viewer", - "editor", - "manager" + "manage", + "edit", + "view", + "none" ] - } - } - }, - "InheritanceDto": { - "type": "object", - "description": "Workspace-member inheritance setting for a record type", - "properties": { - "inherited": { - "type": "boolean", - "description": "When true, workspace members inherit their workspace-level access on this record type. When false, workspace members are restricted to view-only." - } - } - }, - "BulkDeleteRequestDto": { - "type": "object", - "description": "List of record IDs to delete", - "properties": { - "ids": { + }, + "icon": { + "type": "string" + }, + "recordTypes": { "type": "array", - "description": "List of record IDs to delete (max 100)", - "example": [ - "r1", - "r2" - ], "items": { - "type": "string" - }, - "maxItems": 100, - "minItems": 0 + "$ref": "#/components/schemas/RecordTypeDto" + } + }, + "recordTypeSections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecordTypeSectionDto" + } } - }, - "required": [ - "ids" - ] + } }, - "DeleteAccessRequestsDto": { + "WorkspaceListDto": { "type": "object", - "description": "Request body for dismissing access requests", "properties": { - "requestIds": { + "workspaces": { "type": "array", - "description": "IDs of access requests to dismiss", "items": { - "type": "string" - }, - "minItems": 1 + "$ref": "#/components/schemas/WorkspaceDto" + } + }, + "permission": { + "type": "string", + "enum": [ + "manage", + "edit", + "view", + "none" + ] } - }, - "required": [ - "requestIds" - ] + } } } } -} \ No newline at end of file +}