{ "openapi": "3.1.0", "x-stoplight": { "id": "qiz1rcfqd2jy6" }, "info": { "title": "NocoDB v3", "version": "", "description": "NocoDB API Documentation" }, "servers": [ { "url": "http://localhost:8080" } ], "paths": { "/api/v3/meta/workspaces/{workspaceId}/bases": { "get": { "summary": "List bases", "description": "Retrieve a list of bases associated with a specific workspace.", "tags": [ "Bases" ], "parameters": [ { "name": "workspaceId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the workspace." } ], "responses": { "200": { "description": "The request was successful, and a list of bases is returned.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Base" }, "description": "List of bases." }, "examples": { "Example 1": { "value": { "list": [ { "id": "pgfqcp0ocloo1j3", "title": "Getting Started", "meta": { "icon_color": "#36BFFF" }, "created_at": "2025-01-16 06:04:18+00:00", "updated_at": "2025-01-16 06:04:18+00:00", "workspace_id": "w6dw3fo0" }, { "id": "p1go4ju5jcwqf8v", "title": "Base2", "meta": { "icon_color": "#36BFFF" }, "created_at": "2025-01-16 06:04:48+00:00", "updated_at": "2025-01-16 06:04:48+00:00", "workspace_id": "w6dw3fo0" }, { "id": "pho1grz3alkye0t", "title": "Base3", "meta": { "icon_color": "#FA8231" }, "created_at": "2025-01-16 06:04:52+00:00", "updated_at": "2025-01-16 06:04:52+00:00", "workspace_id": "w6dw3fo0" } ] } } } } } }, "500": { "description": "The server encountered an unexpected error while processing the request." } } }, "post": { "summary": "Create base", "description": "Create a new base in a specified workspace. The request requires the workspace identifier in the path and base details in the request body.", "tags": [ "Bases" ], "parameters": [ { "name": "workspaceId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the workspace where the base will be created." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseCreate" }, "examples": { "Example 1": { "value": { "title": "New Base", "meta": { "icon_color": "#36BFFF" } } } } } } }, "responses": { "200": { "description": "Base was created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Base" }, "examples": { "Example 1": { "value": { "id": "p7nwavd2gcdkzvd", "title": "New Base", "meta": { "icon_color": "#36BFFF" }, "created_at": "2024-12-28 09:52:29+00:00", "updated_at": "2024-12-28 09:52:29+00:00", "workspace_id": "w6dw3fo0" } } } } } }, "400": { "description": "Invalid request body." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{baseId}": { "get": { "summary": "Get base meta", "description": "Retrieve meta details of a specific base using its unique identifier.", "tags": [ "Bases" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier of the base." } ], "responses": { "200": { "description": "Base meta was retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Base" }, "examples": { "Example 1": { "value": { "id": "p7nwavd2gcdkzvd", "title": "Getting Started", "meta": { "icon_color": "#36BFFF" }, "created_at": "2024-12-28 09:52:29+00:00", "updated_at": "2024-12-28 09:52:30+00:00", "workspace_id": "w6dw3fo0", "sources": [ { "id": "biv0qz3hgg191s5", "title": "jango_fett", "type": "pg", "is_schema_readonly": false, "is_data_readonly": false, "integration_id": "biv0qz3hgg191s5" } ] } } } } } }, "404": { "description": "Base not found." }, "500": { "description": "Server error." } } }, "patch": { "summary": "Update base", "description": "Update properties of a specific base. You can modify fields such as the title and metadata of the base. The baseId parameter identifies the base to be updated, and the new details must be provided in the request body. At least one of title or meta must be provided.", "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "tags": [ "Bases" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseUpdate" }, "examples": { "Example 1": { "value": { "title": "Updated Base Title", "meta": { "icon_color": "#36BFFF" } } } } } } }, "responses": { "200": { "description": "The base was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Base" }, "examples": { "Example 1": { "value": { "id": "p7nwavd2gcdkzvd", "title": "Updated Base Title", "meta": { "icon_color": "#36BFFF" }, "created_at": "2024-12-28 09:52:29+00:00", "updated_at": "2024-12-28 09:52:29+00:00", "workspace_id": "w6dw3fo0" } } } } } }, "400": { "description": "Invalid request body." }, "404": { "description": "Base not found." }, "500": { "description": "Server error." } } }, "delete": { "summary": "Delete base", "description": "Delete a specific base using its unique identifier. Once deleted, the base and its associated data cannot be recovered.", "tags": [ "Bases" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "responses": { "204": { "description": "Base was deleted." }, "404": { "description": "Base not found." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{base_id}/tables": { "get": { "summary": "List tables", "description": "Retrieve list of all tables within the specified base.", "tags": [ "Tables" ], "parameters": [ { "name": "base_id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "responses": { "200": { "description": "List of tables retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TableList" }, "examples": { "Example 1": { "value": { "list": [ { "id": "mq31p5ngbwj5o7u", "title": "Features", "description": "Sample table description.", "base_id": "pgfqcp0ocloo1j3", "workspace_id": "w6dw3fo0" }, { "id": "mwmlsgaek7932m4", "title": "Table-1", "meta": { "icon": "🚞" }, "base_id": "pgfqcp0ocloo1j3", "workspace_id": "w6dw3fo0" }, { "id": "m56zsedzrpz6p9w", "title": "Table-2", "meta": { "icon": "🏞️" }, "base_id": "pgfqcp0ocloo1j3", "workspace_id": "w6dw3fo0" } ] } } } } } }, "404": { "description": "Base not found." }, "500": { "description": "Server error." } } }, "post": { "summary": "Create table", "description": "Create a new table within the specified base by providing the required table details in the request body.", "parameters": [ { "name": "base_id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "tags": [ "Tables" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TableCreate" }, "examples": { "Example 1": { "value": { "title": "Sample Table20", "description": "Sample Description", "fields": [ { "title": "SingleLineText", "type": "SingleLineText", "default_value": "Default Title" }, { "title": "LongText", "type": "LongText", "default_value": "Default Description" }, { "title": "RichText", "type": "LongText", "default_value": "**Default Description**", "options": { "rich_text": true } }, { "title": "Email", "type": "Email", "default_value": "user@nocodb.com", "options": { "validation": true } }, { "title": "URL", "type": "URL", "default_value": "https://nocodb.com", "options": { "validation": true } }, { "title": "Phone", "type": "PhoneNumber", "default_value": "1234567890", "options": { "validation": true } }, { "title": "Number", "type": "Number", "default_value": "34", "options": { "locale_string": true } }, { "title": "Decimal", "type": "Decimal", "default_value": "34.56", "options": { "precision": 2 } }, { "title": "Currency", "type": "Currency", "default_value": "34.56", "options": { "locale": "en-US", "code": "USD" } }, { "title": "Percent", "type": "Percent", "default_value": "0.34", "options": { "show_as_progress": true } }, { "title": "Date", "type": "Date", "default_value": "2021-09-30", "options": { "date_format": "YYYY-MM-DD" } }, { "title": "DateTime", "type": "DateTime", "default_value": "2021-09-30 12:34:56", "options": { "date_format": "YYYY-MM-DD HH:mm:ss", "time_format": "HH:mm:ss", "12hr_format": true } }, { "title": "SingleSelect", "type": "SingleSelect", "default_value": "Option 1", "options": { "choices": [ { "title": "Option 1", "color": "#36BFFF" }, { "title": "Option 2", "color": "#36BFFF" } ] } }, { "title": "MultiSelect", "type": "MultiSelect", "default_value": "[\"Option 1\"]", "options": { "choices": [ { "title": "Option 1", "color": "#36BFFF" }, { "title": "Option 2", "color": "#36BFFF" } ] } }, { "title": "Checkbox", "type": "Checkbox", "default_value": true, "options": { "icon": "heart", "color": "#36BFFF" } }, { "title": "Rating", "type": "Rating", "default_value": "3", "options": { "icon": "heart", "max_value": 5, "color": "#36BFFF" } }, { "title": "Attachment", "type": "Attachment" }, { "title": "JSON", "type": "JSON", "default_value": "{\"key\": \"value\"}" }, { "title": "User", "type": "User", "default_value": "uskfsbdfved8c03z", "options": { "allow_multiple_users": true } }, { "title": "CreatedTime", "type": "CreatedTime" }, { "title": "CreatedBy", "type": "CreatedBy" }, { "title": "UpdatedBy", "type": "LastModifiedBy" }, { "title": "UpdatedTime", "type": "LastModifiedTime" } ] } } } } } }, "responses": { "200": { "description": "Table created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Table" }, "examples": { "Example 1": { "value": { "id": "mo0tpvd1hjvfbrx", "title": "Sample Table", "description": "Sample Description", "source_id": "bzyr9k9ui4oudwx", "base_id": "p13yxf5plzg73jm", "workspace_id": "wsdkr9ub", "display_field_id": "c455mde7px2yidt", "fields": [ { "id": "c455mde7px2yidt", "title": "SingleLineText", "type": "SingleLineText", "default_value": "Default Title" }, { "id": "c9zh8dmi7710mao", "title": "LongText", "type": "LongText", "default_value": "Default Description" }, { "id": "c57o8n0cbyss84l", "title": "RichText", "type": "LongText", "default_value": "**Default Description**", "options": { "rich_text": true } }, { "id": "cnl62kaut6jp5rg", "title": "Email", "type": "Email", "default_value": "user@nocodb.com", "options": { "validation": true } }, { "id": "cx4mpq7zm4offr8", "title": "URL", "type": "URL", "default_value": "https://nocodb.com", "options": { "validation": true } }, { "id": "cx7i90tmjjbh50g", "title": "Phone", "type": "PhoneNumber", "default_value": "1234567890", "options": { "validation": true } }, { "id": "chcb0o99ricceek", "title": "Number", "type": "Number", "default_value": "34", "options": { "locale_string": true } }, { "id": "csumykirz5i02pg", "title": "Decimal", "type": "Decimal", "default_value": "34.56", "options": { "precision": 2 } }, { "id": "cs1tvrdevhwf4r2", "title": "Currency", "type": "Currency", "default_value": "34.56", "options": { "locale": "en-US", "code": "USD" } }, { "id": "crpqkxsq8d1ljgz", "title": "Percent", "type": "Percent", "default_value": "0.34", "options": { "show_as_progress": true } }, { "id": "crnzx3dtlnjjr5z", "title": "Date", "type": "Date", "default_value": "2021-09-30", "options": { "date_format": "YYYY-MM-DD" } }, { "id": "c26ypextdeug3qd", "title": "DateTime", "type": "DateTime", "default_value": "2021-09-30 12:34:56", "options": { "date_format": "YYYY-MM-DD HH:mm:ss", "time_format": "HH:mm:ss", "12hr_format": true } }, { "id": "cyllf65uowcvw1b", "title": "SingleSelect", "type": "SingleSelect", "default_value": "Option 1", "options": { "choices": [ { "title": "Option 1", "color": "#36BFFF", "id": "spd7exnmjz5uch8" }, { "title": "Option 2", "color": "#36BFFF", "id": "sytp5rjfte78p8k" } ] } }, { "id": "clhlbmjw6dpz9ts", "title": "MultiSelect", "type": "MultiSelect", "default_value": "[\"Option 1\"]", "options": { "choices": [ { "title": "Option 1", "color": "#36BFFF", "id": "ssig2048lvr9puw" }, { "title": "Option 2", "color": "#36BFFF", "id": "sz7etgbnhm84e9w" } ] } }, { "id": "c86vpwa0qzexf8i", "title": "Checkbox", "type": "Checkbox", "default_value": "true", "options": { "color": "#36BFFF", "icon": "heart" } }, { "id": "c6h2p5nmlmynbiv", "title": "Rating", "type": "Rating", "default_value": "3", "options": { "max_value": 5, "color": "#36BFFF", "icon": "heart" } }, { "id": "cqh7kupxqaw7itc", "title": "Attachment", "type": "Attachment" }, { "id": "cp1d7w6surl8juh", "title": "JSON", "type": "JSON", "default_value": "{\"key\": \"value\"}" }, { "id": "cebdv0v3uy7tyiy", "title": "User", "type": "User", "default_value": "uskfsbdfved8c03z", "options": { "allow_multiple_users": true } }, { "id": "cb4vptiuveysb5a", "title": "Links", "type": "Links", "options": { "relation_type": "mm", "related_table_id": "mnkgbmqwkls36fg" } }, { "id": "cavokt1gde5dy2m", "title": "id", "type": "ID" }, { "id": "csiwamkqrm08slv", "title": "CreatedTime", "type": "CreatedTime" }, { "id": "cczd61fh2m0mn8a", "title": "CreatedBy", "type": "CreatedBy" }, { "id": "chshjlwe59glff7", "title": "UpdatedBy", "type": "LastModifiedBy" }, { "id": "ctlyu6sbs77whvj", "title": "UpdatedTime", "type": "LastModifiedTime" } ], "views": [ { "id": "vwuke35pn7bcoqmb", "title": "Sample Table", "view_type": "grid" } ] } } } } } }, "400": { "description": "Invalid request body." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{baseId}/tables/{tableId}": { "get": { "summary": "Get table schema", "description": "Retrieve the details of a specific table.", "tags": [ "Tables" ], "parameters": [ { "name": "tableId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the table." }, { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "responses": { "200": { "description": "Table details are retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Table" }, "examples": { "Example 1": { "value": { "id": "mo0tpvd1hjvfbrx", "title": "Sample Table", "description": "Sample Description", "source_id": "bzyr9k9ui4oudwx", "base_id": "p13yxf5plzg73jm", "workspace_id": "wsdkr9ub", "display_field_id": "c455mde7px2yidt", "fields": [ { "id": "c455mde7px2yidt", "title": "SingleLineText", "type": "SingleLineText", "default_value": "Default Title" }, { "id": "c9zh8dmi7710mao", "title": "LongText", "type": "LongText", "default_value": "Default Description" }, { "id": "c57o8n0cbyss84l", "title": "RichText", "type": "LongText", "default_value": "**Default Description**", "options": { "rich_text": true } }, { "id": "cnl62kaut6jp5rg", "title": "Email", "type": "Email", "default_value": "user@nocodb.com", "options": { "validation": true } }, { "id": "cx4mpq7zm4offr8", "title": "URL", "type": "URL", "default_value": "https://nocodb.com", "options": { "validation": true } }, { "id": "cx7i90tmjjbh50g", "title": "Phone", "type": "PhoneNumber", "default_value": "1234567890", "options": { "validation": true } }, { "id": "chcb0o99ricceek", "title": "Number", "type": "Number", "default_value": "34", "options": { "locale_string": true } }, { "id": "csumykirz5i02pg", "title": "Decimal", "type": "Decimal", "default_value": "34.56", "options": { "precision": 2 } }, { "id": "cs1tvrdevhwf4r2", "title": "Currency", "type": "Currency", "default_value": "34.56", "options": { "locale": "en-US", "code": "USD" } }, { "id": "crpqkxsq8d1ljgz", "title": "Percent", "type": "Percent", "default_value": "0.34", "options": { "show_as_progress": true } }, { "id": "crnzx3dtlnjjr5z", "title": "Date", "type": "Date", "default_value": "2021-09-30", "options": { "date_format": "YYYY-MM-DD" } }, { "id": "c26ypextdeug3qd", "title": "DateTime", "type": "DateTime", "default_value": "2021-09-30 12:34:56", "options": { "date_format": "YYYY-MM-DD HH:mm:ss", "time_format": "HH:mm:ss", "12hr_format": true } }, { "id": "cyllf65uowcvw1b", "title": "SingleSelect", "type": "SingleSelect", "default_value": "Option 1", "options": { "choices": [ { "title": "Option 1", "color": "#36BFFF", "id": "spd7exnmjz5uch8" }, { "title": "Option 2", "color": "#36BFFF", "id": "sytp5rjfte78p8k" } ] } }, { "id": "clhlbmjw6dpz9ts", "title": "MultiSelect", "type": "MultiSelect", "default_value": "[\"Option 1\"]", "options": { "choices": [ { "title": "Option 1", "color": "#36BFFF", "id": "ssig2048lvr9puw" }, { "title": "Option 2", "color": "#36BFFF", "id": "sz7etgbnhm84e9w" } ] } }, { "id": "c86vpwa0qzexf8i", "title": "Checkbox", "type": "Checkbox", "default_value": "true", "options": { "color": "#36BFFF", "icon": "heart" } }, { "id": "c6h2p5nmlmynbiv", "title": "Rating", "type": "Rating", "default_value": "3", "options": { "max_value": 5, "color": "#36BFFF", "icon": "heart" } }, { "id": "cqh7kupxqaw7itc", "title": "Attachment", "type": "Attachment" }, { "id": "cp1d7w6surl8juh", "title": "JSON", "type": "JSON", "default_value": "{\"key\": \"value\"}" }, { "id": "cebdv0v3uy7tyiy", "title": "User", "type": "User", "default_value": "uskfsbdfved8c03z", "options": { "allow_multiple_users": true } }, { "id": "cb4vptiuveysb5a", "title": "Links", "type": "Links", "options": { "relation_type": "mm", "related_table_id": "mnkgbmqwkls36fg" } }, { "id": "cavokt1gde5dy2m", "title": "id", "type": "ID" }, { "id": "csiwamkqrm08slv", "title": "CreatedTime", "type": "CreatedTime" }, { "id": "cczd61fh2m0mn8a", "title": "CreatedBy", "type": "CreatedBy" }, { "id": "chshjlwe59glff7", "title": "UpdatedBy", "type": "LastModifiedBy" }, { "id": "ctlyu6sbs77whvj", "title": "UpdatedTime", "type": "LastModifiedTime" } ], "views": [ { "id": "vwuke35pn7bcoqmb", "title": "Sample Table", "view_type": "grid" } ] } } } } } }, "404": { "description": "Table not found." }, "500": { "description": "Server error." } } }, "patch": { "summary": "Update table", "description": "Update the details of a specific table.", "tags": [ "Tables" ], "parameters": [ { "name": "tableId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the table." }, { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TableUpdate" }, "examples": { "Example 1": { "value": { "title": "Updated Table Title", "description": "Updated Description", "display_field_id": "c455mde7px2yidt", "meta": { "icon": "🚞" } } } } } } }, "responses": { "200": { "description": "Table meta updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Table" }, "examples": { "Example 1": { "value": { "id": "m0nibecfkcfsz2x", "title": "Features", "meta": { "icon": "🚞" }, "source_id": "bbtx6pvj7b8yszy", "base_id": "pn9mmowpquxj60w", "workspace_id": "w6wqiisd", "views": [ { "id": "vwuke35pn7bcoqmb", "title": "Features", "view_type": "grid" } ], "display_field_id": "cb51p6e2r4gpxpv", "fields": [ { "id": "cz0jslmqdvcv68n", "title": "Id", "type": "ID" }, { "id": "cb51p6e2r4gpxpv", "title": "Title", "type": "SingleLineText" } ] } } } } } }, "400": { "description": "Invalid request body." }, "404": { "description": "Table not found." }, "500": { "description": "Server error." } } }, "delete": { "summary": "Delete table", "description": "Delete a specific table.", "tags": [ "Tables" ], "parameters": [ { "name": "tableId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the table." } ], "responses": { "204": { "description": "Table deleted successfully." }, "404": { "description": "Table not found." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{baseId}/tables/{tableId}/views": { "get": { "summary": "List views", "tags": [ "Views" ], "description": "Retrieve a list of all views for a specific table.", "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "tableId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the table." } ], "responses": { "200": { "description": "List of views retrieved successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/components/schemas/View" } } }, "required": [ "list" ] } } } }, "404": { "description": "Table not found." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{baseId}/tables/{tableId}/fields": { "post": { "summary": "Create field", "description": "Create a new field within the specified table.", "tags": [ "Fields" ], "parameters": [ { "name": "tableId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the table." }, { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateField" }, "examples": { "SingleLineText / LongText": { "value": { "title": "New Field", "type": "SingleLineText", "default_value": "Default Value", "description": "Sample Description" } }, "RichText": { "value": { "title": "New Field", "type": "LongText", "default_value": "Default Value", "description": "Sample Description", "options": { "rich_text": true } } }, "Email / URL / PhoneNumber": { "value": { "title": "New Field", "type": "Email", "default_value": "user@nocodb.com", "description": "Sample Description", "options": { "validation": true } } }, "Number / Decimal": { "value": { "title": "New Field", "type": "Number", "default_value": "23", "description": "Sample Description", "options": { "precision": "4" } } } } } } }, "responses": { "200": { "description": "Field was created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateField" } } } }, "400": { "description": "Invalid request body." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{baseId}/fields/{fieldId}": { "get": { "summary": "Get field", "description": "Retrieve the details of a specific field.", "tags": [ "Fields" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "fieldId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the field being updated." } ], "responses": { "200": { "description": "Field details are retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Field" } } } }, "404": { "description": "Field not found." }, "500": { "description": "Server error." } } }, "patch": { "summary": "Update field", "description": "Update the details of a specific field.", "tags": [ "Fields" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "fieldId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the field being updated." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FieldUpdate" }, "examples": { "SingleLineText / LongText": { "value": { "title": "New Field", "type": "SingleLineText", "default_value": "Default Value", "description": "Sample Description" } }, "RichText": { "value": { "title": "New Field", "type": "LongText", "default_value": "Default Value", "description": "Sample Description", "options": { "rich_text": true } } }, "Email / URL / PhoneNumber": { "value": { "title": "New Field", "type": "Email", "default_value": "user@nocodb.com", "description": "Sample Description", "options": { "validation": true } } }, "Number / Decimal": { "value": { "title": "New Field", "type": "Number", "default_value": "23", "description": "Sample Description", "options": { "precision": "4" } } } } } } }, "responses": { "201": { "description": "Field was updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateField" } } } }, "400": { "description": "Invalid request body." }, "500": { "description": "Server error." } } }, "delete": { "summary": "Delete field", "description": "Delete a specific field.", "tags": [ "Fields" ], "parameters": [ { "name": "fieldId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the field." }, { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "responses": { "204": { "description": "Field was deleted." }, "404": { "description": "Field not found." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{baseId}/views/{viewId}/filters": { "get": { "summary": "List view filters", "description": "Retrieve a list of all filters and groups for a specific view.", "tags": [ "View Filters" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "viewId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the view." } ], "responses": { "200": { "description": "List of filters and groups retrieved successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterListResponse" }, "examples": { "Example 1": { "value": { "list": [ { "id": "root", "group_operator": "AND", "filters": [ { "id": "fiml6n8qzam4wmvl", "field_id": "c580jyan91qwrbx", "operator": "eq", "value": "Midmarket" }, { "id": "fi3egizdiubzfo9u", "group_operator": "OR", "filters": [ { "id": "fih624x0srskaf1i", "field_id": "caymvuj3az60wyk", "operator": "eq", "value": "Mexico" }, { "id": "fi1pjkf0f88r8s6l", "field_id": "caymvuj3az60wyk", "operator": "eq", "value": "Canada" } ] } ] } ] } } } } } }, "404": { "description": "View not found." }, "500": { "description": "Server error." } } }, "post": { "summary": "Create filter", "description": "Create a new filter or filter-group for a specific view.", "tags": [ "View Filters" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "viewId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the view." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterCreateUpdate" } } } }, "responses": { "201": { "description": "Filter or group created successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterCreateUpdate" } } } }, "400": { "description": "Invalid request body." }, "500": { "description": "Server error." } } }, "patch": { "summary": "Update filter", "description": "Update the details of an existing filter or group.", "tags": [ "View Filters" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "filterId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the filter or group." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterCreateUpdate" } } } }, "responses": { "200": { "description": "Filter or group updated successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterCreateUpdate" } } } }, "400": { "description": "Invalid request body." }, "404": { "description": "Filter or group not found." }, "500": { "description": "Server error." } } }, "delete": { "summary": "Delete filter", "description": "Delete an existing filter or filter-group.", "tags": [ "View Filters" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "viewId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the filter or group." } ], "responses": { "204": { "description": "Filter or group deleted successfully." }, "404": { "description": "Filter or group not found." }, "500": { "description": "Server error." } } }, "put": { "summary": "Replace filter", "description": "Replace filters for a specific view. All the existing filters will be overwritten with the new filters specified in this request.", "tags": [ "View Filters" ], "parameters": [ { "name": "viewId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the view. It overwrites all existing filters." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterCreateUpdate" } } } }, "responses": { "200": { "description": "Filter or group updated successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilterCreateUpdate" } } } }, "400": { "description": "Invalid request body." }, "404": { "description": "Filter or group not found." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{baseId}/views/{viewId}/sorts": { "get": { "summary": "List view sorts", "tags": [ "View Sorts" ], "description": "Retrieve a list of all sorts for a specific view.", "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "viewId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the view." } ], "responses": { "200": { "description": "List of sorts retrieved successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SortListResponse" }, "examples": { "Example 1": { "value": { "list": [ { "id": "so3o7c6po0tktghc", "field_id": "c580jyan91qwrbx", "order": "asc" }, { "id": "so1n4x4w7dou8p0v", "field_id": "caymvuj3az60wyk", "order": "desc" } ] } } } } } }, "404": { "description": "View not found." }, "500": { "description": "Server error." } } }, "post": { "summary": "Add sort", "description": "Create a new sort for a specific view.", "tags": [ "View Sorts" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "viewId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the view." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SortCreate" }, "examples": { "Example 1": { "value": { "field_id": "c580jyan91qwrbx", "order": "asc" } } } } } }, "responses": { "200": { "description": "Sort created successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Sort" } } } }, "400": { "description": "Invalid request body." }, "500": { "description": "Server error." } } }, "delete": { "summary": "Delete sort", "description": "Delete an existing sort.", "tags": [ "View Sorts" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "sortId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the sort." } ], "responses": { "204": { "description": "Sort deleted successfully." }, "404": { "description": "Sort not found." }, "500": { "description": "Server error." } } }, "patch": { "summary": "Update sort", "description": "Update the details of an existing sort.", "tags": [ "View Sorts" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." }, { "name": "sortId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the sort." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SortUpdate" }, "examples": { "Example 1": { "value": { "id": "so3o7c6po0tktghc", "order": "desc" } } } } } }, "responses": { "200": { "description": "Sort updated successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Sort" } } } }, "400": { "description": "Invalid request body." }, "404": { "description": "Sort not found." }, "500": { "description": "Server error." } } } }, "/api/v3/meta/bases/{base_id}/users": { "get": { "summary": "List base users", "description": "Retrieve a list of users associated with a specific base.", "tags": [ "Base Users" ], "parameters": [ { "name": "base_id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "responses": { "200": { "description": "A list of users for the base.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseUserList" }, "examples": { "Example 1": { "value": { "list": [ { "id": "us8kesqka9jb2sqp", "email": "user-1@nocodb.com", "created_at": "2025-01-18 10:40:10+00:00", "updated_at": "2025-01-18 10:40:10+00:00", "base_role": "creator", "workspace_role": "workspace-level-no-access", "workspace_id": "w6wqiisd" }, { "id": "usd616ujr1l7e16l", "email": "user@nocodb.com", "created_at": "2025-01-18 03:02:47+00:00", "updated_at": "2025-01-18 03:02:47+00:00", "base_role": "owner", "workspace_role": "workspace-level-owner", "workspace_id": "w6wqiisd" }, { "id": "usxq7usbujj2xll9", "email": "user-2@nocodb.com", "created_at": "2025-01-18 10:40:20+00:00", "updated_at": "2025-01-18 10:40:20+00:00", "base_role": "commenter", "workspace_role": "workspace-level-no-access", "workspace_id": "w6wqiisd" } ] } } } } } }, "404": { "description": "Base not found." }, "500": { "description": "Server error." } } }, "post": { "summary": "Invite users to a base", "description": "Invite new users to a specific base using their email address.", "parameters": [ { "name": "base_id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "tags": [ "Base Users" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseUserCreate" } } } }, "responses": { "200": { "description": "Users invited successfully.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BaseUser" }, "description": "List of successfully invited users." } } } }, "400": { "description": "Invalid request body or parameters." }, "404": { "description": "Base not found." }, "500": { "description": "Server error." } } }, "patch": { "summary": "Update users in a base", "description": "Update roles for existing users in a base.", "parameters": [ { "name": "base_id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "tags": [ "Base Users" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseUserUpdate" } } } }, "responses": { "200": { "description": "Users updated successfully.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BaseUser" }, "description": "List of successfully updated users." } } } }, "400": { "description": "Invalid request body or parameters." }, "404": { "description": "Base not found." }, "500": { "description": "Server error." } } }, "delete": { "summary": "Delete users from a base", "description": "Remove users from a specific base using their IDs.", "parameters": [ { "name": "base_id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base." } ], "tags": [ "Base Users" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseUserDelete" } } } }, "responses": { "200": { "description": "Users deleted successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the operation was successful." }, "deleted_users": { "type": "array", "items": { "$ref": "#/components/schemas/BaseUserDeleteRequest" }, "description": "List of successfully deleted users." } } } } } }, "400": { "description": "Invalid request body or parameters." }, "404": { "description": "Base not found." }, "500": { "description": "Server error." } } } }, "/api/v3/data/{baseId}/{tableId}/records": { "parameters": [ { "schema": { "type": "string" }, "name": "baseId", "in": "path", "required": true, "description": "**Base Identifier**." }, { "schema": { "type": "string" }, "name": "tableId", "in": "path", "required": true, "description": "**Table Identifier**." } ], "get": { "summary": "List Table Records", "operationId": "db-data-table-row-list", "description": "This API endpoint allows you to retrieve records from a specified table. You can customize the response by applying various query parameters for filtering, sorting, and formatting.\n\n**Pagination**: The response is paginated by default, with the first page being returned initially. The response includes the following additional information in the `pageInfo` JSON block:\n\n- **next**: Contains the URL to retrieve the next page of records. For example, `\"https://staging.noco.ws/api/v3/tables/medhonywr18cysz/records?page=2\"` points to the next page of records.\n- If there are no more records available (you are on the last page), this attribute will be _null_.\n\nThe `pageInfo` attribute is particularly valuable when working with large datasets divided into multiple pages. It provides the necessary URL to seamlessly fetch subsequent pages, enabling efficient navigation through the dataset.", "tags": [ "Table Records" ], "parameters": [ { "schema": { "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "in": "query", "name": "fields", "description": "Allows you to specify the fields that you wish to include from the linked records in your API response. By default, only Primary Key and associated display value field is included.\n\nExample: `fields=[\"field1\",\"field2\"]` or `fields=field1,field2` will include only 'field1' and 'field2' in the API response." }, { "schema": { "oneOf": [ { "type": "array", "items": { "type": "object", "properties": { "direction": { "type": "string", "enum": [ "asc", "desc" ] }, "field": { "type": "string" } }, "required": [ "field", "direction" ] } }, { "type": "object", "properties": { "direction": { "type": "string", "enum": [ "asc", "desc" ] }, "field": { "type": "string" } }, "required": [ "field", "direction" ] } ] }, "in": "query", "name": "sort", "description": "Allows you to specify the fields by which you want to sort the records in your API response. Accepts either an array of sort objects or a single sort object.\n\nEach sort object must have a 'field' property specifying the field name and a 'direction' property with value 'asc' or 'desc'.\n\nExample: `sort=[{\"direction\":\"asc\",\"field\":\"field_name\"},{\"direction\":\"desc\",\"field\":\"another_field\"}]` or `sort={\"direction\":\"asc\",\"field\":\"field_name\"}`\n\nIf `viewId` query parameter is also included, the sort included here will take precedence over any sorting configuration defined in the view." }, { "schema": { "type": "string" }, "in": "query", "name": "where", "description": "Enables you to define specific conditions for filtering records in your API response. Multiple conditions can be combined using logical operators such as 'and' and 'or'. Each condition consists of three parts: a field name, a comparison operator, and a value.\n\nExample: `where=(field1,eq,value1)~and(field2,eq,value2)` will filter records where 'field1' is equal to 'value1' AND 'field2' is equal to 'value2'. \n\nYou can also use other comparison operators like 'ne' (not equal), 'gt' (greater than), 'lt' (less than), and more, to create complex filtering rules.\n\nIf `viewId` query parameter is also included, then the filters included here will be applied over the filtering configuration defined in the view. \n\nPlease remember to maintain the specified format, and do not include spaces between the different condition components" }, { "schema": { "type": "integer", "minimum": 1 }, "in": "query", "name": "page", "description": "Enables you to control the pagination of your API response by specifying the page number you want to retrieve. By default, the first page is returned. If you want to retrieve the next page, you can increment the page number by one.\n\nExample: `page=2` will return the second page of records in the dataset." }, { "schema": { "type": "integer", "minimum": 1 }, "in": "query", "name": "nestedPage", "description": "Enables you to control the pagination of your nested data (linked records) in API response by specifying the page number you want to retrieve. By default, the first page is returned. If you want to retrieve the next page, you can increment the page number by one.\n\nExample: `page=2` will return the second page of nested data records in the dataset." }, { "schema": { "type": "integer", "minimum": 1 }, "in": "query", "name": "pageSize", "description": "Enables you to set a limit on the number of records you want to retrieve in your API response. By default, your response includes all the available records, but by using this parameter, you can control the quantity you receive.\n\nExample: `pageSize=100` will constrain your response to the first 100 records in the dataset." }, { "schema": { "type": "string" }, "name": "viewId", "in": "query", "description": "***View Identifier***. Allows you to fetch records that are currently visible within a specific view. API retrieves records in the order they are displayed if the SORT option is enabled within that view.\n\nAdditionally, if you specify a `sort` query parameter, it will take precedence over any sorting configuration defined in the view. If you specify a `where` query parameter, it will be applied over the filtering configuration defined in the view. \n\nBy default, all fields, including those that are disabled within the view, are included in the response. To explicitly specify which fields to include or exclude, you can use the `fields` query parameter to customize the output according to your requirements." }, { "required": true, "$ref": "#/components/parameters/xc-token" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataListResponseV3" }, "examples": { "Example 1": { "value": { "records": [ { "id": 1, "fields": { "SingleLineText": "record #1", "MultiLineText": "sample long text", "Email": "user@nocodb.com", "PhoneNumber": "1234567890", "URL": "www.google.com", "Number": 1234, "Decimal": 100.88, "Currency": 100, "Percent": 10, "Duration": 1010, "Rating": 3, "Year": 2020, "Time": "20:20:00", "Checkbox": true, "Date": "2020-01-01", "SingleSelect": "Jan", "MultiSelect": [ "Jan", "Feb", "Mar" ], "DateTime": "2022-02-02 00:00:00+00:00", "LTAR": [ { "id": 1, "fields": { "SingleLineText": "record #1" } }, { "id": 2, "fields": { "SingleLineText": "record #2" } } ] } } ], "next": "https://staging.noco.ws/api/v3/data/baseId/tableId/records?page=2" } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } } }, "post": { "summary": "Create Table Records", "operationId": "db-data-table-row-create", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataInsertResponseV3" }, "examples": { "Example 1": { "value": { "records": [ { "id": 10, "fields": { "Number": 1, "SingleLineText": "record #1" } }, { "id": 11, "fields": { "Number": 2, "SingleLineText": "record #2" } } ] } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } }, "tags": [ "Table Records" ], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/DataInsertRequestV3" }, { "type": "array", "items": { "$ref": "#/components/schemas/DataInsertRequestV3" } } ] }, "examples": { "Example 1": { "value": [ { "fields": { "Number": 1, "Decimal": 100.88, "Currency": 100, "Percent": 100, "Duration": 1010, "Rating": 3, "Year": 2020, "Time": "20:20:00", "SingleLineText": "record #1", "MultiLineText": "sample text", "Email": "user@nocodb.com", "PhoneNumber": "1234567890", "URL": "www.google.com", "SingleSelect": "jan", "Checkbox": true, "Date": "2020-01-01", "JSON": { "x": 1, "y": 2 }, "User": [ { "email": "raju@nocodb.com" } ], "MultiSelect": [ "jan", "feb", "mar" ], "DateTime": "2022-02-02 05:30:00+00:00", "LTAR": [ { "id": 1, "fields": {} }, { "id": 2, "fields": {} } ] } } ] } } } } }, "description": "This API endpoint allows the creation of new records within a specified table. Records to be inserted are input as an array of key-value pair objects, where each key corresponds to a field name. Ensure that all the required fields are included in the payload, with exceptions for fields designated as auto-increment or those having default values. \n\nCertain read-only field types will be disregarded if included in the request. These field types include Look Up, Roll Up, Formula, Created By, Updated By, Created At, Updated At, Button, Barcode and QR Code.\n\nFor **Attachment** field types, this API cannot be used. Instead, utilize the storage APIs for managing attachments. Support for attachment fields in the record update API will be added soon.", "parameters": [ { "required": true, "$ref": "#/components/parameters/xc-token" } ] }, "patch": { "summary": "Update Table Records", "operationId": "db-data-table-row-update", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataUpdateResponseV3" }, "examples": { "Example 1": { "value": { "records": [ { "id": 6 }, { "id": 7 } ] } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } }, "tags": [ "Table Records" ], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/DataUpdateRequestV3" }, { "type": "array", "items": { "$ref": "#/components/schemas/DataUpdateRequestV3" } } ] }, "examples": { "Example 1": { "value": [ { "id": 6, "fields": { "Number": 101, "SingleLineText": "Updated record #1", "Email": "updated@nocodb.com" } }, { "id": 7, "fields": { "Number": 102, "SingleLineText": "Updated record #2" } } ] } } } } }, "description": "This API endpoint allows you to update records within a specified table by their Record ID. The request payload should contain the Record ID and the fields that need to be updated.\n\nCertain read-only field types will be disregarded if included in the request. These field types include Look Up, Roll Up, Formula, Created By, Updated By, Created At, Updated At, Button, Barcode and QR Code.\n\nFor **Attachment** field types, this API cannot be used. Instead, utilize the storage APIs for managing attachments. Support for attachment fields in the record update API will be added soon.", "parameters": [ { "required": true, "$ref": "#/components/parameters/xc-token" } ] }, "delete": { "summary": "Delete Table Records", "operationId": "db-data-table-row-delete", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataDeleteResponseV3" }, "examples": { "Example 1": { "value": { "records": [ { "id": 1, "deleted": true }, { "id": 2, "deleted": true } ] } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } }, "tags": [ "Table Records" ], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/DataDeleteRequestV3" }, { "type": "array", "items": { "$ref": "#/components/schemas/DataDeleteRequestV3" } } ] }, "examples": { "Example 1": { "value": [ { "id": 1 }, { "id": 2 } ] } } } } }, "description": "This API endpoint allows the deletion of records within a specified table by Record ID. The request should include the Record ID of the record(s) to be deleted.", "parameters": [ { "required": true, "$ref": "#/components/parameters/xc-token" } ] } }, "/api/v3/data/{baseId}/{tableId}/records/{recordId}": { "parameters": [ { "schema": { "type": "string" }, "name": "baseId", "in": "path", "required": true, "description": "**Base Identifier**." }, { "schema": { "type": "string" }, "name": "tableId", "in": "path", "required": true, "description": "**Table Identifier**" }, { "schema": { "type": "string" }, "name": "recordId", "in": "path", "required": true, "description": "Record ID" } ], "get": { "summary": "Read Table Record", "operationId": "db-data-table-row-read", "description": "This API endpoint allows you to retrieve a single record identified by Record-ID, serving as unique identifier for the record from a specified table.", "tags": [ "Table Records" ], "parameters": [ { "schema": { "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "in": "query", "name": "fields", "description": "Allows you to specify the fields that you wish to include from the linked records in your API response. By default, only Primary Key and associated display value field is included.\n\nExample: `fields=[\"field1\",\"field2\"]` or `fields=field1,field2` will include only 'field1' and 'field2' in the API response." }, { "required": true, "$ref": "#/components/parameters/xc-token" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataReadResponseV3" }, "examples": { "Example 1": { "value": { "id": 1, "fields": { "SingleLineText": "record #1", "MultiLineText": "sample long text", "Email": "user@nocodb.com", "PhoneNumber": "1234567890", "URL": "www.google.com", "Number": 1234, "Decimal": 100.88, "Currency": 100, "Percent": 10, "Duration": 1010, "Rating": 3, "Year": 2020, "Time": "20:20:00", "Checkbox": true, "Date": "2020-01-01", "SingleSelect": "Jan", "MultiSelect": [ "Jan", "Feb", "Mar" ], "DateTime": "2022-02-02 00:00:00+00:00", "LTAR": [ { "id": 1, "fields": { "SingleLineText": "record #1" } }, { "id": 2, "fields": { "SingleLineText": "record #2" } } ] } } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } } } }, "/api/v3/data/{baseId}/{tableId}/count": { "parameters": [ { "schema": { "type": "string" }, "name": "baseId", "in": "path", "required": true, "description": "**Base Identifier**." }, { "schema": { "type": "string" }, "name": "tableId", "in": "path", "required": true, "description": "**Table Identifier**" }, { "schema": { "type": "string" }, "name": "viewId", "in": "query", "description": "**View Identifier**. Allows you to fetch record count that are currently visible within a specific view." } ], "get": { "summary": "Count Table Records", "operationId": "db-data-table-row-count", "description": "This API endpoint allows you to retrieve the total number of records from a specified table or a view. You can narrow down search results by applying `where` query parameter", "tags": [ "Table Records" ], "parameters": [ { "schema": { "type": "string" }, "in": "query", "name": "where", "description": "Enables you to define specific conditions for filtering record count in your API response. Multiple conditions can be combined using logical operators such as 'and' and 'or'. Each condition consists of three parts: a field name, a comparison operator, and a value.\n\nExample: `where=(field1,eq,value1)~and(field2,eq,value2)` will filter records where 'field1' is equal to 'value1' AND 'field2' is equal to 'value2'. \n\nYou can also use other comparison operators like 'ne' (not equal), 'gt' (greater than), 'lt' (less than), and more, to create complex filtering rules.\n\nIf `viewId` query parameter is also included, then the filters included here will be applied over the filtering configuration defined in the view. \n\nPlease remember to maintain the specified format, and do not include spaces between the different condition components" }, { "$ref": "#/components/parameters/xc-token" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "number" } } }, "examples": { "Example 1": { "value": { "count": 3 } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } } } }, "/api/v3/data/{baseId}/{tableId}/links/{linkFieldId}/{recordId}": { "parameters": [ { "schema": { "type": "string" }, "name": "tableId", "in": "path", "required": true, "description": "**Table Identifier**" }, { "schema": { "type": "string" }, "name": "linkFieldId", "in": "path", "required": true, "description": "**Links Field Identifier** corresponding to the relation field `Link to another record` established between tables." } ], "get": { "summary": "List Linked Records", "operationId": "db-data-table-row-nested-list", "description": "This API endpoint allows you to retrieve list of linked records for a specific `Link to another record field` and `Record ID`. The response is an array of objects containing Primary Key and its corresponding display value.", "tags": [ "Linked Records" ], "parameters": [ { "schema": { "type": "string" }, "name": "recordId", "in": "path", "required": true, "description": "**Record Identifier** corresponding to the record in this table for which linked records are being fetched." }, { "schema": { "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "in": "query", "name": "fields", "description": "Allows you to specify the fields that you wish to include from the linked records in your API response. By default, only Primary Key and associated display value field is included.\n\nExample: `fields=[\"field1\",\"field2\"]` or `fields=field1,field2` will include only 'field1' and 'field2' in the API response." }, { "schema": { "oneOf": [ { "type": "array", "items": { "type": "object", "properties": { "direction": { "type": "string", "enum": [ "asc", "desc" ] }, "field": { "type": "string" } }, "required": [ "field", "direction" ] } }, { "type": "object", "properties": { "direction": { "type": "string", "enum": [ "asc", "desc" ] }, "field": { "type": "string" } }, "required": [ "field", "direction" ] } ] }, "in": "query", "name": "sort", "description": "Allows you to specify the fields by which you want to sort the records in your API response. Accepts either an array of sort objects or a single sort object.\n\nEach sort object must have a 'field' property specifying the field name and a 'direction' property with value 'asc' or 'desc'.\n\nExample: `sort=[{\"direction\":\"asc\",\"field\":\"field_name\"},{\"direction\":\"desc\",\"field\":\"another_field\"}]` or `sort={\"direction\":\"asc\",\"field\":\"field_name\"}`\n\nIf `viewId` query parameter is also included, the sort included here will take precedence over any sorting configuration defined in the view." }, { "schema": { "type": "string" }, "in": "query", "name": "where", "description": "Enables you to define specific conditions for filtering linked records in your API response. Multiple conditions can be combined using logical operators such as 'and' and 'or'. Each condition consists of three parts: a field name, a comparison operator, and a value.\n\nExample: `where=(field1,eq,value1)~and(field2,eq,value2)` will filter linked records where 'field1' is equal to 'value1' AND 'field2' is equal to 'value2'. \n\nYou can also use other comparison operators like 'ne' (not equal), 'gt' (greater than), 'lt' (less than), and more, to create complex filtering rules.\n\nPlease remember to maintain the specified format, and do not include spaces between the different condition components" }, { "schema": { "type": "integer", "minimum": 0 }, "in": "query", "name": "page", "description": "Enables you to control the pagination of your API response by specifying the page number you want to retrieve. By default, the first page is returned. If you want to retrieve the next page, you can increment the page number by one.\n\nExample: `page=2` will return the second page of linked records in the dataset." }, { "schema": { "type": "integer", "minimum": 1 }, "in": "query", "name": "pageSize", "description": "Enables you to set a limit on the number of linked records you want to retrieve in your API response. By default, your response includes all the available linked records, but by using this parameter, you can control the quantity you receive.\n\nExample: `pageSize=100` will constrain your response to the first 100 linked records in the dataset." }, { "required": true, "$ref": "#/components/parameters/xc-token" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataListResponseV3" }, "examples": { "Example 1": { "value": { "records": [ { "id": 1, "fields": { "SingleLineText": "record #1", "MultiLineText": "sample long text", "Email": "user@nocodb.com", "PhoneNumber": "1234567890", "URL": "www.google.com", "Number": 1234, "Decimal": 100.88, "Currency": 100, "Percent": 10, "Duration": 1010, "Rating": 3, "Year": 2020, "Time": "20:20:00", "Checkbox": true, "Date": "2020-01-01", "SingleSelect": "Jan", "MultiSelect": [ "Jan", "Feb", "Mar" ], "DateTime": "2022-02-02 00:00:00+00:00", "LTAR": [ { "id": 1, "fields": { "SingleLineText": "record #1" } }, { "id": 2, "fields": { "SingleLineText": "record #2" } } ] } } ], "next": "https://staging.noco.ws/api/v3/data/baseId/tableId/records?page=2" } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } } }, "post": { "summary": "Link Records", "operationId": "db-data-table-row-nested-link", "responses": { "200": { "description": "Records successfully linked", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates whether the linking operation was successful", "example": true } }, "required": [ "success" ], "additionalProperties": false }, "examples": { "Success Response": { "summary": "Successful linking operation", "value": { "success": true } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } }, "tags": [ "Linked Records" ], "requestBody": { "required": true, "description": "Array of record objects to be linked, each containing an id field", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the record", "example": "33" } }, "required": [ "id" ], "additionalProperties": false }, { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the record", "example": "22" } }, "required": [ "id" ], "additionalProperties": false }, "minItems": 1, "maxItems": 1000 } ] }, "examples": { "Single Record": { "summary": "Link a single record", "value": { "id": "22" } }, "Multiple Records": { "summary": "Link multiple records", "value": [ { "id": "43" }, { "id": "01" } ] } } } } }, "description": "This API endpoint allows you to link records to a specific `Link field` and `Record ID`. The request payload is an array of record-ids from the adjacent table for linking purposes. Note that any existing links, if present, will be unaffected during this operation.", "parameters": [ { "schema": { "type": "string" }, "name": "recordId", "in": "path", "required": true, "description": "**Record Identifier** corresponding to the record in this table for which links are being created." }, { "required": true, "$ref": "#/components/parameters/xc-token" } ] }, "delete": { "summary": "Unlink Records", "operationId": "db-data-table-row-nested-unlink", "responses": { "200": { "description": "Records successfully unlinked", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates whether the unlink operation was successful", "example": true } }, "required": [ "success" ], "additionalProperties": false }, "examples": { "Success Response": { "summary": "Successful unlinking operation", "value": { "success": true } } } } } }, "400": { "$ref": "#/components/responses/BadRequest" } }, "tags": [ "Linked Records" ], "requestBody": { "required": true, "description": "Array of record objects to be unlinked, each containing an id field", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the record", "example": "33" } }, "required": [ "id" ], "additionalProperties": false }, { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the record", "example": "33" } }, "required": [ "id" ], "additionalProperties": false }, "minItems": 1, "maxItems": 1000 } ] }, "examples": { "Single Record": { "summary": "UnLink a single record", "value": { "id": "32" } }, "Multiple Records": { "summary": "UnLink multiple records", "value": [ { "id": "1" }, { "id": "22" } ] } } } } }, "description": "This API endpoint allows you to unlink records from a specific `Link field` and `Record ID`. The request payload is an array of record-ids from the adjacent table for unlinking purposes. Note that, \n- duplicated record-ids will be ignored.\n- non-existent record-ids will be ignored.", "parameters": [ { "schema": { "type": "string" }, "name": "recordId", "in": "path", "required": true, "description": "**Record Identifier** corresponding to the record in this table for which links are being removed." }, { "required": true, "$ref": "#/components/parameters/xc-token" } ] } }, "/api/v3/docs/{baseId}": { "get": { "summary": "List documents", "operationId": "document-list", "description": "Retrieve a list of documents in a base. Documents are returned without content for lightweight listing.\n\nUse the `parent_id` query parameter to navigate the document hierarchy:\n- `parent_id=null` or omitted — returns root-level documents\n- `parent_id={docId}` — returns children of the specified document\n\nDocuments API is available on **Business** plan and above (Cloud) or with an **Enterprise** license (self-hosted).", "tags": [ "Documents" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base.", "example": "p_abc123def456" }, { "name": "parent_id", "in": "query", "required": false, "schema": { "type": "string", "nullable": true }, "description": "Parent document ID. Use `null` (or omit) for root-level documents, or a document ID to list its children.", "example": "null" } ], "responses": { "200": { "description": "Documents retrieved successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentListResponse" }, "examples": { "Root Documents": { "value": { "list": [ { "id": "dc_r1a2b3c4d5e6f", "base_id": "p_abc123def456", "title": "Project Overview", "meta": { "icon": "📋" }, "order": 1, "parent_id": null, "has_children": true, "version": 3, "comment_count": 2, "created_by": "us_abc123", "updated_by": "us_abc123", "created_at": "2026-03-01T10:00:00.000Z", "updated_at": "2026-03-08T14:30:00.000Z" }, { "id": "dc_r7h8i9j0k1l2m", "base_id": "p_abc123def456", "title": "Meeting Notes", "meta": { "icon": "📝" }, "order": 2, "parent_id": null, "has_children": false, "version": 1, "comment_count": 0, "created_by": "us_abc123", "updated_by": "us_abc123", "created_at": "2026-03-05T09:00:00.000Z", "updated_at": "2026-03-05T09:00:00.000Z" } ] } }, "Child Documents": { "value": { "list": [ { "id": "dc_c1n2o3p4q5r6s", "base_id": "p_abc123def456", "title": "Q1 Goals", "meta": {}, "order": 1, "parent_id": "dc_r1a2b3c4d5e6f", "has_children": false, "version": 2, "comment_count": 0, "created_by": "us_abc123", "updated_by": "us_def456", "created_at": "2026-03-01T11:00:00.000Z", "updated_at": "2026-03-06T16:00:00.000Z" } ] } }, "Empty List": { "value": { "list": [] } } } } } }, "400": { "$ref": "#/components/responses/BadRequestV3" }, "401": { "$ref": "#/components/responses/UnauthorizedV3" }, "403": { "$ref": "#/components/responses/ForbiddenV3" }, "404": { "$ref": "#/components/responses/NotFoundV3" }, "500": { "$ref": "#/components/responses/InternalServerErrorV3" } } }, "post": { "summary": "Create document", "operationId": "document-create", "description": "Create a new document in a base. If no `title` is provided, defaults to \"Untitled\". If no `content` is provided, defaults to an empty document.\n\nTo create a child document, pass the `parent_id` of the parent document.\n\nDocuments API is available on **Business** plan and above (Cloud) or with an **Enterprise** license (self-hosted).", "tags": [ "Documents" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base.", "example": "p_abc123def456" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentCreate" }, "examples": { "Minimal (empty document)": { "value": {} }, "With Title": { "value": { "title": "Weekly Standup Notes" } }, "With Rich Content": { "value": { "title": "Architecture Decision Record", "content": { "type": "doc", "content": [ { "type": "heading", "attrs": { "level": 1 }, "content": [ { "type": "text", "text": "ADR-001: Document Storage Format" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "We decided to use rich-text JSON as the canonical storage format for document content." } ] }, { "type": "heading", "attrs": { "level": 2 }, "content": [ { "type": "text", "text": "Context" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "Content is stored as rich-text JSON, a structured document format that preserves rich-text formatting without lossy conversions." } ] } ] }, "meta": { "icon": "📐" } } }, "Child Document": { "value": { "title": "Q1 Goals", "parent_id": "dc_r1a2b3c4d5e6f" } } } } } }, "responses": { "200": { "description": "Document created successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Document" }, "examples": { "Created Document": { "value": { "id": "dc_n3w1d2o3c4u5m", "base_id": "p_abc123def456", "title": "Weekly Standup Notes", "content": { "type": "doc", "content": [ { "type": "paragraph" } ] }, "meta": {}, "order": 3, "parent_id": null, "has_children": false, "version": 1, "comment_count": 0, "created_by": "us_abc123", "updated_by": "us_abc123", "created_at": "2026-03-09T12:00:00.000Z", "updated_at": "2026-03-09T12:00:00.000Z" } } } } } }, "400": { "$ref": "#/components/responses/BadRequestV3" }, "401": { "$ref": "#/components/responses/UnauthorizedV3" }, "403": { "$ref": "#/components/responses/ForbiddenV3" }, "404": { "$ref": "#/components/responses/NotFoundV3" }, "500": { "$ref": "#/components/responses/InternalServerErrorV3" } } } }, "/api/v3/docs/{baseId}/{docId}": { "get": { "summary": "Get document", "operationId": "document-read", "description": "Retrieve a single document with its full content (rich-text JSON).\n\nDocuments API is available on **Business** plan and above (Cloud) or with an **Enterprise** license (self-hosted).", "tags": [ "Documents" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base.", "example": "p_abc123def456" }, { "name": "docId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the document.", "example": "dc_r1a2b3c4d5e6f" } ], "responses": { "200": { "description": "Document retrieved successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Document" }, "examples": { "Document with Content": { "value": { "id": "dc_r1a2b3c4d5e6f", "base_id": "p_abc123def456", "title": "Project Overview", "content": { "type": "doc", "content": [ { "type": "heading", "attrs": { "level": 1 }, "content": [ { "type": "text", "text": "Project Overview" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "This document describes the " }, { "type": "text", "marks": [ { "type": "bold" } ], "text": "project goals" }, { "type": "text", "text": " and timeline." } ] }, { "type": "bulletList", "content": [ { "type": "listItem", "content": [ { "type": "paragraph", "content": [ { "type": "text", "text": "Phase 1: Research" } ] } ] }, { "type": "listItem", "content": [ { "type": "paragraph", "content": [ { "type": "text", "text": "Phase 2: Implementation" } ] } ] } ] } ] }, "meta": { "icon": "📋", "cover_image": "/api/v1/attachments/cover_abc.jpg" }, "order": 1, "parent_id": null, "has_children": true, "version": 3, "comment_count": 2, "created_by": "us_abc123", "updated_by": "us_abc123", "created_at": "2026-03-01T10:00:00.000Z", "updated_at": "2026-03-08T14:30:00.000Z" } } } } } }, "401": { "$ref": "#/components/responses/UnauthorizedV3" }, "403": { "$ref": "#/components/responses/ForbiddenV3" }, "404": { "$ref": "#/components/responses/NotFoundV3" }, "500": { "$ref": "#/components/responses/InternalServerErrorV3" } } }, "patch": { "summary": "Update document", "operationId": "document-update", "description": "Update a document's title, content, or metadata.\n\n**Optimistic concurrency control**: You must include the current `version` of the document. If the version does not match the server's version (i.e., someone else edited it), the request will be rejected with a 422 error. This prevents silent overwrites.\n\nAfter a successful update, the returned document will have `version` incremented by 1.\n\nDocuments API is available on **Business** plan and above (Cloud) or with an **Enterprise** license (self-hosted).", "tags": [ "Documents" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base.", "example": "p_abc123def456" }, { "name": "docId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the document.", "example": "dc_r1a2b3c4d5e6f" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentUpdate" }, "examples": { "Update Title Only": { "value": { "title": "Updated Project Overview", "version": 3 } }, "Update Content": { "value": { "content": { "type": "doc", "content": [ { "type": "heading", "attrs": { "level": 1 }, "content": [ { "type": "text", "text": "Updated Heading" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "New paragraph content added via API." } ] } ] }, "version": 3 } }, "Update Metadata (icon and cover)": { "value": { "meta": { "icon": "🚀", "cover_image": "/api/v1/attachments/new_cover.jpg" }, "version": 3 } } } } } }, "responses": { "200": { "description": "Document updated successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Document" }, "examples": { "Updated Document": { "value": { "id": "dc_r1a2b3c4d5e6f", "base_id": "p_abc123def456", "title": "Updated Project Overview", "content": { "type": "doc", "content": [ { "type": "paragraph" } ] }, "meta": { "icon": "📋" }, "order": 1, "parent_id": null, "has_children": true, "version": 4, "comment_count": 2, "created_by": "us_abc123", "updated_by": "us_def456", "created_at": "2026-03-01T10:00:00.000Z", "updated_at": "2026-03-09T15:00:00.000Z" } } } } } }, "400": { "$ref": "#/components/responses/BadRequestV3" }, "401": { "$ref": "#/components/responses/UnauthorizedV3" }, "403": { "$ref": "#/components/responses/ForbiddenV3" }, "404": { "$ref": "#/components/responses/NotFoundV3" }, "422": { "description": "Version conflict — the document has been modified since it was last fetched. Fetch the latest version and retry." }, "500": { "$ref": "#/components/responses/InternalServerErrorV3" } } }, "delete": { "summary": "Delete document", "operationId": "document-delete", "description": "Soft-delete a document. All child documents are also deleted (cascade).\n\nAttachments (images, files) referenced by the document are also cleaned up.\n\nDocuments API is available on **Business** plan and above (Cloud) or with an **Enterprise** license (self-hosted).", "tags": [ "Documents" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base.", "example": "p_abc123def456" }, { "name": "docId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the document to delete.", "example": "dc_r1a2b3c4d5e6f" } ], "responses": { "200": { "description": "Document deleted successfully.", "content": { "application/json": { "schema": { "type": "boolean" }, "examples": { "Deleted": { "value": true } } } } }, "401": { "$ref": "#/components/responses/UnauthorizedV3" }, "403": { "$ref": "#/components/responses/ForbiddenV3" }, "404": { "$ref": "#/components/responses/NotFoundV3" }, "500": { "$ref": "#/components/responses/InternalServerErrorV3" } } } }, "/api/v3/docs/{baseId}/{docId}/reorder": { "patch": { "summary": "Reorder or move document", "operationId": "document-reorder", "description": "Update a document's sort order among its siblings, and optionally move it to a different parent.\n\n**Order**: Pass a float value. To insert between two siblings with orders 2.0 and 3.0, use 2.5 (midpoint).\n\n**Move**: Include `parent_id` to re-parent the document. Pass `null` to move to root level. Circular moves (moving a document under itself or its descendants) are rejected.\n\nDocuments API is available on **Business** plan and above (Cloud) or with an **Enterprise** license (self-hosted).", "tags": [ "Documents" ], "parameters": [ { "name": "baseId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the base.", "example": "p_abc123def456" }, { "name": "docId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Unique identifier for the document to reorder.", "example": "dc_r1a2b3c4d5e6f" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentReorder" }, "examples": { "Change Sort Order": { "description": "Move the document to position 2.5 (between siblings at 2.0 and 3.0).", "value": { "order": 2.5 } }, "Move to Different Parent": { "description": "Move the document under a different parent and set its order.", "value": { "order": 1, "parent_id": "dc_n3w1p2a3r4e5n" } }, "Move to Different Parent Only": { "description": "Move a document under a different parent (server assigns order).", "value": { "parent_id": "dc_n3w1p2a3r4e5n" } }, "Move to Root": { "description": "Move a child document to the root level.", "value": { "order": 4, "parent_id": null } } } } } }, "responses": { "200": { "description": "Document reordered/moved successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Document" }, "examples": { "Reordered Document": { "value": { "id": "dc_r1a2b3c4d5e6f", "base_id": "p_abc123def456", "title": "Project Overview", "content": { "type": "doc", "content": [ { "type": "paragraph" } ] }, "meta": { "icon": "📋" }, "order": 2.5, "parent_id": null, "has_children": true, "version": 3, "comment_count": 2, "created_by": "us_abc123", "updated_by": "us_abc123", "created_at": "2026-03-01T10:00:00.000Z", "updated_at": "2026-03-09T15:30:00.000Z" } } } } } }, "400": { "$ref": "#/components/responses/BadRequestV3" }, "401": { "$ref": "#/components/responses/UnauthorizedV3" }, "403": { "$ref": "#/components/responses/ForbiddenV3" }, "404": { "$ref": "#/components/responses/NotFoundV3" }, "422": { "description": "Invalid move — cannot move document under itself or its own descendant." }, "500": { "$ref": "#/components/responses/InternalServerErrorV3" } } } } }, "components": { "schemas": { "Base": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the base." }, "title": { "type": "string", "description": "Title of the base." }, "meta": { "$ref": "#/components/schemas/BaseMetaRes" }, "created_at": { "type": "string", "format": "date-time", "description": "Timestamp of when the base was created." }, "updated_at": { "type": "string", "format": "date-time", "description": "Timestamp of when the base was last updated." }, "workspace_id": { "type": "string", "description": "Unique identifier for the workspace to which this base belongs to." }, "sources": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the data source." }, "title": { "type": "string", "description": "Title of the data source." }, "type": { "type": "string", "description": "Type of the data source (e.g., pg, mysql)." }, "is_schema_readonly": { "type": "boolean", "description": "Indicates if the schema in this data source is read-only." }, "is_data_readonly": { "type": "boolean", "description": "Indicates if the data (records) in this data source is read-only." }, "integration_id": { "type": "string", "description": "Integration ID for the data source." } }, "required": [ "id", "title", "type", "is_schema_readonly", "is_data_readonly", "integration_id" ] }, "description": "List of data sources associated with this base. This information will be included only if one or more external data sources are associated with the base." } }, "required": [ "id", "title", "meta", "created_at", "updated_at", "workspace_id" ] }, "BaseMetaRes": { "type": "object", "properties": { "icon_color": { "type": "string", "description": "Specifies the color of the base icon using a hexadecimal color code (e.g., `#36BFFF`)", "pattern": "^#[0-9A-Fa-f]{6}$" } } }, "BaseMetaReq": { "type": "object", "properties": { "icon_color": { "type": "string", "description": "Specifies the color of the base icon using a hexadecimal color code (e.g., `#36BFFF`).\n\n**Constraints**:\n- Must be a valid 6-character hexadecimal color code preceded by a `#`.\n- Optional field; defaults to a standard color if not provided.", "pattern": "^#[0-9A-Fa-f]{6}$" } } }, "BaseCreate": { "type": "object", "properties": { "title": { "type": "string", "description": "Title of the base." }, "meta": { "$ref": "#/components/schemas/BaseMetaReq" } }, "required": [ "title" ] }, "BaseUpdate": { "type": "object", "properties": { "title": { "type": "string", "description": "Title of the base." }, "meta": { "$ref": "#/components/schemas/BaseMetaReq" } } }, "TableList": { "type": "object", "properties": { "list": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the table." }, "title": { "type": "string", "description": "Title of the table." }, "description": { "type": [ "string", "null" ], "description": "Description of the table." }, "meta": { "$ref": "#/components/schemas/TableMeta" }, "base_id": { "type": "string", "description": "Unique identifier for the base to which this table belongs to." }, "source_id": { "type": "string", "description": "Unique identifier for the data source. This information will be included only if the table is associated with an external data source." }, "workspace_id": { "type": "string", "description": "Unique identifier for the workspace to which this base belongs to." } }, "required": [ "id", "title", "base_id", "workspace_id" ] } } }, "required": [ "list" ] }, "TableMeta": { "type": "object", "properties": { "icon": { "type": "string", "description": "Icon prefix to the table name that needs to be displayed in-lieu of the default table icon." } } }, "TableCreate": { "type": "object", "properties": { "title": { "type": "string", "description": "Title of the table." }, "description": { "type": [ "string", "null" ], "description": "Description of the table." }, "meta": { "$ref": "#/components/schemas/TableMeta" }, "source_id": { "type": "string", "description": "Unique identifier for the data source. Include this information only if the table being created is part of a data source." }, "fields": { "type": "array", "items": { "$ref": "#/components/schemas/CreateField" } } }, "required": [ "title" ] }, "FieldOptions": { "SingleLineText": { "title": "SingleLineText", "properties": { "type": { "enum": [ "SingleLineText" ] } } }, "LongText": { "title": "LongText", "properties": { "type": { "enum": [ "LongText" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_LongText" } } }, "PhoneNumber": { "title": "PhoneNumber", "properties": { "type": { "enum": [ "PhoneNumber" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_PhoneNumber" } } }, "URL": { "title": "URL", "properties": { "type": { "enum": [ "URL" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_URL" } } }, "Email": { "title": "Email", "properties": { "type": { "enum": [ "Email" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Email" } } }, "Number": { "title": "Number", "properties": { "type": { "enum": [ "Number" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Number" } } }, "Decimal": { "title": "Decimal", "properties": { "type": { "enum": [ "Decimal" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Decimal" } } }, "Currency": { "title": "Currency", "properties": { "type": { "enum": [ "Currency" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Currency" } } }, "Percent": { "title": "Percent", "properties": { "type": { "enum": [ "Percent" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Percent" } } }, "Duration": { "title": "Duration", "properties": { "type": { "enum": [ "Duration" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Duration" } } }, "Date": { "title": "Date", "properties": { "type": { "enum": [ "Date" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Date" } } }, "DateTime": { "title": "DateTime", "properties": { "type": { "enum": [ "DateTime" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_DateTime" } } }, "Time": { "title": "Time", "properties": { "type": { "enum": [ "Time" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Time" } } }, "SingleSelect": { "title": "SingleSelect", "properties": { "type": { "enum": [ "SingleSelect" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Select" } } }, "MultiSelect": { "title": "MultiSelect", "properties": { "type": { "enum": [ "MultiSelect" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Select" } } }, "Rating": { "title": "Rating", "properties": { "type": { "enum": [ "Rating" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Rating" } } }, "Checkbox": { "title": "Checkbox", "properties": { "type": { "enum": [ "Checkbox" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Checkbox" } } }, "Attachment": { "title": "Attachment", "properties": { "type": { "enum": [ "Attachment" ] } } }, "Geometry": { "title": "Geometry", "properties": { "type": { "enum": [ "Geometry" ] } } }, "Links": { "title": "Links", "properties": { "type": { "enum": [ "Links" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Links" } } }, "Lookup": { "title": "Lookup", "properties": { "type": { "enum": [ "Lookup" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Lookup" } } }, "Rollup": { "title": "Rollup", "properties": { "type": { "enum": [ "Rollup" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Rollup" } } }, "Button": { "title": "Button", "properties": { "type": { "enum": [ "Button" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Button" } } }, "Formula": { "title": "Formula", "properties": { "type": { "enum": [ "Formula" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Formula" } } }, "Barcode": { "title": "Barcode", "properties": { "type": { "enum": [ "Barcode" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Barcode" } } }, "QRCode": { "title": "QRCode", "properties": { "type": { "enum": [ "QRCode" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_QRCode" } } }, "CreatedAt": { "title": "CreatedAt", "properties": { "type": { "enum": [ "CreatedTime" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_DateTime" } } }, "LastModifiedAt": { "title": "LastModifiedAt", "properties": { "type": { "enum": [ "LastModifiedTime" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_DateTime" } } }, "CreatedBy": { "title": "CreatedBy", "properties": { "type": { "enum": [ "CreatedBy" ] } } }, "LastModifiedBy": { "title": "LastModifiedBy", "properties": { "type": { "enum": [ "LastModifiedBy" ] } } }, "LinkToAnotherRecord": { "title": "LinkToAnotherRecord", "properties": { "type": { "enum": [ "LinkToAnotherRecord" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_LinkToAnotherRecord" } } }, "User": { "title": "User", "properties": { "type": { "enum": [ "User" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_User" } } }, "JSON": { "title": "JSON", "properties": { "type": { "enum": [ "JSON" ] } } } }, "CreateField": { "allOf": [ { "$ref": "#/components/schemas/FieldBase" }, { "oneOf": [ { "$ref": "#/components/schemas/FieldOptions/SingleLineText" }, { "$ref": "#/components/schemas/FieldOptions/LongText" }, { "$ref": "#/components/schemas/FieldOptions/PhoneNumber" }, { "$ref": "#/components/schemas/FieldOptions/URL" }, { "$ref": "#/components/schemas/FieldOptions/Email" }, { "$ref": "#/components/schemas/FieldOptions/Number" }, { "$ref": "#/components/schemas/FieldOptions/Decimal" }, { "$ref": "#/components/schemas/FieldOptions/Currency" }, { "$ref": "#/components/schemas/FieldOptions/Percent" }, { "$ref": "#/components/schemas/FieldOptions/Duration" }, { "$ref": "#/components/schemas/FieldOptions/Date" }, { "$ref": "#/components/schemas/FieldOptions/DateTime" }, { "$ref": "#/components/schemas/FieldOptions/Time" }, { "$ref": "#/components/schemas/FieldOptions/SingleSelect" }, { "$ref": "#/components/schemas/FieldOptions/MultiSelect" }, { "$ref": "#/components/schemas/FieldOptions/Rating" }, { "$ref": "#/components/schemas/FieldOptions/Checkbox" }, { "$ref": "#/components/schemas/FieldOptions/Attachment" }, { "$ref": "#/components/schemas/FieldOptions/JSON" }, { "$ref": "#/components/schemas/FieldOptions/Geometry" }, { "$ref": "#/components/schemas/FieldOptions/Links" }, { "$ref": "#/components/schemas/FieldOptions/Lookup" }, { "$ref": "#/components/schemas/FieldOptions/Rollup" }, { "$ref": "#/components/schemas/FieldOptions/Button" }, { "$ref": "#/components/schemas/FieldOptions/Formula" }, { "$ref": "#/components/schemas/FieldOptions/Barcode" }, { "$ref": "#/components/schemas/FieldOptions/QRCode" }, { "$ref": "#/components/schemas/FieldOptions/CreatedAt" }, { "$ref": "#/components/schemas/FieldOptions/LastModifiedAt" }, { "$ref": "#/components/schemas/FieldOptions/CreatedBy" }, { "$ref": "#/components/schemas/FieldOptions/LastModifiedBy" }, { "$ref": "#/components/schemas/FieldOptions/LinkToAnotherRecord" }, { "$ref": "#/components/schemas/FieldOptions/User" } ] } ] }, "Table": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the table." }, "source_id": { "type": "string", "description": "Unique identifier for the data source. This information will be included only if the table is associated with an external data source." }, "base_id": { "type": "string", "description": "Unique identifier for the base to which this table belongs to." }, "title": { "type": "string", "description": "Title of the table." }, "description": { "type": "string", "description": "Description of the table." }, "display_field_id": { "type": "string", "description": "Unique identifier for the display field of the table. First non system field is set as display field by default." }, "workspace_id": { "type": "string", "description": "Unique identifier for the workspace to which this base belongs to." }, "fields": { "type": "array", "description": "List of fields associated with this table.", "items": { "$ref": "#/components/schemas/CreateField" } }, "views": { "type": "array", "description": "List of views associated with this table.", "items": { "$ref": "#/components/schemas/ViewSummary" } } }, "required": [ "id", "title", "base_id", "workspace_id", "display_field_id", "fields", "views" ] }, "BaseUser": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the user." }, "email": { "type": "string", "format": "email", "description": "Email address of the user." }, "user_name": { "type": "string", "description": "Display name of the user." }, "created_at": { "type": "string", "format": "date-time", "description": "Timestamp of when the user was created." }, "updated_at": { "type": "string", "format": "date-time", "description": "Timestamp of when the user access was last updated." }, "base_role": { "$ref": "#/components/schemas/BaseRoles" }, "workspace_role": { "$ref": "#/components/schemas/WorkspaceRoles" }, "workspace_id": { "type": "string", "description": "Unique identifier for the workspace." } }, "required": [ "id", "email", "created_at", "updated_at", "base_role", "workspace_role", "workspace_id" ] }, "BaseUserDeleteRequest": {}, "BaseUserList": { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/components/schemas/BaseUser" } } }, "required": [ "users" ] }, "BaseUserCreate": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the user. Can be provided optionally during creation." }, "email": { "type": "string", "format": "email", "description": "Email address of the user. Used as a primary identifier if 'id' is not provided." }, "user_name": { "type": "string", "description": "Full name of the user." }, "base_role": { "$ref": "#/components/schemas/BaseRoles" } }, "required": [ "base_role" ], "oneOf": [ { "title": "Invite User with ID", "required": [ "id" ] }, { "title": "Invite User with Email", "required": [ "email" ] } ], "description": "An object representing a new user to be created." }, "description": "Array of users to be created." }, "BaseUserUpdate": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the user. Used as a primary identifier if provided." }, "email": { "type": "string", "format": "email", "description": "Email address of the user. Used as a primary identifier if 'id' is not provided." }, "base_role": { "$ref": "#/components/schemas/BaseRoles" } }, "required": [ "base_role" ], "oneOf": [ { "title": "Update User using ID", "required": [ "id" ] }, { "title": "Update User using Email", "required": [ "email" ] } ], "description": "An object representing updates for an existing user." }, "description": "Array of user updates." }, "BaseUserDelete": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the user." }, "email": { "type": "string", "format": "email", "description": "Email address of the user." } }, "oneOf": [ { "title": "Update User using ID", "required": [ "id" ] }, { "title": "Update User using Email", "required": [ "email" ] } ] } }, "TableMetaReq": { "type": "object", "properties": { "icon": { "type": "string", "description": "Icon prefix to the table name that needs to be displayed in-lieu of the default table icon." } } }, "TableUpdate": { "type": "object", "properties": { "title": { "type": "string", "description": "New title of the table." }, "description": { "type": "string", "description": "Description of the table." }, "display_field_id": { "type": "string", "description": "Unique identifier for the display field of the table. The type of the field should be one of the allowed types for display field." }, "meta": { "$ref": "#/components/schemas/TableMetaReq", "description": "Icon prefix to the table name that needs to be displayed in-lieu of the default table icon." } }, "oneOf": [ { "title": "Rename Table", "required": [ "title" ] }, { "title": "Update Table Description", "required": [ "description" ] }, { "title": "Update Display Field", "required": [ "display_field_id" ] }, { "title": "Update Table Icon", "required": [ "meta" ] } ] }, "Sort": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier for the sort.", "readOnly": true }, "field_id": { "type": "string", "format": "uuid", "description": "Identifier for the field being sorted." }, "direction": { "type": "string", "enum": [ "asc", "desc" ], "description": "Sorting direction, either 'asc' (ascending) or 'desc' (descending)." } }, "required": [ "id", "field_id", "direction" ] }, "SortCreate": { "type": "object", "properties": { "field_id": { "type": "string", "format": "uuid", "description": "Identifier for the field being sorted." }, "direction": { "type": "string", "enum": [ "asc", "desc" ], "description": "Sorting direction, either 'asc' (ascending) or 'desc' (descending)." } }, "required": [ "field_id", "direction" ] }, "SortUpdate": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the sort." }, "field_id": { "type": "string", "format": "uuid", "description": "Identifier for the field being sorted." }, "direction": { "type": "string", "enum": [ "asc", "desc" ], "description": "Sorting direction, either 'asc' (ascending) or 'desc' (descending)." } }, "required": [ "id" ] }, "ViewSummary": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier for the view." }, "title": { "type": "string", "description": "Name of the view." }, "view_type": { "type": "string", "enum": [ "GRID", "GALLERY", "KANBAN", "CALENDAR", "FORM" ], "description": "Type of the view." } } }, "View": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier for the view." }, "view_name": { "type": "string", "description": "Name of the view." }, "view_type": { "type": "string", "enum": [ "GRID", "GALLERY", "KANBAN", "CALENDAR", "FORM" ], "description": "Type of the view." }, "lock_type": { "type": "string", "enum": [ "COLLABARATIVE", "LOCKED", "PERSONAL" ], "description": "Lock type of the view." }, "description": { "type": "string", "description": "Description of the view." }, "is_default": { "type": "boolean", "description": "Indicates if this is the default view." }, "meta": { "type": "object", "properties": { "locked_view_description": { "type": "string", "description": "Description for locked views." }, "locked_by_user_id": { "type": "string", "format": "uuid", "description": "User ID of the person who locked the view." } } }, "created_by": { "type": "string", "format": "uuid", "description": "User ID of the creator." }, "owned_by": { "type": "string", "format": "uuid", "description": "User ID of the owner." }, "created_at": { "type": "string", "format": "date-time", "description": "Timestamp of creation." }, "updated_at": { "type": "string", "format": "date-time", "description": "Timestamp of last update." }, "filters": { "type": "array", "items": { "$ref": "#/components/schemas/Filter" }, "description": "Filters applied to the view." }, "sorts": { "type": "array", "items": { "$ref": "#/components/schemas/Sort" }, "description": "Sort options for the view." } }, "discriminator": { "propertyName": "view_type" }, "oneOf": [ { "type": "object", "properties": { "fields": { "type": "array", "items": { "type": "object", "properties": { "field_id": { "type": "string", "format": "uuid", "description": "Field ID for GRID view." }, "is_hidden": { "type": "boolean", "description": "Indicates if the field is hidden in GRID view." } } } }, "group": { "type": "array", "items": { "type": "object", "properties": { "field_id": { "type": "string", "format": "uuid", "description": "Field ID for grouping in GRID view." }, "sort": { "type": "string", "enum": [ "asc", "desc" ], "description": "Sorting order for the group." } } } } }, "required": [ "view_type", "fields" ], "description": "GRID View" }, { "type": "object", "properties": { "fields": { "type": "array", "items": { "type": "object", "properties": { "field_id": { "type": "string", "format": "uuid", "description": "Field ID displayed in GALLERY view." }, "cover_image": { "type": "boolean", "description": "Indicates if the field is the cover image." } } } }, "cover_image_field_id": { "type": "string", "format": "uuid", "description": "Field ID for the cover image." } }, "required": [ "view_type", "fields" ], "description": "GALLERY View" }, { "type": "object", "properties": { "fields": { "type": "array", "items": { "type": "object", "properties": { "field_id": { "type": "string", "format": "uuid", "description": "Field ID used in KANBAN view." }, "is_stack_by": { "type": "boolean", "description": "Indicates if the field is used for stacking in KANBAN." } } } }, "cover_image_field_id": { "type": "string", "format": "uuid", "description": "Field ID for the cover image." }, "kanban_stack_by_field_id": { "type": "string", "format": "uuid", "description": "Field ID used for stacking in KANBAN view." } }, "required": [ "view_type", "fields" ], "description": "KANBAN View" }, { "type": "object", "properties": { "fields": { "type": "array", "items": { "type": "object", "properties": { "field_id": { "type": "string", "format": "uuid", "description": "Field ID displayed in CALENDAR view." }, "is_date_field": { "type": "boolean", "description": "Indicates if the field is used for date ranges." } } } }, "calendar_range": { "type": "array", "items": { "type": "object", "properties": { "start_field_id": { "type": "string", "format": "uuid", "description": "Field ID for the start date." }, "end_field_id": { "type": "string", "format": "uuid", "description": "Field ID for the end date." } } } } }, "required": [ "view_type", "fields" ], "description": "CALENDAR View" }, { "type": "object", "properties": { "fields": { "type": "array", "items": { "type": "object", "properties": { "field_id": { "type": "string", "format": "uuid", "description": "Field ID used in FORM view." }, "is_required": { "type": "boolean", "description": "Indicates if the field is required in the form." } } } }, "form_heading": { "type": "string", "description": "Heading for the form." }, "form_sub_heading": { "type": "string", "description": "Subheading for the form." }, "form_success_message": { "type": "string", "description": "Success message shown after form submission." }, "form_redirect_url": { "type": "string", "format": "uri", "description": "URL to redirect to after form submission." }, "form_redirect_after_secs": { "type": "integer", "description": "Seconds to wait before redirecting." }, "form_send_response_email": { "type": "boolean", "description": "Whether to send a response email." }, "form_show_another": { "type": "boolean", "description": "Whether to show another form after submission." }, "form_show_blank": { "type": "boolean", "description": "Whether to show a blank form after submission." }, "form_hide_banner": { "type": "boolean", "description": "Whether to hide the banner on the form." }, "form_hide_branding": { "type": "boolean", "description": "Whether to hide branding on the form." }, "form_banner_image_url": { "type": "string", "format": "uri", "description": "URL of the banner image for the form." }, "form_logo_url": { "type": "string", "format": "uri", "description": "URL of the logo for the form." }, "form_background_color": { "type": "string", "description": "Background color for the form.", "pattern": "^#[0-9A-Fa-f]{6}$" } }, "required": [ "view_type", "fields" ], "description": "FORM View" } ] }, "ViewCreate": { "type": "object", "properties": { "view_name": { "type": "string", "description": "Name of the view." }, "view_type": { "type": "string", "enum": [ "GRID", "GALLERY", "KANBAN", "CALENDAR", "FORM" ], "description": "Type of the view." }, "lock_type": { "type": "string", "enum": [ "COLLABARATIVE", "LOCKED", "PERSONAL" ], "description": "Lock type of the view." }, "description": { "type": "string", "description": "Description of the view." } }, "discriminator": { "propertyName": "view_type" } }, "FieldBase": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the field.", "readOnly": true, "writeOnly": false }, "title": { "type": "string", "description": "Title of the field." }, "type": { "type": "string", "description": "Field data type." }, "description": { "type": [ "string", "null" ], "description": "Description of the field." }, "default_value": { "type": "string", "description": "Default value for the field. Applicable for SingleLineText, LongText, PhoneNumber, URL, Email, Number, Decimal, Currency, Percent, Duration, Date, DateTime, Time, SingleSelect, MultiSelect, Rating, Checkbox, User and JSON fields." } }, "required": [ "title", "type" ] }, "FieldOptions_LongText": { "type": "object", "properties": { "rich_text": { "type": "boolean", "description": "Enable rich text formatting." }, "generate_text_using_ai": { "type": "boolean", "description": "Enable text generation for this field using NocoAI." } } }, "FieldOptions_PhoneNumber": { "type": "object", "properties": { "validation": { "type": "boolean", "description": "Enable validation for phone numbers." } } }, "FieldOptions_URL": { "type": "object", "properties": { "validation": { "type": "boolean", "description": "Enable validation for URL." } } }, "FieldOptions_Email": { "type": "object", "properties": { "validation": { "type": "boolean", "description": "Enable validation for Email." } } }, "FieldOptions_Number": { "type": "object", "properties": { "locale_string": { "type": "boolean", "description": "Show thousand separator on the UI." } } }, "FieldOptions_Decimal": { "type": "object", "properties": { "precision": { "type": "number", "description": "Decimal field precision. Defaults to 0", "minimum": 0, "maximum": 5 } } }, "FieldOptions_Currency": { "type": "object", "description": "Currency settings for this column. Locale defaults to `en-US` and currency code defaults to `USD`", "properties": { "locale": { "type": "string", "description": "Locale for currency formatting. Refer https://simplelocalize.io/data/locales/" }, "code": { "type": "string", "description": "Currency code. Refer https://simplelocalize.io/data/locales/", "enum": [ "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BOV", "BRL", "BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHE", "CHF", "CHW", "CLF", "CLP", "CNY", "COP", "COU", "CRC", "CUP", "CVE", "CYP", "CZK", "DJF", "DKK", "DOP", "DZD", "EEK", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GHC", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MTL", "MUR", "MVR", "MWK", "MXN", "MXV", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "ROL", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDD", "SEK", "SGD", "SHP", "SIT", "SKK", "SLL", "SOS", "SRD", "STD", "SYP", "SZL", "THB", "TJS", "TMM", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "USN", "USS", "UYU", "UZS", "VEB", "VND", "VUV", "WST", "XAF", "XAG", "XAU", "XBA", "XBB", "XBC", "XBD", "XCD", "XDR", "XFO", "XFU", "XOF", "XPD", "XPF", "XPT", "XTS", "XXX", "YER", "ZAR", "ZMK", "ZWD" ] } } }, "FieldOptions_Percent": { "type": "object", "properties": { "show_as_progress": { "type": "boolean", "description": "Display as a progress bar." } } }, "FieldOptions_Duration": { "type": "object", "properties": { "duration_format": { "type": "string", "description": "Duration format. Supported options are listed below\n- `h:mm`\n- `h:mm:ss`\n- `h:mm:ss.S`\n- `h:mm:ss.SS`\n- `h:mm:ss.SSS`" } } }, "FieldOptions_DateTime": { "type": "object", "properties": { "date_format": { "type": "string", "description": "Date format. Supported options are listed below\n- `YYYY/MM/DD`\n- `YYYY-MM-DD`\n- `YYYY MM DD`\n- `DD/MM/YYYY`\n- `DD-MM-YYYY`\n- `DD MM YYYY`\n- `MM/DD/YYYY`\n- `MM-DD-YYYY`\n- `MM DD YYYY`\n- `YYYY-MM`\n- `YYYY MM`" }, "time_format": { "type": "string", "description": "Time format. Supported options are listed below\n- `HH:mm`\n- `HH:mm:ss`\n- `HH:mm:ss.SSS`" }, "12hr_format": { "type": "boolean", "description": "Use 12-hour time format." }, "display_timezone": { "type": "boolean", "description": "Display timezone." }, "timezone": { "type": "string", "description": "Timezone. Refer to https://en.wikipedia.org/wiki/List_of_tz_database_time_zones" }, "use_same_timezone_for_all": { "type": "boolean", "description": "Use same timezone for all records." } } }, "FieldOptions_Date": { "type": "object", "properties": { "date_format": { "type": "string", "description": "Date format. Supported options are listed below\n- `YYYY/MM/DD`\n- `YYYY-MM-DD`\n- `YYYY MM DD`\n- `DD/MM/YYYY`\n- `DD-MM-YYYY`\n- `DD MM YYYY`\n- `MM/DD/YYYY`\n- `MM-DD-YYYY`\n- `MM DD YYYY`\n- `YYYY-MM`\n- `YYYY MM`" } } }, "FieldOptions_Time": { "type": "object", "properties": { "12hr_format": { "type": "boolean", "description": "Use 12-hour time format." } } }, "FieldOptions_Select": { "type": "object", "properties": { "choices": { "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string", "description": "Choice title." }, "color": { "type": "string", "description": "Specifies the tile color for the choice using a hexadecimal color code (e.g., `#36BFFF`).", "pattern": "^#[0-9A-Fa-f]{6}$" } }, "required": [ "title" ] }, "uniqueItems": true } } }, "FieldOptions_Rating": { "type": "object", "properties": { "icon": { "type": "string", "enum": [ "star", "heart", "circle-filled", "thumbs-up", "flag" ], "description": "Icon to display rating on the UI. Supported options are listed below\n- `star`\n- `heart`\n- `circle-filled`\n- `thumbs-up`\n- `flag`" }, "max_value": { "type": "integer", "description": "Maximum value for the rating. Allowed range: 1-10.", "minimum": 1, "maximum": 10 }, "color": { "type": "string", "description": "Specifies icon color using a hexadecimal color code (e.g., `#36BFFF`).", "pattern": "^#[0-9A-Fa-f]{6}$" } } }, "FieldOptions_Checkbox": { "type": "object", "properties": { "icon": { "type": "string", "enum": [ "square", "circle-check", "circle-filled", "star", "heart", "thumbs-up", "flag" ], "description": "Icon to display checkbox on the UI. Supported options are listed below\n- `square`\n- `circle-check`\n- `circle-filled`\n- `star`\n- `heart`\n- `thumbs-up`\n- `flag`" }, "color": { "type": "string", "description": "Specifies icon color using a hexadecimal color code (e.g., `#36BFFF`).", "pattern": "^#[0-9A-Fa-f]{6}$" } } }, "FieldOptions_Barcode": { "type": "object", "properties": { "format": { "type": "string", "description": "Barcode format (e.g., CODE128)." }, "barcode_value_field_id": { "type": "string", "description": "Field ID that contains the value." } } }, "FieldOptions_QRCode": { "type": "object", "properties": { "qrcode_value_field_id": { "type": "string", "description": "Field ID that contains the value." } } }, "FieldOptions_Formula": { "type": "object", "properties": { "formula": { "type": "string", "description": "Formula expression." } } }, "FieldOptions_User": { "type": "object", "properties": { "allow_multiple_users": { "type": "boolean", "description": "Allow selecting multiple users." } } }, "FieldOptions_Lookup": { "type": "object", "properties": { "related_field_id": { "type": "string", "description": "Linked field ID. Can be of type Links or LinkToAnotherRecord" }, "related_table_lookup_field_id": { "type": "string", "description": "Lookup field ID in the linked table." } }, "required": [ "related_field_id", "related_table_lookup_field_id" ] }, "FieldOptions_Rollup": { "type": "object", "properties": { "related_field_id": { "type": "string", "description": "Linked field ID." }, "related_table_rollup_field_id": { "type": "string", "description": "Rollup field ID in the linked table." }, "rollup_function": { "type": "string", "description": "Rollup function.", "enum": [ "count", "min", "max", "avg", "sum", "countDistinct", "sumDistinct", "avgDistinct" ] } }, "required": [ "related_field_id", "related_table_rollup_field_id", "rollup_function" ] }, "FieldOptions_Button": { "type": "object", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "formula" ], "description": "Button type: formula" }, "formula": { "type": "string", "description": "Formula to execute" } }, "required": [ "type", "formula" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "webhook" ], "description": "Button type: webhook" }, "button_hook_id": { "type": "string", "description": "ID of the webhook to trigger" } }, "required": [ "type", "button_hook_id" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "ai" ], "description": "Button type: AI" }, "prompt": { "type": "string", "description": "AI prompt to execute" }, "integration_id": { "type": "string", "description": "Integration ID for AI service" }, "theme": { "type": "string", "description": "Theme of the button" }, "output_column_ids": { "type": "string", "description": "IDs of columns where AI output should be stored" }, "label": { "type": "string", "description": "Label of the button" }, "icon": { "type": "string", "description": "Icon of the button" }, "color": { "type": "string", "description": "Color of the button" } }, "required": [ "type", "prompt", "integration_id" ] } ], "discriminator": { "propertyName": "type", "mapping": { "formula": "#/components/schemas/FieldOptions_Button/oneOf/0", "webhook": "#/components/schemas/FieldOptions_Button/oneOf/1", "ai": "#/components/schemas/FieldOptions_Button/oneOf/2" } } }, "FieldOptions_Links": { "type": "object", "properties": { "relation_type": { "type": "string", "description": "Type of relationship.\n\nSupported options are listed below\n- `mm` many-to-many\n- `hm` has-many\n- `oo` one-to-one" }, "related_table_id": { "type": "string", "description": "Identifier of the linked table." } }, "required": [ "relation_type", "related_table_id" ] }, "FieldOptions_LinkToAnotherRecord": { "type": "object", "properties": { "relation_type": { "type": "string", "description": "Type of relationship.\n\nSupported options are listed below\n- `mm` many-to-many\n- `hm` has-many\n- `oo` one-to-one" }, "related_table_id": { "type": "string", "description": "Identifier of the linked table." } }, "required": [ "relation_type", "related_table_id" ] }, "Field": { "allOf": [ { "$ref": "#/components/schemas/FieldBase" }, { "oneOf": [ { "properties": { "type": { "enum": [ "SingleLineText" ] } } }, { "properties": { "type": { "enum": [ "LongText" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_LongText" } } }, { "properties": { "type": { "enum": [ "PhoneNumber", "URL", "Email" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_PhoneNumber" } } }, { "properties": { "type": { "enum": [ "Number", "Decimal" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Number" } } }, { "properties": { "type": { "enum": [ "JSON" ] } } }, { "properties": { "type": { "enum": [ "Currency" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Currency" } } }, { "properties": { "type": { "enum": [ "Percent" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Percent" } } }, { "properties": { "type": { "enum": [ "Duration" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Duration" } } }, { "properties": { "type": { "enum": [ "Date", "DateTime", "Time" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_DateTime" } } }, { "properties": { "type": { "enum": [ "SingleSelect", "MultiSelect" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Select" } } }, { "properties": { "type": { "enum": [ "Rating", "Checkbox" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Rating" } } }, { "properties": { "type": { "enum": [ "Barcode" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Barcode" } } }, { "properties": { "type": { "enum": [ "Formula" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Formula" } } }, { "properties": { "type": { "enum": [ "User" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_User" } } }, { "properties": { "type": { "enum": [ "Lookup" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Lookup" } } }, { "properties": { "type": { "enum": [ "Links" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Links" } } }, { "properties": { "type": { "enum": [ "LinkToAnotherRecord" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_LinkToAnotherRecord" } } } ] } ] }, "FilterCreateUpdate": { "oneOf": [ { "$ref": "#/components/schemas/Filter" }, { "$ref": "#/components/schemas/FilterGroup" } ] }, "FieldUpdate": { "allOf": [ { "$ref": "#/components/schemas/FieldBase" }, { "oneOf": [ { "properties": { "type": { "enum": [ "LongText" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_LongText" } } }, { "properties": { "type": { "enum": [ "PhoneNumber", "URL", "Email" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_PhoneNumber" } } }, { "properties": { "type": { "enum": [ "Number", "Decimal" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Number" } } }, { "properties": { "type": { "enum": [ "JSON" ] } } }, { "properties": { "type": { "enum": [ "Currency" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Currency" } } }, { "properties": { "type": { "enum": [ "Percent" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Percent" } } }, { "properties": { "type": { "enum": [ "Duration" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Duration" } } }, { "properties": { "type": { "enum": [ "Date", "DateTime", "Time" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_DateTime" } } }, { "properties": { "type": { "enum": [ "SingleSelect", "MultiSelect" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Select" } } }, { "properties": { "type": { "enum": [ "Rating", "Checkbox" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Rating" } } }, { "properties": { "type": { "enum": [ "Barcode" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Barcode" } } }, { "properties": { "type": { "enum": [ "Formula" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Formula" } } }, { "properties": { "type": { "enum": [ "User" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_User" } } }, { "properties": { "type": { "enum": [ "Lookup" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Lookup" } } }, { "properties": { "type": { "enum": [ "Links" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_Links" } } }, { "properties": { "type": { "enum": [ "LinkToAnotherRecord" ] }, "options": { "$ref": "#/components/schemas/FieldOptions_LinkToAnotherRecord" } } } ] } ] }, "Filter": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the filter.", "readOnly": true }, "parent_id": { "type": "string", "description": "Parent ID of the filter, specifying this filters group association." }, "field_id": { "type": "string", "description": "Field ID to which this filter applies. Defaults to **root**." }, "operator": { "type": "string", "description": "Primary comparison operator (e.g., eq, gt, lt)." }, "sub_operator": { "type": [ "string", "null" ], "description": "Secondary comparison operator (if applicable)." }, "value": { "type": [ "string", "number", "boolean", "null" ], "description": "Value for comparison." } }, "required": [ "id", "field_id", "operator", "value" ] }, "FilterListResponse": { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/components/schemas/FilterGroup" }, "description": "List of filter groups. Initial set of filters are mapped to a default group with group-id set to **root**." } }, "required": [ "list" ] }, "FilterGroupLevel3": { "type": "object", "properties": { "group_operator": { "type": "string", "enum": [ "AND", "OR" ], "description": "Logical operator for the group." }, "filters": { "type": "array", "items": { "$ref": "#/components/schemas/Filter" }, "description": "List of filters in this group." } }, "required": [ "group_operator", "filters" ] }, "FilterGroupLevel2": { "type": "object", "properties": { "group_operator": { "type": "string", "enum": [ "AND", "OR" ], "description": "Logical operator for the group." }, "filters": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/Filter" }, { "$ref": "#/components/schemas/FilterGroupLevel3" } ] }, "description": "List of filters or nested filter groups at level 3." } }, "required": [ "group_operator", "filters" ] }, "FilterGroupLevel1": { "type": "object", "properties": { "group_operator": { "type": "string", "enum": [ "AND", "OR" ], "description": "Logical operator for the group." }, "filters": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/Filter" }, { "$ref": "#/components/schemas/FilterGroupLevel2" } ] }, "description": "List of filters or nested filter groups at level 2." } }, "required": [ "group_operator", "filters" ] }, "FilterGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the group.", "readOnly": true }, "parent_id": { "type": "string", "description": "Parent ID of this filter-group." }, "group_operator": { "type": "string", "enum": [ "AND", "OR" ], "description": "Logical operator for combining filters in the group." }, "filters": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/Filter" }, { "$ref": "#/components/schemas/FilterGroup" } ] }, "description": "Nested filters or filter groups." } }, "required": [ "id", "group_operator", "filters" ] }, "FilterCreate": { "oneOf": [ { "$ref": "#/components/schemas/Filter" }, { "$ref": "#/components/schemas/FilterGroupLevel1" } ] }, "FilterUpdate": { "allOf": [ { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the filter." } }, "required": [ "id" ] }, { "oneOf": [ { "$ref": "#/components/schemas/Filter" }, { "$ref": "#/components/schemas/FilterGroup" } ] } ] }, "SortListResponse": { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/components/schemas/Sort" } } }, "required": [ "list" ] }, "DataRecordV3": { "type": "object", "description": "V3 Data Record format with id and fields separation", "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ], "description": "Record identifier (primary key value)" }, "fields": { "type": "object", "description": "Record fields data (excluding primary key). Undefined when empty.", "additionalProperties": true } }, "required": [ "id" ] }, "DataRecordWithDeletedV3": { "allOf": [ { "$ref": "#/components/schemas/DataRecordV3" }, { "type": "object", "properties": { "deleted": { "type": "boolean", "description": "Indicates if the record was deleted" } }, "required": [ "deleted" ] } ] }, "DataListResponseV3": { "type": "object", "description": "V3 Data List Response format", "properties": { "records": { "type": "array", "description": "Array of records for has-many and many-to-many relationships", "items": { "$ref": "#/components/schemas/DataRecordV3" } }, "next": { "type": [ "string", "null" ], "description": "Pagination token for next page" }, "prev": { "type": [ "string", "null" ], "description": "Pagination token for previous page" }, "nestedNext": { "type": [ "string", "null" ], "description": "Nested pagination token for next page" }, "nestedPrev": { "type": [ "string", "null" ], "description": "Nested pagination token for previous page" } } }, "DataInsertRequestV3": { "type": "object", "description": "V3 Data Insert Request format", "properties": { "fields": { "type": "object", "description": "Record fields data", "additionalProperties": true } }, "required": [ "fields" ] }, "DataUpdateRequestV3": { "type": "object", "description": "V3 Data Update Request format", "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ], "description": "Record identifier" }, "fields": { "type": "object", "description": "Record fields data to update", "additionalProperties": true } }, "required": [ "id", "fields" ] }, "DataDeleteRequestV3": { "type": "object", "description": "Single record delete request", "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ], "description": "Record identifier" } }, "required": [ "id" ] }, "DataInsertResponseV3": { "type": "object", "description": "V3 Data Insert Response format", "properties": { "records": { "type": "array", "items": { "$ref": "#/components/schemas/DataRecordV3" }, "description": "Array of created records" } }, "required": [ "records" ] }, "DataUpdateResponseV3": { "type": "object", "description": "V3 Data Update Response format", "properties": { "records": { "type": "array", "items": { "type": "object", "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ], "description": "Updated record identifier" }, "fields": { "type": "object", "description": "Record fields data (excluding primary key). Undefined when empty.", "additionalProperties": true } }, "required": [ "id" ] }, "description": "Array of updated record identifiers" } }, "required": [ "records" ] }, "DataDeleteResponseV3": { "type": "object", "description": "V3 Data Delete Response format", "properties": { "records": { "type": "array", "items": { "$ref": "#/components/schemas/DataRecordWithDeletedV3" }, "description": "Array of deleted records" } }, "required": [ "records" ] }, "DataReadResponseV3": { "$ref": "#/components/schemas/DataRecordV3", "description": "V3 Data Read Response format" }, "DataNestedListResponseV3": { "type": "object", "description": "V3 Nested Data List Response format - supports both single record and array responses", "properties": { "records": { "type": "array", "description": "Array of records for has-many and many-to-many relationships", "items": { "$ref": "#/components/schemas/DataRecordV3" } }, "record": { "description": "Single record for belongs-to and one-to-one relationships", "oneOf": [ { "$ref": "#/components/schemas/DataRecordV3" }, { "type": "null" } ] }, "next": { "type": [ "string", "null" ], "description": "Pagination token for next page" }, "prev": { "type": [ "string", "null" ], "description": "Pagination token for previous page" } } }, "Paginated": { "description": "Model for Paginated", "examples": [ { "next": "http://api.nocodd.com/api/v3/tables/id?page=3", "prev": "http://api.nocodd.com/api/v3/tables/id?page=1" } ], "properties": { "next": { "description": "URL to access next page", "type": "string" }, "prev": { "description": "URL to access previous page", "type": "string" }, "nestedNext": { "description": "URL to access current page data with next set of nested fields data", "type": "string" }, "nestedPrev": { "description": "URL to access current page data with previous set of nested fields data", "type": "string" } }, "title": "Paginated Model", "type": "object" }, "BaseRoles": { "type": "string", "description": "Base roles for the user.", "enum": [ "owner", "creator", "editor", "viewer", "commenter", "no-access" ] }, "WorkspaceRoles": { "type": "string", "description": "Workspace roles for the user.", "enum": [ "workspace-level-owner", "workspace-level-creator", "workspace-level-editor", "workspace-level-viewer", "workspace-level-commenter", "workspace-level-no-access" ] }, "DocumentCreate": { "type": "object", "description": "Request body for creating a document.", "properties": { "title": { "type": "string", "description": "Title of the document. Defaults to 'Untitled' if omitted." }, "content": { "type": "object", "description": "rich-text JSON document content." }, "meta": { "type": "object", "description": "Arbitrary metadata (icon, cover image, settings, etc.)." }, "parent_id": { "type": "string", "nullable": true, "description": "Parent document ID. null or omitted for root-level documents." } } }, "DocumentUpdate": { "type": "object", "description": "Request body for updating a document.", "required": [ "version" ], "properties": { "title": { "type": "string", "description": "Updated title." }, "content": { "type": "object", "description": "Updated rich-text JSON document content." }, "meta": { "type": "object", "description": "Updated metadata." }, "version": { "type": "integer", "description": "Current document version for optimistic concurrency control. Must match the server's version." } } }, "DocumentReorder": { "type": "object", "description": "Request body for reordering or moving a document. At least one of order or parent_id must be provided.", "properties": { "order": { "type": "number", "description": "New sort order value (float). Compute midpoint between neighbors for fractional ordering." }, "parent_id": { "type": "string", "nullable": true, "description": "New parent document ID. null to move to root. Omit to keep current parent." } } }, "Document": { "type": "object", "description": "Full document response (includes content).", "required": [ "id", "base_id", "title", "content", "order", "parent_id", "has_children", "version", "created_at", "updated_at" ], "properties": { "id": { "type": "string", "description": "Unique document identifier." }, "base_id": { "type": "string", "description": "Base this document belongs to." }, "title": { "type": "string", "description": "Document title." }, "content": { "type": "object", "description": "rich-text JSON document content." }, "meta": { "type": "object", "description": "Document metadata (icon, cover, lock, settings)." }, "order": { "type": "number", "description": "Sort order among siblings." }, "parent_id": { "type": "string", "nullable": true, "description": "Parent document ID. null for root documents." }, "has_children": { "type": "boolean", "description": "Whether this document has child documents." }, "version": { "type": "integer", "description": "Optimistic concurrency version counter." }, "comment_count": { "type": "integer", "description": "Number of comments on this document." }, "created_by": { "type": "string", "description": "User ID of the document creator." }, "updated_by": { "type": "string", "description": "User ID of the last editor." }, "created_at": { "type": "string", "format": "date-time", "description": "Creation timestamp." }, "updated_at": { "type": "string", "format": "date-time", "description": "Last update timestamp." } } }, "DocumentListItem": { "type": "object", "description": "Document summary returned in list responses. Excludes the `content` field.", "required": [ "id", "base_id", "title", "order", "parent_id", "has_children", "version", "created_at", "updated_at" ], "properties": { "id": { "type": "string" }, "base_id": { "type": "string" }, "title": { "type": "string" }, "meta": { "type": "object" }, "order": { "type": "number" }, "parent_id": { "type": "string", "nullable": true }, "has_children": { "type": "boolean" }, "version": { "type": "integer" }, "comment_count": { "type": "integer" }, "created_by": { "type": "string" }, "updated_by": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" } } }, "DocumentListResponse": { "type": "object", "description": "List of documents.", "properties": { "list": { "type": "array", "items": { "$ref": "#/components/schemas/DocumentListItem" } } }, "required": [ "list" ] } }, "responses": { "BadRequest": { "description": "BadRequest", "content": { "application/json": { "schema": { "type": "object", "properties": { "msg": { "type": "string", "x-stoplight": { "id": "p9mk4oi0hbihm" }, "example": "BadRequest [Error]: " } }, "required": [ "msg" ] }, "examples": { "Example 1": { "value": { "msg": "BadRequest [Error]: " } } } } }, "headers": {} } }, "securitySchemes": { "xc-token": { "name": "Auth Token ", "type": "apiKey", "in": "header", "description": "Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable `NC_JWT_EXPIRES_IN`." }, "xc-shared-base-id": { "name": "Shared Base ID", "type": "apiKey", "in": "header", "description": "Shared base uuid" }, "xc-shared-erd-id": { "name": "Shared ERD ID", "type": "apiKey", "in": "header", "description": "Shared ERD uuid" } }, "parameters": { "xc-token": { "name": "xc-token", "in": "header", "required": true, "schema": { "type": "string" }, "description": "API Token. Refer [here](https://docs.nocodb.com/account-settings/api-tokens/) to know more" } } } }