> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.datagol.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Folder

> ## 1️⃣ Overview

**Purpose:**  
Creates a new folder inside a workspace.

Supports nested folder creation by passing a `parentId`.

---

## 2️⃣ Endpoint

``` bash
POST /noCo/api/v2/workspaces/{workspaceId}/folder

 ```

---

## 3️⃣ Path Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| workspaceId | string | ✅ Yes | The ID of the workspace where the folder will be created |

---

## 4️⃣ Authentication

Requires authentication using:

``` bash
Authorization: Bearer <token>

 ```

---

## 5️⃣ Request Headers

| Header | Required |
| --- | --- |
| Authorization | ✅ Yes |

---

## 6️⃣ Request Body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| name | string | ✅ Yes | Name of the folder to create |
| parentId | string | ❌ No | ID of the parent folder for nested creation. Pass `null` for a root-level folder |

---

## 7️⃣ Example Request

``` bash
curl --location 'https://be.datagol.ai/noCo/api/v2/workspaces/{workspaceId}/folder' \
--header 'Authorization: Bearer <token>' \
--data-raw '{"name":"test folder","parentId":null}'

 ```

---

## 8️⃣ Behavior Summary

``` id="behcf1"
Creates a new folder in the specified workspace.
Returns the created folder object including its generated id.
To create a nested folder, set parentId to the id of an existing folder.
Pass parentId as null to create a root-level folder.

 ```



## OpenAPI

````yaml /openapi/openapi.yaml post /noCo/api/v2/workspaces/{workspace_id}/folder
openapi: 3.0.0
info:
  title: DataGOL APIs
  version: 1.0.0
  description: ''
servers:
  - url: https://be.datagol.ai
  - url: https://be.datagol.ai
  - url: https://kg.datagol.ai
  - url: https://ai.datagol.ai
security: []
tags:
  - name: Links & Joins
    description: >
      ## 🔗 Links & Joins


      LINK and LOOKUP are special workbook column types that enable relational
      data modeling across tables.


      | Column Type | Purpose |

      |---|---|

      | `LINK` | Defines a relationship between two tables |

      | `LOOKUP` | Projects columns from an associated table via a link |


      Both are configured through `ColumnDTO.colOptions`. A table can have
      multiple link columns, and each link can have multiple lookup columns.


      ---


      ## 📐 UI Data Types


      - **LINK** — Special column used to represent inter-table relations

      - **LOOKUP** — Special column used to project associated table fields via
      a link


      ---


      ## 🔗 LINK Semantics


      A LINK column stores metadata for:

      - `tableId` — Current table

      - `associatedTableId` — Associated (linked) table

      - `relationType` — Type of relationship

      - `linkColumnId` — Link column identifier


      **Supported relation patterns:**


      | Pattern | Description |

      |---|---|

      | `ONE_TO_ONE` | Each record in the source maps to one record in the
      destination |

      | `ONE_TO_MANY` | One source record maps to many destination records |

      | `MANY_TO_MANY` | Many source records map to many destination records |


      ---


      ## 🔍 LOOKUP Semantics


      - A LOOKUP column is tightly coupled with a specific LINK column

      - References a link using `linkColumnId`

      - Represents a selected column from the associated table

      - Multiple lookup columns can be defined for the same link


      ---


      ## 🗂️ Metadata in `ColumnDTO.colOptions`


      Use `colOptions` to persist link/lookup metadata.


      | Field | Description |

      |---|---|

      | `columnId` | Current column ID |

      | `tableId` | Current table ID |

      | `associatedTableId` | Associated table ID |

      | `linkColumnId` | Link column ID — used by LOOKUP; references the LINK
      column's `columnId` |

      | `relationType` | Relation semantics for LINK |


      ---


      ## 🔄 Manual Linking Record Flow


      To create manual record-level links:


      1. Fetch associated table schema/data

      2. User selects associated record(s) to link

      3. Send linking payload with:
          - `sourceRecordId` — PK of the current table row
          - `destinationRecordId` — PK of the associated table row
          - `linkColumnId` — LINK column identifier
      4. Backend resolves link metadata from `linkColumnId` (relation type,
      associated table, direction/constraints)

      5. Backend applies relation rules and stores the link relation


      ---


      ## 📋 Record Linking Contract


      | Field | Description |

      |---|---|

      | `sourceRecordId` | PK of the current table row |

      | `destinationRecordId` | PK of the associated table row |

      | `linkColumnId` | LINK column identifier |

      | `tableId` | Current table ID |


      > Backend derives all remaining relation metadata from the link
      configuration.


      ---


      ## ⚠️ Important Notes


      > - LINK and LOOKUP are **column-level constructs** first; record linking
      is a data-level operation built on top

      > - LOOKUP behavior depends on LINK existence and metadata integrity

      > - With multiple links to the same associated table, each LOOKUP must
      bind to the correct `linkColumnId`

      > - Always treat the associated row ID as the associated table PK for
      linking UI selection
paths:
  /noCo/api/v2/workspaces/{workspace_id}/folder:
    parameters:
      - name: workspace_id
        in: path
        required: true
        deprecated: false
        schema: {}
        example: '{{workspace_id}}'
    post:
      tags:
        - Enterprise Search
      summary: Create Folder
      description: >-
        ## 1️⃣ Overview


        **Purpose:**  

        Creates a new folder inside a workspace.


        Supports nested folder creation by passing a `parentId`.


        ---


        ## 2️⃣ Endpoint


        ``` bash

        POST /noCo/api/v2/workspaces/{workspaceId}/folder

         ```

        ---


        ## 3️⃣ Path Parameters


        | Parameter | Type | Required | Description |

        | --- | --- | --- | --- |

        | workspaceId | string | ✅ Yes | The ID of the workspace where the
        folder will be created |


        ---


        ## 4️⃣ Authentication


        Requires authentication using:


        ``` bash

        Authorization: Bearer <token>

         ```

        ---


        ## 5️⃣ Request Headers


        | Header | Required |

        | --- | --- |

        | Authorization | ✅ Yes |


        ---


        ## 6️⃣ Request Body


        | Field | Type | Required | Description |

        | --- | --- | --- | --- |

        | name | string | ✅ Yes | Name of the folder to create |

        | parentId | string | ❌ No | ID of the parent folder for nested
        creation. Pass `null` for a root-level folder |


        ---


        ## 7️⃣ Example Request


        ``` bash

        curl --location
        'https://be.datagol.ai/noCo/api/v2/workspaces/{workspaceId}/folder' \

        --header 'Authorization: Bearer <token>' \

        --data-raw '{"name":"test folder","parentId":null}'

         ```

        ---


        ## 8️⃣ Behavior Summary


        ``` id="behcf1"

        Creates a new folder in the specified workspace.

        Returns the created folder object including its generated id.

        To create a nested folder, set parentId to the id of an existing folder.

        Pass parentId as null to create a root-level folder.

         ```
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: Display name of the folder to create
                  example: test folder
                parentId:
                  type: string
                  nullable: true
                  description: >-
                    ID of the parent folder for nested creation. Pass null to
                    create a root-level folder
                  example: xxxx-xxxx-xxxx
            example:
              name: test folder
              parentId: null
      responses:
        '200':
          description: Create Folder
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier of the created folder
                    example: d287afa7-2006-4a91-ae24-03a548d0b58f
                  name:
                    type: string
                    description: Display name of the folder
                    example: test folder
                  isFolder:
                    type: boolean
                    description: Always true for folder objects
                    example: true
                  workspaceId:
                    type: string
                    description: ID of the workspace this folder belongs to
                    example: a00140c3-a621-4bd4-a300-00b9ddb1ed26
                  companyId:
                    type: integer
                    description: ID of the company that owns this folder
                    example: 1
                  children:
                    type: array
                    items: {}
                    description: List of child folders or files nested under this folder
                    example: []
                  uiMetadata:
                    type: object
                    description: Additional UI-level metadata associated with the folder
                    example: {}
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |
        This API uses OAuth 2.0 with the authorization code grant flow.

````