liara_list_ftp_accesses
Retrieve FTP access records for a specific disk in your Liara cloud application to monitor file transfer activities and manage permissions.
Instructions
List FTP accesses for a disk
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| appName | Yes | The name of the app | |
| diskName | Yes | The name of the disk | |
| page | No | Page number (1-based) | |
| perPage | No | Number of items per page | |
| limit | No | Alternative to perPage: maximum number of items to return | |
| offset | No | Alternative to page: number of items to skip |
Implementation Reference
- src/services/disks.ts:105-119 (handler)The core handler function that implements the tool logic: lists FTP accesses for a specific disk in a Liara project by querying the API.export async function listFtpAccesses( client: LiaraClient, appName: string, diskName: string, pagination?: PaginationOptions ): Promise<FtpAccess[]> { validateAppName(appName); validateRequired(diskName, 'Disk name'); const params = paginationToParams(pagination); return await client.get<FtpAccess[]>( `/v1/projects/${appName}/disks/${diskName}/ftp`, params ); }
- src/api/types.ts:257-263 (schema)TypeScript interface defining the input/output schema for FTP access objects returned by liara_list_ftp_accesses.export interface FtpAccess { _id?: string; hostname: string; port: number; username: string; password: string; }
- src/services/disks.ts:1-119 (helper)Imports and supporting utilities used by the FTP accesses handler, including client, types, and validation functions.import { LiaraClient } from '../api/client.js'; import { Disk, CreateDiskRequest, FtpAccess, PaginationOptions, paginationToParams, } from '../api/types.js'; import { validateAppName, validateRequired } from '../utils/errors.js'; /** * List disks for a project */ export async function listDisks( client: LiaraClient, appName: string, pagination?: PaginationOptions ): Promise<Disk[]> { validateAppName(appName); // Disks are included in project details, but we can still apply pagination client-side if needed const project = await client.get<any>(`/v1/projects/${appName}`); const disks = project.disks || []; // Apply client-side pagination if needed (since disks come from project details) if (pagination) { const page = pagination.page || 1; const perPage = pagination.perPage || pagination.limit || 100; const start = (page - 1) * perPage; const end = start + perPage; return disks.slice(start, end); } return disks; } /** * Get details of a specific disk */ export async function getDisk( client: LiaraClient, appName: string, diskName: string ): Promise<Disk> { validateAppName(appName); validateRequired(diskName, 'Disk name'); return await client.get<Disk>(`/v1/projects/${appName}/disks/${diskName}`); } /** * Create a new disk for a project */ export async function createDisk( client: LiaraClient, appName: string, request: CreateDiskRequest ): Promise<Disk> { validateAppName(appName); validateRequired(request.name, 'Disk name'); validateRequired(request.size, 'Disk size'); validateRequired(request.mountPath, 'Mount path'); if (request.size <= 0) { throw new Error('Disk size must be greater than 0'); } return await client.post<Disk>( `/v1/projects/${appName}/disks`, request ); } /** * Delete a disk */ export async function deleteDisk( client: LiaraClient, appName: string, diskName: string ): Promise<void> { validateAppName(appName); validateRequired(diskName, 'Disk name'); await client.delete(`/v1/projects/${appName}/disks/${diskName}`); } /** * Create FTP access for a disk */ export async function createFtpAccess( client: LiaraClient, appName: string, diskName: string ): Promise<FtpAccess> { validateAppName(appName); validateRequired(diskName, 'Disk name'); return await client.post<FtpAccess>( `/v1/projects/${appName}/disks/${diskName}/ftp` ); } /** * List FTP accesses for a disk */ export async function listFtpAccesses( client: LiaraClient, appName: string, diskName: string, pagination?: PaginationOptions ): Promise<FtpAccess[]> { validateAppName(appName); validateRequired(diskName, 'Disk name'); const params = paginationToParams(pagination); return await client.get<FtpAccess[]>( `/v1/projects/${appName}/disks/${diskName}/ftp`, params ); }