Skip to main content
Glama
keyvault.ts3.3 kB
import { AzureService, ServiceResult } from './base-service.js'; import { CacheKeys } from '../lib/cache.js'; interface KeyVault { name: string; resourceGroup: string; location: string; vaultUri: string; } interface Key { name: string; enabled: boolean; created: string; updated: string; keyType: string; } interface Secret { name: string; enabled: boolean; created: string; updated: string; contentType: string; } export class KeyVaultService extends AzureService { readonly serviceName = 'Key Vault'; readonly cliPrefix = 'keyvault'; async list(resourceGroup?: string): Promise<ServiceResult<KeyVault[]>> { const cacheKey = CacheKeys.service('keyvault', 'vaults', resourceGroup ?? ''); return this.cachedExecute(cacheKey, async () => { const opts: Record<string, string> = {}; if (resourceGroup) opts['resource-group'] = resourceGroup; const result = await this.execute('list', opts); return this.toResult<KeyVault[]>(result); }); } async getVault(vaultName: string, resourceGroup: string): Promise<ServiceResult> { const result = await this.execute('show', { 'name': vaultName, 'resource-group': resourceGroup }); return this.toResult(result); } async listKeys(vaultName: string): Promise<ServiceResult<Key[]>> { const cacheKey = CacheKeys.service('keyvault', 'keys', vaultName); return this.cachedExecute(cacheKey, async () => { const result = await this.execute('key list', { 'vault-name': vaultName }); return this.toResult<Key[]>(result); }); } async getKey(vaultName: string, keyName: string): Promise<ServiceResult> { const result = await this.execute('key show', { 'vault-name': vaultName, 'name': keyName }); return this.toResult(result); } async createKey(vaultName: string, keyName: string, keyType: string = 'RSA'): Promise<ServiceResult> { const result = await this.execute('key create', { 'vault-name': vaultName, 'name': keyName, 'kty': keyType }); return this.toResult(result); } async listSecrets(vaultName: string): Promise<ServiceResult<Secret[]>> { const cacheKey = CacheKeys.service('keyvault', 'secrets', vaultName); return this.cachedExecute(cacheKey, async () => { const result = await this.execute('secret list', { 'vault-name': vaultName }); return this.toResult<Secret[]>(result); }); } async getSecret(vaultName: string, secretName: string): Promise<ServiceResult> { const result = await this.execute('secret show', { 'vault-name': vaultName, 'name': secretName }); return this.toResult(result); } async listCertificates(vaultName: string): Promise<ServiceResult> { const cacheKey = CacheKeys.service('keyvault', 'certs', vaultName); return this.cachedExecute(cacheKey, async () => { const result = await this.execute('certificate list', { 'vault-name': vaultName }); return this.toResult(result); }); } }

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/vedantparmar12/Azure-_MCP'

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