Creates a new DriveItem instance
Initializes a drive item with the provided metadata and optional URI. The drive item represents a file or document within a drive.
Drive item metadata
Optionaluri: stringOptional URI path for the drive item endpoint. Defaults to '/drive/:driveId/item'
Get the drive item's vector indexes collection
This getter provides access to the drive item's vector indexes through the VectorIndexes collection. It enables management of all vector indexes associated with this drive item (folder).
Note: Vector indexes are typically associated with folders, not individual files.
VectorIndexes collection for managing vector indexes
Get the access control functionality for this drive item
This getter provides access to the drive item's access control methods through the Access class. It allows for granting and revoking permissions to users, org users, agents, and clients.
Important: The available roles depend on whether the item is a directory (folder) or a file:
An Access instance configured for this drive item
Grant access to a directory (folder):
const directory = await drive.items.get({}, directoryId);
// Directories support all roles including CONTRIBUTOR
await directory.access.grantByRole({ org_user: 'orguser123' }, 'CONTRIBUTOR');
// Grant editor role
await directory.access.grantByRole({ org_user: 'orguser123' }, 'EDITOR');
// Grant path-based access
await directory.access.grantByRole(
{ org_user: 'orguser123' },
'EDITOR',
{ mode: 'path', folder_role: 'READ_ONLY' }
);
Grant access to a file:
const file = await drive.items.get({}, fileId);
// Files can use VIEWER, EDITOR, or MANAGER (not CONTRIBUTOR)
await file.access.grantByRole({ org_user: 'orguser123' }, 'EDITOR');
// CONTRIBUTOR is not valid for files
// await file.access.grantByRole({ org_user: 'orguser123' }, 'CONTRIBUTOR'); // ❌ Invalid
Revoke access:
const item = await drive.items.get({}, itemId);
// Revoke all access from a user
const result = await item.access.revoke({ org_user: 'orguser123' });
console.log(`Revoked ${result.revoked_count} permissions`);
// Revoke all access from a client
const result = await item.access.revoke({ client: clientObj });
console.log(`Removed ${result.revoked_count} permissions`);
Check if the entity is active
This method checks the active status of the entity. Most entities in the system can be active or inactive, which affects their availability and usability in the platform.
True if the entity is active, false otherwise
Convert model instance to interface data
This method serializes the model instance to a plain object that matches the interface type. This is useful for:
The model data as a plain object matching the interface type
Convert model instance to API payload
This method creates a payload suitable for API requests by:
A clean object suitable for API requests
Update model data with new values
This method updates the model's data and instance properties with new values. It performs a shallow merge of the updates with existing data, allowing for partial updates of the model's properties.
Object containing properties to update
const user = new User({
email: 'old@example.com',
firstName: 'John'
});
// Update multiple properties
user.update({
email: 'new@example.com',
lastName: 'Doe'
});
// Save changes to API
await user.save();
This method only updates the local model instance. To persist changes to the API, call save after updating.
Save the model instance to the API
This method persists the current state of the model to the API using a PUT request. It requires the model to have an ID (existing instance). For new instances, use the collection's create method instead.
The method:
Promise resolving to the updated model data
Delete the model instance from the API
This method permanently deletes the model instance from the API and clears the local data. This operation cannot be undone.
The method:
Optionalparams: objectOptional query parameters for deletion (e.g., { delete: true, deleteS3: true })
Promise that resolves when deletion is successful
Basic deletion:
const user = await users.get({}, 'user-id');
if (user) {
await user.delete();
// User is now deleted and instance is cleared
}
Get the download URL for this file or folder
Returns a URL that can be used to download the file directly or as a ZIP archive if it's a folder. The download is handled by the backend which either redirects to S3 for files or streams a ZIP archive for folders.
OptionalexpiresIn: numberNumber of seconds until the download URL expires (default: 3600 = 1 hour)
Promise resolving to the download URL
Download a file in the browser:
const item = await drive.items.get({}, itemId);
// Get download URL and trigger download
const url = await item.downloadUrl();
window.location.href = url;
Download with custom expiration:
// Download URL expires in 2 hours
const url = await item.downloadUrl(7200);
// Use with fetch for programmatic download
const response = await fetch(url);
const blob = await response.blob();
DriveItem class for managing files and documents in drives
This class represents a file or document item within a drive in the Mosaia platform. Drive items contain metadata about files, including their location, size, and type.
Features:
Remarks
Drive items represent:
Example
Basic drive item: