Skip to main content
Glama
dns.ts3.52 kB
import { LiaraClient } from '../api/client.js'; import { Zone, DnsRecord, CreateDnsRecordRequest, DomainCheck, PaginationOptions, paginationToParams, } from '../api/types.js'; import { validateRequired, unwrapApiResponse } from '../utils/errors.js'; /** * List all DNS zones */ export async function listZones( client: LiaraClient, pagination?: PaginationOptions ): Promise<Zone[]> { const params = paginationToParams(pagination); const response = await client.get<any>('/v1/zones', params); return unwrapApiResponse<Zone[]>(response, ['zones', 'data', 'items']); } /** * Get details of a specific DNS zone */ export async function getZone( client: LiaraClient, zoneId: string ): Promise<Zone> { validateRequired(zoneId, 'Zone ID'); return await client.get<Zone>(`/v1/zones/${zoneId}`); } /** * Create a new DNS zone */ export async function createZone( client: LiaraClient, name: string ): Promise<Zone> { validateRequired(name, 'Zone name'); return await client.post<Zone>('/v1/zones', { name }); } /** * Delete a DNS zone */ export async function deleteZone( client: LiaraClient, zoneId: string ): Promise<void> { validateRequired(zoneId, 'Zone ID'); await client.delete(`/v1/zones/${zoneId}`); } /** * Check DNS zone status */ export async function checkZone( client: LiaraClient, zoneId: string ): Promise<DomainCheck> { validateRequired(zoneId, 'Zone ID'); return await client.get<DomainCheck>(`/v1/zones/${zoneId}/check`); } /** * List DNS records for a zone */ export async function listRecords( client: LiaraClient, zoneId: string, pagination?: PaginationOptions ): Promise<DnsRecord[]> { validateRequired(zoneId, 'Zone ID'); const params = paginationToParams(pagination); const response = await client.get<any>(`/v1/zones/${zoneId}/records`, params); return unwrapApiResponse<DnsRecord[]>(response, ['records', 'data', 'items']); } /** * Get a specific DNS record */ export async function getRecord( client: LiaraClient, zoneId: string, recordId: string ): Promise<DnsRecord> { validateRequired(zoneId, 'Zone ID'); validateRequired(recordId, 'Record ID'); return await client.get<DnsRecord>(`/v1/zones/${zoneId}/records/${recordId}`); } /** * Create a DNS record */ export async function createRecord( client: LiaraClient, zoneId: string, request: CreateDnsRecordRequest ): Promise<DnsRecord> { validateRequired(zoneId, 'Zone ID'); validateRequired(request.type, 'Record type'); validateRequired(request.name, 'Record name'); validateRequired(request.value, 'Record value'); return await client.post<DnsRecord>( `/v1/zones/${zoneId}/records`, request ); } /** * Update a DNS record */ export async function updateRecord( client: LiaraClient, zoneId: string, recordId: string, request: Partial<CreateDnsRecordRequest> ): Promise<DnsRecord> { validateRequired(zoneId, 'Zone ID'); validateRequired(recordId, 'Record ID'); return await client.put<DnsRecord>( `/v1/zones/${zoneId}/records/${recordId}`, request ); } /** * Delete a DNS record */ export async function deleteRecord( client: LiaraClient, zoneId: string, recordId: string ): Promise<void> { validateRequired(zoneId, 'Zone ID'); validateRequired(recordId, 'Record ID'); await client.delete(`/v1/zones/${zoneId}/records/${recordId}`); }

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/razavioo/liara-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server