@@ -201,28 +201,45 @@ type MinimalReactions struct {
201201 Eyes int `json:"eyes"`
202202}
203203
204+ // MinimalIssueFieldValueSingleSelectOption is the trimmed output type for a single-select option of an issue field value.
205+ type MinimalIssueFieldValueSingleSelectOption struct {
206+ ID int64 `json:"id"`
207+ Name string `json:"name"`
208+ Color string `json:"color"`
209+ }
210+
211+ // MinimalIssueFieldValue is the trimmed output type for a custom field value attached to an issue.
212+ type MinimalIssueFieldValue struct {
213+ IssueFieldID int64 `json:"issue_field_id"`
214+ NodeID string `json:"node_id"`
215+ DataType string `json:"data_type"`
216+ Value any `json:"value"`
217+ SingleSelectOption * MinimalIssueFieldValueSingleSelectOption `json:"single_select_option,omitempty"`
218+ }
219+
204220// MinimalIssue is the trimmed output type for issue objects to reduce verbosity.
205221type MinimalIssue struct {
206- Number int `json:"number"`
207- Title string `json:"title"`
208- Body string `json:"body,omitempty"`
209- State string `json:"state"`
210- StateReason string `json:"state_reason,omitempty"`
211- Draft bool `json:"draft,omitempty"`
212- Locked bool `json:"locked,omitempty"`
213- HTMLURL string `json:"html_url,omitempty"`
214- User * MinimalUser `json:"user,omitempty"`
215- AuthorAssociation string `json:"author_association,omitempty"`
216- Labels []string `json:"labels,omitempty"`
217- Assignees []string `json:"assignees,omitempty"`
218- Milestone string `json:"milestone,omitempty"`
219- Comments int `json:"comments,omitempty"`
220- Reactions * MinimalReactions `json:"reactions,omitempty"`
221- CreatedAt string `json:"created_at,omitempty"`
222- UpdatedAt string `json:"updated_at,omitempty"`
223- ClosedAt string `json:"closed_at,omitempty"`
224- ClosedBy string `json:"closed_by,omitempty"`
225- IssueType string `json:"issue_type,omitempty"`
222+ Number int `json:"number"`
223+ Title string `json:"title"`
224+ Body string `json:"body,omitempty"`
225+ State string `json:"state"`
226+ StateReason string `json:"state_reason,omitempty"`
227+ Draft bool `json:"draft,omitempty"`
228+ Locked bool `json:"locked,omitempty"`
229+ HTMLURL string `json:"html_url,omitempty"`
230+ User * MinimalUser `json:"user,omitempty"`
231+ AuthorAssociation string `json:"author_association,omitempty"`
232+ Labels []string `json:"labels,omitempty"`
233+ Assignees []string `json:"assignees,omitempty"`
234+ Milestone string `json:"milestone,omitempty"`
235+ Comments int `json:"comments,omitempty"`
236+ Reactions * MinimalReactions `json:"reactions,omitempty"`
237+ CreatedAt string `json:"created_at,omitempty"`
238+ UpdatedAt string `json:"updated_at,omitempty"`
239+ ClosedAt string `json:"closed_at,omitempty"`
240+ ClosedBy string `json:"closed_by,omitempty"`
241+ IssueType string `json:"issue_type,omitempty"`
242+ IssueFieldValues []MinimalIssueFieldValue `json:"issue_field_values,omitempty"`
226243}
227244
228245// MinimalIssuesResponse is the trimmed output for a paginated list of issues.
@@ -400,6 +417,26 @@ func convertToMinimalIssue(issue *github.Issue) MinimalIssue {
400417 m .IssueType = issueType .GetName ()
401418 }
402419
420+ for _ , fv := range issue .IssueFieldValues {
421+ if fv == nil {
422+ continue
423+ }
424+ mfv := MinimalIssueFieldValue {
425+ IssueFieldID : fv .IssueFieldID ,
426+ NodeID : fv .NodeID ,
427+ DataType : fv .DataType ,
428+ Value : fv .Value ,
429+ }
430+ if opt := fv .SingleSelectOption ; opt != nil {
431+ mfv .SingleSelectOption = & MinimalIssueFieldValueSingleSelectOption {
432+ ID : opt .ID ,
433+ Name : opt .Name ,
434+ Color : opt .Color ,
435+ }
436+ }
437+ m .IssueFieldValues = append (m .IssueFieldValues , mfv )
438+ }
439+
403440 if r := issue .Reactions ; r != nil {
404441 m .Reactions = & MinimalReactions {
405442 TotalCount : r .GetTotalCount (),
0 commit comments