@clicktime/mcp-server
Version:
ClickTime MCP Tech Demo for AI agents to interact with ClickTime API
131 lines (130 loc) • 2.74 kB
TypeScript
export interface ClickTimeConfig {
apiToken: string;
baseUrl: string;
readOnly?: boolean;
}
export interface TimeEntry {
ID?: string;
Date: string;
Hours: number;
JobID: string;
TaskID: string;
Comment?: string;
UserID?: string;
Job?: {
ID: string;
Name: string;
Client?: {
Name: string;
};
};
Task?: {
ID: string;
Name: string;
};
}
export interface TimeOffRequest {
ID?: string;
TimeOffTypeID: string;
Notes?: string;
Dates: string[] | {
Date: string;
Hours: number;
}[];
Status?: string;
StartDate?: string;
EndDate?: string;
Actions?: any[];
ApprovalByUser?: User;
ApprovalByUserID?: string;
CreatedDate?: string;
History?: {
ActionByUserID: string;
ActionByUserName: string;
Comment?: string;
Date: string;
LegacyID?: string;
Status: string;
}[];
LegacyID?: string;
RequestedByUser?: User;
RequestedByUserID?: string;
TimeOffType?: TimeOffType;
}
export interface TimeOff {
ID?: string;
Date: string;
Hours: number;
TimeOffTypeID: string;
Notes?: string;
DCAAExplanation?: string;
TimeOffRequestID?: string;
}
export interface Job {
ID: string;
Name: string;
Client?: {
ID: string;
Name: string;
};
IsActive: boolean;
Description?: string;
}
export interface Task {
ID: string;
Name: string;
IsActive: boolean;
Description?: string;
}
export interface TimeOffType {
ID: string;
Name: string;
CurrentBalance?: number;
AccrualRate?: number;
Unit?: string;
RequiresApproval?: boolean;
}
export interface User {
ID: string;
FirstName: string;
LastName: string;
Email: string;
IsActive: boolean;
Name?: string;
}
export interface ClickTimeAPIResponse<T = any> {
data: T;
success: boolean;
message?: string;
errors?: string[];
}
export interface TimeEntryParams {
StartDate?: string;
EndDate?: string;
JobID?: string;
TaskID?: string;
limit?: number;
}
export interface CreateTimeEntryData {
Date: string;
Hours: number;
JobID: string;
TaskID: string;
Comment?: string;
}
export interface Timesheet {
ID: string;
StartDate: string;
EndDate: string;
Status: 'Open' | 'Submitted' | 'Approved' | 'Rejected' | 'Locked';
HasBeenSubmitted: boolean;
SubmittedDate?: string;
SubmittedBy?: string;
Title?: string;
}
export interface SubmissionActionRequest {
Action: 'Submit' | 'UndoSubmit';
Comment?: string;
CCNotifications?: string[];
HasAttestation?: boolean;
}