Skip to main content
Glama
utils.ts3.53 kB
import { Issue } from './issues.types'; export function formatIssue(issue: Issue) { const issueFields = issue.fields; const issueType = issueFields?.issuetype; const issueProject = issueFields?.project; const issueTimeTracking = issueFields?.timetracking; return [ `========== Issue ${issue.key} ==========`, `Id: ${issue.id}`, `Key: ${issue.key}`, `Status Category Change Date: ${issueFields?.statuscategorychangedate}`, `Issue Type: ${issueType?.name}`, `Subtask: ${issueType?.subtask}`, `Components: ${issueFields?.components.map((component) => component) || []}`, `Time Spent: ${issueFields?.timespent}`, `Time Original Estimate: ${issueFields?.timeoriginalestimate}`, `Project: ${issueProject?.name}`, `Project Id: ${issueProject?.id}`, `Project Key: ${issueProject?.key}`, `Description: ${JSON.stringify(issueFields?.description?.content)}`, `Fix Versions: ${issueFields?.fixVersions?.map((fixVersion) => fixVersion) || []}`, `Aggregate Time Spent: ${issueFields?.aggregatetimespent}`, `Status Category: ${issueFields?.statusCategory.name}`, `Resolution: ${issueFields?.resolution?.description}`, `Resolution Date: ${issueFields?.resolutiondate}`, `Time Tracking - Original Estimate: ${issueTimeTracking?.originalEstimate}`, `Time Tracking - Original Estimate in Seconds: ${issueTimeTracking?.originalEstimateSeconds}`, `Time Tracking - Remaining Estimate: ${issueTimeTracking?.remainingEstimate}`, `Time Tracking - Remaining Estimate in Seconds: ${issueTimeTracking?.remainingEstimateSeconds}`, `Time Tracking - Time Spent: ${issueTimeTracking?.timeSpent}`, `Time Tracking - Time Spent in Seconds: ${issueTimeTracking?.timeSpentSeconds}`, // attachment: any[]; `Aggregate Time Estimate: ${issueFields?.aggregatetimeestimate}`, `Work Ratio: ${issueFields?.workratio}`, `Summary: ${issueFields?.summary}`, // issueRestriction: IssueRestriction; `Last Viewed Date: ${issueFields?.lastViewed}`, // watches: Watches; `Creator Name: ${issueFields?.creator.displayName}`, `Creator Email: ${issueFields?.creator.emailAddress}`, `Subtasks: ${issueFields?.subtasks?.map((subtask) => subtask) || []}`, `Created Date: ${issueFields?.created}`, `Reporter Name: ${issueFields?.reporter.displayName}`, `Reporter Email: ${issueFields?.reporter.emailAddress}`, `Progress: ${issueFields?.progress.progress}`, `Progress Total: ${issueFields?.progress.total}`, `Priority: ${issueFields?.priority.name}`, `Labels: ${issueFields?.labels.map((label) => label) || []}`, `Environment: ${issueFields?.environment}`, `Time Estimate: ${issueFields?.timeestimate}`, `Aggreate Time Original Estimate: ${issueFields?.aggregatetimeoriginalestimate}`, `Versions: ${issueFields?.versions?.map((version) => version) || []}`, `Due Date: ${issueFields?.duedate}`, `Votes: ${issueFields?.votes.votes}`, `Has Voted: ${issueFields?.votes.hasVoted}`, `Comments: ${issueFields?.comment.comments?.map((comment) => comment) || []}`, `Issue Links: ${issueFields?.issuelinks?.map((issuelink) => issuelink) || []}`, `Work Log: ${issueFields?.worklog?.worklogs?.map((worklog) => worklog) || []}`, `Assignee Name: ${issueFields?.assignee?.displayName || 'Unassigned'}`, `Assignee Email: ${issueFields?.assignee?.emailAddress || 'Unassigned'}`, `Updated Date: ${issueFields?.updated}`, `Status: ${issueFields?.status.name}`, ].join('\n'); }

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/brianstone/jira-mcp-server'

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