Skip to content

Latest commit

 

History

History
413 lines (354 loc) · 11.8 KB

File metadata and controls

413 lines (354 loc) · 11.8 KB

Create a Folder in the Root of the Storage disk.storage.addFolder

{% note tip "" %}

If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.

{% endnote %}

Scope: disk

Who can execute the method: user with "Add" access permission for the required storage

The method disk.storage.addFolder creates a folder in the root of the storage.

Method Parameters

{% include Note on required parameters %}

#| || Name type | Description || || id* integer | Identifier of the storage.

The identifier can be obtained using the method disk.storage.getList || || data* array | Array with the field NAME, where NAME is the name of the new folder || || rights array | Array of access permissions for the folder in the format {"TASK_ID": 42, "ACCESS_CODE": "U35"}, where

  • TASK_ID — identifier of the access level
  • ACCESS_CODE — access code consisting of the user's or department's letter code and identifier

User categories:

  • U — user
  • * — all users
  • D — all department employees
  • DR — all department employees with subdivisions

The list of available TASK_ID identifiers for setting permissions can be obtained using the method disk.rights.getTasks || |#

Code Examples

{% include Note on examples %}

{% list tabs %}

  • cURL (Webhook)

    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":1357,"data":{"NAME":"Neuer Ordner"},"rights":[{"TASK_ID":71,"ACCESS_CODE":"U1271"}]}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/disk.storage.addFolder
  • cURL (OAuth)

    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":1357,"data":{"NAME":"Neuer Ordner"},"rights":[{"TASK_ID":71,"ACCESS_CODE":"U1271"}],"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/disk.storage.addFolder
  • JS (TS)

    // This snippet is an ES module: top-level await requires type="module" or a bundler.
    // $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
    import { Text } from '@bitrix24/b24jssdk'
    import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'
    
    declare const $b24: B24Frame
    
    // Shape of the payload returned in result (match the "response handling" section of the page)
    type AddFolderResult = {
      ID: number
      NAME: string
      CODE: string | null
      STORAGE_ID: string
      TYPE: string
      REAL_OBJECT_ID: number
      PARENT_ID: string
      DELETED_TYPE: number
      CREATE_TIME: ISODate | null
      UPDATE_TIME: ISODate | null
      DELETE_TIME: ISODate | null
      CREATED_BY: string
      UPDATED_BY: string
      DELETED_BY: string | null
      DETAIL_URL: string
    }
    
    try {
      const response = await $b24.actions.v2.call.make<AddFolderResult>({
        method: 'disk.storage.addFolder',
        params: {
          id: 1357,
          data: {
            NAME: 'New folder',
          },
          rights: [
            {
              TASK_ID: 71,
              ACCESS_CODE: 'U1271',
            },
          ],
        },
        requestId: Text.getUuidRfc4122()
      })
    
      // The payload is available only on a successful response
      if (!response.isSuccess) {
        console.error(response.getErrorMessages().join('; '))
      } else {
        const result = response.getData()!.result
        console.info('Created folder:', result.ID, result.NAME, result.DETAIL_URL)
      }
    } catch (error) {
      // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
      console.error(error)
    }
  • JS (UMD)

    <!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
    <script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
    <script>
      async function addFolder() {
        try {
          // Initialize the SDK inside a Bitrix24 frame
          const $b24 = await B24Js.initializeB24Frame()
    
          const response = await $b24.actions.v2.call.make({
            method: 'disk.storage.addFolder',
            params: {
              id: 1357,
              data: {
                NAME: 'New folder',
              },
              rights: [
                {
                  TASK_ID: 71,
                  ACCESS_CODE: 'U1271',
                },
              ],
            },
            requestId: B24Js.Text.getUuidRfc4122()
          })
    
          // The payload is available only on a successful response
          if (!response.isSuccess) {
            console.error(response.getErrorMessages().join('; '))
            return
          }
    
          const result = response.getData().result
          console.info('Created folder:', result.ID, result.NAME, result.DETAIL_URL)
        } catch (error) {
          // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
          console.error(error)
        }
      }
    
      document.addEventListener('DOMContentLoaded', addFolder)
    </script>
  • PHP

    try {
        $response = $b24Service
            ->core
            ->call(
                'disk.storage.addFolder',
                [
                    'id' => 1357,
                    'data' => [
                        'NAME' => 'Neuer Ordner'
                    ],
                    'rights' => [
                        [
                            'TASK_ID' => 71,
                            'ACCESS_CODE' => 'U1271'
                        ]
                    ]
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding folder: ' . $e->getMessage();
    }
  • BX24.js

    BX24.callMethod(
        "disk.storage.addFolder",
        {
            id: 1357,
            data: {
                NAME: 'Neuer Ordner'
            },
            rights: [
                {
                    TASK_ID: 71,
                    ACCESS_CODE: 'U1271'
                }
            ]
        },
        function (result)
        {
            if (result.error())
                console.error(result.error());
            else
                console.dir(result.data());
        }
    );
  • PHP CRest

    require_once('crest.php');
    
    $result = CRest::call(
        'disk.storage.addFolder',
        [
            'id' => 1357,
            'data' => [
                'NAME' => 'Neuer Ordner'
            ],
            'rights' => [
                [
                    'TASK_ID' => 71,
                    'ACCESS_CODE' => 'U1271'
                ]
            ]
        ]
    );
    
    echo '<PRE>';
    print_r($result);
    echo '</PRE>';
  • Go

    // client and ctx are already created — see the Go SDK section
    res, err := client.Core().Call(ctx, "disk.storage.addFolder", b24.Params{
    	"id": 1357,
    	"data": b24.Params{
    		"NAME": "Neuer Ordner",
    	},
    	"rights": []b24.Params{
    		{
    			"TASK_ID":     71,
    			"ACCESS_CODE": "U1271",
    		},
    	},
    })
    if err != nil {
    	return fmt.Errorf("disk.storage.addFolder: %w", err)
    }
    
    var item struct {
    	ID           b24.ID `json:"ID"`
    	Name         string `json:"NAME"`
    	StorageID    b24.ID `json:"STORAGE_ID"`
    	Type         string `json:"TYPE"`
    	RealObjectID b24.ID `json:"REAL_OBJECT_ID"`
    	ParentID     b24.ID `json:"PARENT_ID"`
    }
    if err := json.Unmarshal(res.Result, &item); err != nil {
    	return fmt.Errorf("parse response: %w", err)
    }
    fmt.Println(item.ID, item.Name)

{% endlist %}

Response Handling

HTTP status: 200

{
    "result": {
        "ID": 9031,
        "NAME": "Neuer Ordner",
        "CODE": null,
        "STORAGE_ID": "1357",
        "TYPE": "folder",
        "REAL_OBJECT_ID": 9031,
        "PARENT_ID": "8875",
        "DELETED_TYPE": 0,
        "CREATE_TIME": "2026-01-28T17:23:11+03:00",
        "UPDATE_TIME": "2026-01-28T17:23:11+03:00",
        "DELETE_TIME": null,
        "CREATED_BY": "1269",
        "UPDATED_BY": "1269",
        "DELETED_BY": null,
        "DETAIL_URL": "https://test.bitrix24.com/company/personal/user/1269/disk/path/Neuer Ordner"
    },
    "time": {
        "start": 1769610191,
        "finish": 1769610191.803601,
        "duration": 0.8036010265350342,
        "processing": 0,
        "date_start": "2026-01-28T17:23:11+03:00",
        "date_finish": "2026-01-28T17:23:11+03:00",
        "operating_reset_at": 1769610791,
        "operating": 0
    }
}

Returned Data

#| || Name type | Description || || result array | An array with data about the created folder || || ID integer | Folder identifier || || NAME string | Folder name || || CODE string | Symbolic code of the folder || || STORAGE_ID integer | Identifier of the storage where the folder is located || || TYPE enum | Type of the object || || REAL_OBJECT_ID integer | Identifier of the object || || PARENT_ID integer | Identifier of the parent folder || || DELETED_TYPE enum | Deletion status of the object. Possible values:

  • 0 — not deleted
  • 3 — in the trash
  • 4 — deleted along with the parent folder || || CREATE_TIME datetime | Date and time of folder creation || || UPDATE_TIME datetime | Date and time of the last update of the folder || || DELETE_TIME datetime | Date and time of moving the folder to the trash || || CREATED_BY integer | Identifier of the user who created the folder || || UPDATED_BY integer | Identifier of the user who made the last change || || DELETED_BY integer | Identifier of the user who deleted the folder || || DETAIL_URL string | Link to open the folder in the interface || || time time | Information about the request execution time || |#

Error Handling

HTTP status: 400

{
    "error":"ERROR_ARGUMENT",
    "error_description":"Invalid value of parameter {Parameter #1}"
}

{% include notitle Error handling %}

Possible Error Codes

#| || Code | Description | Value || || ERROR_ARGUMENT | Invalid value of parameter {Parameter #1} | The required field NAME is missing in the data array || || DISK_OBJ_22000 | A folder with this name already exists | A folder with this name already exists || || ERROR_NOT_FOUND | Could not find entity with id X | Storage with the specified id not found || || ACCESS_DENIED | Access denied | Insufficient rights to create the folder || |#

{% include System errors %}

Continue Learning