alibabacloud-devops-mcp-server
Version:
MCP Server for using the alibabacloud-devops API: allows AI assistants to directly participate in development collaboration, helping teams optimize development processes and improve efficiency.
101 lines (100 loc) • 4.26 kB
JavaScript
import { z } from "zod";
import { yunxiaoRequest } from "../../common/utils.js";
import { EffortRecordSchema, EstimatedEffortSchema, IdentifierDTOSchema, ListCurrentUserEffortRecordsSchema, ListEffortRecordsSchema, CreateEffortRecordRequestSchema, ListEstimatedEffortsSchema, CreateEstimatedEffortRequestSchema } from "./types.js";
// List current user effort records
export async function listCurrentUserEffortRecords(params) {
const validatedParams = ListCurrentUserEffortRecordsSchema.parse(params);
const url = `/oapi/v1/projex/organizations/${validatedParams.organizationId}/effortRecords`;
const queryParams = {
startDate: validatedParams.startDate,
endDate: validatedParams.endDate
};
const response = await yunxiaoRequest(`${url}?startDate=${queryParams.startDate}&endDate=${queryParams.endDate}`, {
method: "GET"
});
return z.array(EffortRecordSchema).parse(response);
}
// List effort records
export async function listEffortRecords(params) {
const validatedParams = ListEffortRecordsSchema.parse(params);
const url = `/oapi/v1/projex/organizations/${validatedParams.organizationId}/workitems/${validatedParams.id}/effortRecords`;
const response = await yunxiaoRequest(url, {
method: "GET"
});
return z.array(EffortRecordSchema).parse(response);
}
// Create effort record
export async function createEffortRecord(params) {
const validatedParams = CreateEffortRecordRequestSchema.parse({
actualTime: params.actualTime,
description: params.description,
gmtEnd: params.gmtEnd,
gmtStart: params.gmtStart,
operatorId: params.operatorId,
workType: params.workType
});
const url = `/oapi/v1/projex/organizations/${params.organizationId}/workitems/${params.id}/effortRecords`;
const response = await yunxiaoRequest(url, {
method: "POST",
body: validatedParams
});
return IdentifierDTOSchema.parse(response);
}
// List estimated efforts
export async function listEstimatedEfforts(params) {
const validatedParams = ListEstimatedEffortsSchema.parse(params);
const url = `/oapi/v1/projex/organizations/${validatedParams.organizationId}/workitems/${validatedParams.id}/estimatedEfforts`;
const response = await yunxiaoRequest(url, {
method: "GET"
});
return z.array(EstimatedEffortSchema).parse(response);
}
// Create estimated effort
export async function createEstimatedEffort(params) {
const validatedParams = CreateEstimatedEffortRequestSchema.parse({
description: params.description,
operatorId: params.operatorId,
owner: params.owner,
spentTime: params.spentTime,
workType: params.workType
});
const url = `/oapi/v1/projex/organizations/${params.organizationId}/workitems/${params.id}/estimatedEfforts`;
const response = await yunxiaoRequest(url, {
method: "POST",
body: validatedParams
});
return IdentifierDTOSchema.parse(response);
}
// Update effort record
export async function updateEffortRecord(params) {
const validatedParams = CreateEffortRecordRequestSchema.parse({
actualTime: params.actualTime,
description: params.description,
gmtEnd: params.gmtEnd,
gmtStart: params.gmtStart,
operatorId: params.operatorId,
workType: params.workType
});
const url = `/oapi/v1/projex/organizations/${params.organizationId}/workitems/${params.workitemId}/effortRecords/${params.id}`;
const response = await yunxiaoRequest(url, {
method: "PUT",
body: validatedParams
});
return response;
}
// Update estimated effort
export async function updateEstimatedEffort(params) {
const validatedParams = CreateEstimatedEffortRequestSchema.parse({
description: params.description,
operatorId: params.operatorId,
owner: params.owner,
spentTime: params.spentTime,
workType: params.workType
});
const url = `/oapi/v1/projex/organizations/${params.organizationId}/workitems/${params.workitemId}/estimatedEfforts/${params.id}`;
const response = await yunxiaoRequest(url, {
method: "PUT",
body: validatedParams
});
return response;
}