Skip to main content
Glama
validation.ts4.23 kB
import { z } from 'zod'; export const createTestPlanSchema = z.object({ name: z.string().min(1, 'Name is required'), description: z.string().optional(), projectKey: z.string().min(1, 'Project key is required'), startDate: z.string().optional(), endDate: z.string().optional(), }); export const createTestCycleSchema = z.object({ name: z.string().min(1, 'Name is required'), description: z.string().optional(), projectKey: z.string().min(1, 'Project key is required'), versionId: z.string().min(1, 'Version ID is required'), environment: z.string().optional(), startDate: z.string().optional(), endDate: z.string().optional(), }); export const readJiraIssueSchema = z.object({ issueKey: z.string().min(1, 'Issue key is required'), fields: z.array(z.string()).optional(), }); export const listTestPlansSchema = z.object({ projectKey: z.string().min(1, 'Project key is required'), limit: z.number().min(1).max(100).default(50), offset: z.number().min(0).default(0), }); export const listTestCyclesSchema = z.object({ projectKey: z.string().min(1, 'Project key is required'), versionId: z.string().optional(), limit: z.number().min(1).max(100).default(50), }); export const executeTestSchema = z.object({ executionId: z.string().min(1, 'Execution ID is required'), status: z.enum(['PASS', 'FAIL', 'WIP', 'BLOCKED']), comment: z.string().optional(), defects: z.array(z.string()).optional(), }); export const getTestExecutionStatusSchema = z.object({ cycleId: z.string().min(1, 'Cycle ID is required'), }); export const linkTestsToIssuesSchema = z.object({ testCaseId: z.string().min(1, 'Test case ID is required'), issueKeys: z.array(z.string().min(1)).min(1, 'At least one issue key is required'), }); export const generateTestReportSchema = z.object({ cycleId: z.string().min(1, 'Cycle ID is required'), format: z.enum(['JSON', 'HTML']).default('JSON'), }); export const createTestCaseSchema = z.object({ projectKey: z.string().min(1, 'Project key is required'), name: z.string().min(1, 'Name is required'), objective: z.string().optional(), precondition: z.string().optional(), estimatedTime: z.number().min(0).optional(), priority: z.string().optional(), status: z.string().optional(), folderId: z.string().optional(), labels: z.array(z.string()).optional(), componentId: z.string().optional(), customFields: z.record(z.any()).optional(), testScript: z.object({ type: z.enum(['STEP_BY_STEP', 'PLAIN_TEXT']), steps: z.array(z.object({ index: z.number().min(1), description: z.string().min(1), testData: z.string().optional(), expectedResult: z.string().min(1), })).optional(), text: z.string().optional(), }).optional(), }); export const searchTestCasesSchema = z.object({ projectKey: z.string().min(1, 'Project key is required'), query: z.string().optional(), limit: z.number().min(1).max(100).default(50), }); export const getTestCaseSchema = z.object({ testCaseId: z.string().min(1, 'Test case ID is required'), }); export const createMultipleTestCasesSchema = z.object({ testCases: z.array(createTestCaseSchema).min(1, 'At least one test case is required'), continueOnError: z.boolean().default(true), }); export type CreateTestPlanInput = z.infer<typeof createTestPlanSchema>; export type CreateTestCycleInput = z.infer<typeof createTestCycleSchema>; export type ReadJiraIssueInput = z.infer<typeof readJiraIssueSchema>; export type ListTestPlansInput = z.infer<typeof listTestPlansSchema>; export type ListTestCyclesInput = z.infer<typeof listTestCyclesSchema>; export type ExecuteTestInput = z.infer<typeof executeTestSchema>; export type GetTestExecutionStatusInput = z.infer<typeof getTestExecutionStatusSchema>; export type LinkTestsToIssuesInput = z.infer<typeof linkTestsToIssuesSchema>; export type GenerateTestReportInput = z.infer<typeof generateTestReportSchema>; export type CreateTestCaseInput = z.infer<typeof createTestCaseSchema>; export type SearchTestCasesInput = z.infer<typeof searchTestCasesSchema>; export type GetTestCaseInput = z.infer<typeof getTestCaseSchema>; export type CreateMultipleTestCasesInput = z.infer<typeof createMultipleTestCasesSchema>;

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/leorosignoli/jira-zephyr-mcp'

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