Skip to main content
Glama
yjiace

AlibabaCloud DevOps MCP Server

by yjiace
appTemplates.ts4.12 kB
import { z } from 'zod'; import { yunxiaoRequest, buildUrl } from '../../common/utils.js'; // Schema for the SearchAppTemplates API export const SearchAppTemplatesRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), pagination: z.enum(['keyset']).optional().default('keyset').describe("分页模式参数,目前只支持键集分页 keyset 模式"), perPage: z.number().optional().describe("分页尺寸参数,决定一页最多返回多少对象"), orderBy: z.enum(['id', 'gmtCreate']).optional().default('id').describe("分页排序属性,决定根据何种属性进行记录排序;推荐在实现严格遍历时,使用 id 属性"), sort: z.enum(['asc', 'desc']).optional().default('asc').describe("分页排序升降序,asc 为升序,desc 为降序;推荐在实现严格遍历时,使用升序"), nextToken: z.string().optional().describe("键集分页 token,获取第一页数据时无需传入,否则需要传入前一页查询结果中的 nextToken 字段"), displayNameKeyword: z.string().optional().describe("按展示名进行模糊搜索的关键字"), page: z.number().optional().default(1).describe("页码分页时使用,用于获取下一页内容"), }); export const SearchAppTemplatesResponseSchema = z.object({ current: z.number().optional().nullable().describe("页码分页时存在该字段,表示当前页"), data: z.array(z.object({ cover: z.string().nullable().optional().describe("应用模板封面"), creatorId: z.string().nullable().optional().describe("应用模板创建人"), description: z.string().nullable().optional().describe("应用模板描述"), displayName: z.string().nullable().optional().describe("应用模板展示名称"), gmtCreate: z.string().nullable().optional().describe("应用模板创建时间"), gmtModified: z.string().nullable().optional().describe("应用模板修改时间"), modifierId: z.string().nullable().optional().describe("应用模板修改人"), name: z.string().nullable().optional().describe("应用模板名称"), type: z.enum(['CUSTOMIZE', 'PRESET']).nullable().optional().describe("应用模板类型"), })).describe("分页结果数据"), nextToken: z.string().nullable().optional().describe("采用键值分页时存在该字段,用于传给分页接口,迭代获取下一页数据"), pages: z.number().nullable().optional().describe("页码分页时存在该字段,表示总页数"), perPage: z.number().nullable().optional().describe("页码分页时存在该字段,表示每页大小"), total: z.number().nullable().optional().describe("页码分页时存在该字段,表示结果总数"), }); export type SearchAppTemplatesRequest = z.infer<typeof SearchAppTemplatesRequestSchema>; export type SearchAppTemplatesResponse = z.infer<typeof SearchAppTemplatesResponseSchema>; /** * Search application templates * * @param params - The request parameters * @returns The list of application templates */ export async function searchAppTemplates(params: SearchAppTemplatesRequest): Promise<SearchAppTemplatesResponse> { const { organizationId, ...queryParams } = params; // Build query string properly const query: Record<string, string | number> = {}; if (queryParams.pagination) query.pagination = queryParams.pagination; if (queryParams.perPage) query.perPage = queryParams.perPage; if (queryParams.orderBy) query.orderBy = queryParams.orderBy; if (queryParams.sort) query.sort = queryParams.sort; if (queryParams.nextToken) query.nextToken = queryParams.nextToken; if (queryParams.displayNameKeyword) query.displayNameKeyword = queryParams.displayNameKeyword; if (queryParams.page) query.page = queryParams.page; try { // Build the full URL with query parameters const url = buildUrl(`/oapi/v1/appstack/organizations/${organizationId}/appTemplates:search`, query); const response = await yunxiaoRequest( url, { method: 'GET', } ); return SearchAppTemplatesResponseSchema.parse(response); } catch (error) { throw error; } }

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/yjiace/alibabacloud-devops-mcp-server'

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