
## Storage fields

`GET /v1/storages/fields`

Returns the map of all storage fields with type and read-only flag. Every storage field is read-only — this section does not support create or update.

## Examples

### curl — personal key

```bash
curl "https://vibecode.bitrix24.com/v1/storages/fields" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl "https://vibecode.bitrix24.com/v1/storages/fields" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/storages/fields', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data } = await res.json()
console.log('Fields:', Object.keys(data.fields).length)
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/storages/fields', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data } = await res.json()
```

## Response fields

The `data` object contains a `fields` map (field name → `{ type, readonly, label, description }`) and a `batch` list of bulk-mode operations. For storages `batch` is empty — the section is read-only.

| Field | Bitrix24 | Type | RO | Description |
|------|----------|-----|:--:|---------|
| `id` | `ID` | number | yes | Storage identifier |
| `name` | `NAME` | string | yes | Storage name |
| `code` | `CODE` | string \| null | yes | Symbolic code. `null` on the Bitrix24 accounts we checked |
| `module` | `MODULE_ID` | string | yes | Owner module of the storage, `disk` for Drive |
| `entityType` | `ENTITY_TYPE` | string | yes | Owner type: `user`, `group`, `common` |
| `entityId` | `ENTITY_ID` | string | yes | Owner identifier. A string, non-numeric for the shared drive, for example `shared_files_s1` |
| `rootFolderId` | `ROOT_OBJECT_ID` | number | yes | Identifier of the storage root folder. Content — [`GET /v1/folders`](/docs/entities/folders) |

## Response example

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true, "label": "ID", "description": "Unique Drive storage identifier." },
      "name": { "type": "string", "readonly": true, "label": "Name", "description": "Storage name shown to the user." },
      "code": { "type": "string", "readonly": true, "label": "Symbolic code", "description": "Symbolic code of the storage — often absent in practice (null)." },
      "entityType": { "type": "string", "readonly": true, "label": "Owner type", "description": "Storage owner type — user, group, or the company shared drive." },
      "entityId": { "type": "string", "readonly": true, "label": "Owner ID", "description": "Storage owner identifier — for the shared drive it can be a non-numeric value." },
      "rootFolderId": { "type": "number", "readonly": true, "label": "Root folder", "description": "ID of the storage root folder where its content begins." },
      "module": { "type": "string", "readonly": true, "label": "Module", "description": "Owner module code of the storage — disk for Drive." }
    },
    "batch": []
  }
}
```

## Error response example

403 — no scope:

```json
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'disk' scope"
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 403 | `SCOPE_DENIED` | The API key does not have the `disk` scope |
| 401 | `TOKEN_MISSING` | The API key has no configured tokens |

The full list of common API errors — [Errors](/docs/errors).

## See also

- [List storages](/docs/entities/storages/list)
- [Get a storage](/docs/entities/storages/get)
- [Storages](/docs/entities/storages)
- [Entity API](/docs/entity-api)
