1"""An item in the timeline of events"""
 2interface TimelineItem {
 3    """The identifier of the source operation"""
 4    id: CombinedId!
 5}
 6
 7"""CommentHistoryStep hold one version of a message in the history"""
 8type CommentHistoryStep {
 9    message: String!
10    date: Time!
11}
12
13# Connection
14
15"""The connection type for TimelineItem"""
16type TimelineItemConnection {
17    edges: [TimelineItemEdge!]!
18    nodes: [TimelineItem!]!
19    pageInfo: PageInfo!
20    totalCount: Int!
21}
22
23"""Represent a TimelineItem"""
24type TimelineItemEdge {
25    cursor: String!
26    node: TimelineItem!
27}
28
29# Items
30
31"""CreateTimelineItem is a TimelineItem that represent the creation of a bug and its message edition history"""
32type CreateTimelineItem implements TimelineItem & Authored {
33    """The identifier of the source operation"""
34    id: CombinedId!
35    author: Identity!
36    message: String!
37    messageIsEmpty: Boolean!
38    files: [Hash!]!
39    createdAt: Time!
40    lastEdit: Time!
41    edited: Boolean!
42    history: [CommentHistoryStep!]!
43}
44
45"""AddCommentTimelineItem is a TimelineItem that represent a Comment and its edition history"""
46type AddCommentTimelineItem implements TimelineItem & Authored {
47    """The identifier of the source operation"""
48    id: CombinedId!
49    author: Identity!
50    message: String!
51    messageIsEmpty: Boolean!
52    files: [Hash!]!
53    createdAt: Time!
54    lastEdit: Time!
55    edited: Boolean!
56    history: [CommentHistoryStep!]!
57}
58
59"""LabelChangeTimelineItem is a TimelineItem that represent a change in the labels of a bug"""
60type LabelChangeTimelineItem implements TimelineItem & Authored {
61    """The identifier of the source operation"""
62    id: CombinedId!
63    author: Identity!
64    date: Time!
65    added: [Label!]!
66    removed: [Label!]!
67}
68
69"""SetStatusTimelineItem is a TimelineItem that represent a change in the status of a bug"""
70type SetStatusTimelineItem implements TimelineItem & Authored {
71    """The identifier of the source operation"""
72    id: CombinedId!
73    author: Identity!
74    date: Time!
75    status: Status!
76}
77
78"""LabelChangeTimelineItem is a TimelineItem that represent a change in the title of a bug"""
79type SetTitleTimelineItem implements TimelineItem & Authored {
80    """The identifier of the source operation"""
81    id: CombinedId!
82    author: Identity!
83    date: Time!
84    title: String!
85    was: String!
86}