main 81ede3b

issue.pb.go RawHistoryFolder

1// SPDX-License-Identifier: MIT
2
3// Code generated by protoc-gen-go. DO NOT EDIT.
4// versions:
5// 	protoc-gen-go v1.36.12
6// 	protoc        (unknown)
7// source: ermite/issue.proto
8
9package ermite
10
11import (
12	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
13	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
14	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
15	reflect "reflect"
16	sync "sync"
17	unsafe "unsafe"
18)
19
20const (
21	// Verify that this generated code is sufficiently up-to-date.
22	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
23	// Verify that runtime/protoimpl is sufficiently up-to-date.
24	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
25)
26
27// IssueState is where an issue is in its life.
28type IssueState int32
29
30const (
31	// Not set. In ListIssuesRequest.state it means every state. Never returned
32	// by the server.
33	IssueState_ISSUE_STATE_UNSPECIFIED IssueState = 0
34	// The issue is open.
35	IssueState_ISSUE_STATE_OPEN IssueState = 1
36	// The issue is closed without being resolved (won't fix, duplicate, ...).
37	IssueState_ISSUE_STATE_CLOSED IssueState = 2
38	// Reserved for later use: awaiting moderation, owner-only.
39	IssueState_ISSUE_STATE_PENDING IssueState = 3
40	// The issue was fixed: by the merge of a merge request with a closing
41	// reference, or by hand (ResolveIssue). CLOSED means closed without being
42	// resolved.
43	IssueState_ISSUE_STATE_RESOLVED IssueState = 4
44)
45
46// Enum value maps for IssueState.
47var (
48	IssueState_name = map[int32]string{
49		0: "ISSUE_STATE_UNSPECIFIED",
50		1: "ISSUE_STATE_OPEN",
51		2: "ISSUE_STATE_CLOSED",
52		3: "ISSUE_STATE_PENDING",
53		4: "ISSUE_STATE_RESOLVED",
54	}
55	IssueState_value = map[string]int32{
56		"ISSUE_STATE_UNSPECIFIED": 0,
57		"ISSUE_STATE_OPEN":        1,
58		"ISSUE_STATE_CLOSED":      2,
59		"ISSUE_STATE_PENDING":     3,
60		"ISSUE_STATE_RESOLVED":    4,
61	}
62)
63
64func (x IssueState) Enum() *IssueState {
65	p := new(IssueState)
66	*p = x
67	return p
68}
69
70func (x IssueState) String() string {
71	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
72}
73
74func (IssueState) Descriptor() protoreflect.EnumDescriptor {
75	return file_ermite_issue_proto_enumTypes[0].Descriptor()
76}
77
78func (IssueState) Type() protoreflect.EnumType {
79	return &file_ermite_issue_proto_enumTypes[0]
80}
81
82func (x IssueState) Number() protoreflect.EnumNumber {
83	return protoreflect.EnumNumber(x)
84}
85
86// Deprecated: Use IssueState.Descriptor instead.
87func (IssueState) EnumDescriptor() ([]byte, []int) {
88	return file_ermite_issue_proto_rawDescGZIP(), []int{0}
89}
90
91// Issue is a discussion in a repository.
92type Issue struct {
93	state protoimpl.MessageState `protogen:"open.v1"`
94	// Repo is the name of the repository.
95	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
96	// Number identifies the issue within its repository.
97	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
98	// Title is the one-line title.
99	Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
100	// Body is the content of the issue. It may be empty.
101	Body string `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"`
102	// State is where the issue is in its life.
103	State IssueState `protobuf:"varint,5,opt,name=state,proto3,enum=ermite.IssueState" json:"state,omitempty"`
104	// Author names who created the issue: the label of the token or session
105	// that was used ("root" for the root token, "owner" for a web session), or,
106	// for an issue approved from the public form, the unverified display name
107	// the visitor typed (or "anonymous"). It is informational and never proves
108	// identity: labels are not unique, the token may be gone, and a visitor can
109	// type "owner".
110	Author string `protobuf:"bytes,6,opt,name=author,proto3" json:"author,omitempty"`
111	// CreatedAt is when the issue was created.
112	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
113	// UpdatedAt is when the issue last changed.
114	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
115	// CommentCount is the number of comments on the issue.
116	CommentCount int32 `protobuf:"varint,9,opt,name=comment_count,json=commentCount,proto3" json:"comment_count,omitempty"`
117	// ClosedByMergeRequest is the number of the merge request whose merge
118	// resolved the issue (a closing reference such as "Fixes #N"); 0 when the
119	// issue was resolved by hand, is closed, or is open. Reset when the issue is
120	// reopened.
121	ClosedByMergeRequest int64 `protobuf:"varint,10,opt,name=closed_by_merge_request,json=closedByMergeRequest,proto3" json:"closed_by_merge_request,omitempty"`
122	unknownFields        protoimpl.UnknownFields
123	sizeCache            protoimpl.SizeCache
124}
125
126func (x *Issue) Reset() {
127	*x = Issue{}
128	mi := &file_ermite_issue_proto_msgTypes[0]
129	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
130	ms.StoreMessageInfo(mi)
131}
132
133func (x *Issue) String() string {
134	return protoimpl.X.MessageStringOf(x)
135}
136
137func (*Issue) ProtoMessage() {}
138
139func (x *Issue) ProtoReflect() protoreflect.Message {
140	mi := &file_ermite_issue_proto_msgTypes[0]
141	if x != nil {
142		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
143		if ms.LoadMessageInfo() == nil {
144			ms.StoreMessageInfo(mi)
145		}
146		return ms
147	}
148	return mi.MessageOf(x)
149}
150
151// Deprecated: Use Issue.ProtoReflect.Descriptor instead.
152func (*Issue) Descriptor() ([]byte, []int) {
153	return file_ermite_issue_proto_rawDescGZIP(), []int{0}
154}
155
156func (x *Issue) GetRepo() string {
157	if x != nil {
158		return x.Repo
159	}
160	return ""
161}
162
163func (x *Issue) GetNumber() int64 {
164	if x != nil {
165		return x.Number
166	}
167	return 0
168}
169
170func (x *Issue) GetTitle() string {
171	if x != nil {
172		return x.Title
173	}
174	return ""
175}
176
177func (x *Issue) GetBody() string {
178	if x != nil {
179		return x.Body
180	}
181	return ""
182}
183
184func (x *Issue) GetState() IssueState {
185	if x != nil {
186		return x.State
187	}
188	return IssueState_ISSUE_STATE_UNSPECIFIED
189}
190
191func (x *Issue) GetAuthor() string {
192	if x != nil {
193		return x.Author
194	}
195	return ""
196}
197
198func (x *Issue) GetCreatedAt() *timestamppb.Timestamp {
199	if x != nil {
200		return x.CreatedAt
201	}
202	return nil
203}
204
205func (x *Issue) GetUpdatedAt() *timestamppb.Timestamp {
206	if x != nil {
207		return x.UpdatedAt
208	}
209	return nil
210}
211
212func (x *Issue) GetCommentCount() int32 {
213	if x != nil {
214		return x.CommentCount
215	}
216	return 0
217}
218
219func (x *Issue) GetClosedByMergeRequest() int64 {
220	if x != nil {
221		return x.ClosedByMergeRequest
222	}
223	return 0
224}
225
226// IssueReference is a merge request of the same repository that names the
227// issue ("#N") in its title, description, notes or commit messages.
228type IssueReference struct {
229	state protoimpl.MessageState `protogen:"open.v1"`
230	// Number is the number of the merge request.
231	Number int64 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
232	// Title is the title of the merge request.
233	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
234	// State is where the merge request is in its life.
235	State MergeRequestState `protobuf:"varint,3,opt,name=state,proto3,enum=ermite.MergeRequestState" json:"state,omitempty"`
236	// Closes says that a closing reference ("Fixes #N") names the issue:
237	// merging the request closes it.
238	Closes        bool `protobuf:"varint,4,opt,name=closes,proto3" json:"closes,omitempty"`
239	unknownFields protoimpl.UnknownFields
240	sizeCache     protoimpl.SizeCache
241}
242
243func (x *IssueReference) Reset() {
244	*x = IssueReference{}
245	mi := &file_ermite_issue_proto_msgTypes[1]
246	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
247	ms.StoreMessageInfo(mi)
248}
249
250func (x *IssueReference) String() string {
251	return protoimpl.X.MessageStringOf(x)
252}
253
254func (*IssueReference) ProtoMessage() {}
255
256func (x *IssueReference) ProtoReflect() protoreflect.Message {
257	mi := &file_ermite_issue_proto_msgTypes[1]
258	if x != nil {
259		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
260		if ms.LoadMessageInfo() == nil {
261			ms.StoreMessageInfo(mi)
262		}
263		return ms
264	}
265	return mi.MessageOf(x)
266}
267
268// Deprecated: Use IssueReference.ProtoReflect.Descriptor instead.
269func (*IssueReference) Descriptor() ([]byte, []int) {
270	return file_ermite_issue_proto_rawDescGZIP(), []int{1}
271}
272
273func (x *IssueReference) GetNumber() int64 {
274	if x != nil {
275		return x.Number
276	}
277	return 0
278}
279
280func (x *IssueReference) GetTitle() string {
281	if x != nil {
282		return x.Title
283	}
284	return ""
285}
286
287func (x *IssueReference) GetState() MergeRequestState {
288	if x != nil {
289		return x.State
290	}
291	return MergeRequestState_MERGE_REQUEST_STATE_UNSPECIFIED
292}
293
294func (x *IssueReference) GetCloses() bool {
295	if x != nil {
296		return x.Closes
297	}
298	return false
299}
300
301// IssueComment is a note on an issue.
302type IssueComment struct {
303	state protoimpl.MessageState `protogen:"open.v1"`
304	// Id identifies the comment within its issue. Opaque.
305	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
306	// Author names who wrote the comment, like Issue.author.
307	Author string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"`
308	// Text is the content of the comment.
309	Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
310	// CreatedAt is when the comment was written.
311	CreatedAt     *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
312	unknownFields protoimpl.UnknownFields
313	sizeCache     protoimpl.SizeCache
314}
315
316func (x *IssueComment) Reset() {
317	*x = IssueComment{}
318	mi := &file_ermite_issue_proto_msgTypes[2]
319	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
320	ms.StoreMessageInfo(mi)
321}
322
323func (x *IssueComment) String() string {
324	return protoimpl.X.MessageStringOf(x)
325}
326
327func (*IssueComment) ProtoMessage() {}
328
329func (x *IssueComment) ProtoReflect() protoreflect.Message {
330	mi := &file_ermite_issue_proto_msgTypes[2]
331	if x != nil {
332		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
333		if ms.LoadMessageInfo() == nil {
334			ms.StoreMessageInfo(mi)
335		}
336		return ms
337	}
338	return mi.MessageOf(x)
339}
340
341// Deprecated: Use IssueComment.ProtoReflect.Descriptor instead.
342func (*IssueComment) Descriptor() ([]byte, []int) {
343	return file_ermite_issue_proto_rawDescGZIP(), []int{2}
344}
345
346func (x *IssueComment) GetId() string {
347	if x != nil {
348		return x.Id
349	}
350	return ""
351}
352
353func (x *IssueComment) GetAuthor() string {
354	if x != nil {
355		return x.Author
356	}
357	return ""
358}
359
360func (x *IssueComment) GetText() string {
361	if x != nil {
362		return x.Text
363	}
364	return ""
365}
366
367func (x *IssueComment) GetCreatedAt() *timestamppb.Timestamp {
368	if x != nil {
369		return x.CreatedAt
370	}
371	return nil
372}
373
374// CreateIssueRequest describes the issue to open.
375type CreateIssueRequest struct {
376	state protoimpl.MessageState `protogen:"open.v1"`
377	// Repo is the repository name.
378	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
379	// Title is the one-line title. Required.
380	Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
381	// Body is the optional content.
382	Body          string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
383	unknownFields protoimpl.UnknownFields
384	sizeCache     protoimpl.SizeCache
385}
386
387func (x *CreateIssueRequest) Reset() {
388	*x = CreateIssueRequest{}
389	mi := &file_ermite_issue_proto_msgTypes[3]
390	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
391	ms.StoreMessageInfo(mi)
392}
393
394func (x *CreateIssueRequest) String() string {
395	return protoimpl.X.MessageStringOf(x)
396}
397
398func (*CreateIssueRequest) ProtoMessage() {}
399
400func (x *CreateIssueRequest) ProtoReflect() protoreflect.Message {
401	mi := &file_ermite_issue_proto_msgTypes[3]
402	if x != nil {
403		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
404		if ms.LoadMessageInfo() == nil {
405			ms.StoreMessageInfo(mi)
406		}
407		return ms
408	}
409	return mi.MessageOf(x)
410}
411
412// Deprecated: Use CreateIssueRequest.ProtoReflect.Descriptor instead.
413func (*CreateIssueRequest) Descriptor() ([]byte, []int) {
414	return file_ermite_issue_proto_rawDescGZIP(), []int{3}
415}
416
417func (x *CreateIssueRequest) GetRepo() string {
418	if x != nil {
419		return x.Repo
420	}
421	return ""
422}
423
424func (x *CreateIssueRequest) GetTitle() string {
425	if x != nil {
426		return x.Title
427	}
428	return ""
429}
430
431func (x *CreateIssueRequest) GetBody() string {
432	if x != nil {
433		return x.Body
434	}
435	return ""
436}
437
438// CreateIssueResponse holds the new issue.
439type CreateIssueResponse struct {
440	state protoimpl.MessageState `protogen:"open.v1"`
441	// Issue is the created issue.
442	Issue         *Issue `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"`
443	unknownFields protoimpl.UnknownFields
444	sizeCache     protoimpl.SizeCache
445}
446
447func (x *CreateIssueResponse) Reset() {
448	*x = CreateIssueResponse{}
449	mi := &file_ermite_issue_proto_msgTypes[4]
450	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
451	ms.StoreMessageInfo(mi)
452}
453
454func (x *CreateIssueResponse) String() string {
455	return protoimpl.X.MessageStringOf(x)
456}
457
458func (*CreateIssueResponse) ProtoMessage() {}
459
460func (x *CreateIssueResponse) ProtoReflect() protoreflect.Message {
461	mi := &file_ermite_issue_proto_msgTypes[4]
462	if x != nil {
463		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
464		if ms.LoadMessageInfo() == nil {
465			ms.StoreMessageInfo(mi)
466		}
467		return ms
468	}
469	return mi.MessageOf(x)
470}
471
472// Deprecated: Use CreateIssueResponse.ProtoReflect.Descriptor instead.
473func (*CreateIssueResponse) Descriptor() ([]byte, []int) {
474	return file_ermite_issue_proto_rawDescGZIP(), []int{4}
475}
476
477func (x *CreateIssueResponse) GetIssue() *Issue {
478	if x != nil {
479		return x.Issue
480	}
481	return nil
482}
483
484// ListIssuesRequest selects a page of issues.
485type ListIssuesRequest struct {
486	state protoimpl.MessageState `protogen:"open.v1"`
487	// Repo is the repository name.
488	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
489	// State restricts the result to one state. ISSUE_STATE_UNSPECIFIED means
490	// every state.
491	State IssueState `protobuf:"varint,2,opt,name=state,proto3,enum=ermite.IssueState" json:"state,omitempty"`
492	// PageSize is the maximum number of issues to return. 0 means the server
493	// default; values above the server maximum are lowered to it.
494	PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
495	// PageToken is the next_page_token of a previous response, to continue the
496	// same listing. Empty for the first page. Other fields must be unchanged.
497	PageToken     string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
498	unknownFields protoimpl.UnknownFields
499	sizeCache     protoimpl.SizeCache
500}
501
502func (x *ListIssuesRequest) Reset() {
503	*x = ListIssuesRequest{}
504	mi := &file_ermite_issue_proto_msgTypes[5]
505	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
506	ms.StoreMessageInfo(mi)
507}
508
509func (x *ListIssuesRequest) String() string {
510	return protoimpl.X.MessageStringOf(x)
511}
512
513func (*ListIssuesRequest) ProtoMessage() {}
514
515func (x *ListIssuesRequest) ProtoReflect() protoreflect.Message {
516	mi := &file_ermite_issue_proto_msgTypes[5]
517	if x != nil {
518		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
519		if ms.LoadMessageInfo() == nil {
520			ms.StoreMessageInfo(mi)
521		}
522		return ms
523	}
524	return mi.MessageOf(x)
525}
526
527// Deprecated: Use ListIssuesRequest.ProtoReflect.Descriptor instead.
528func (*ListIssuesRequest) Descriptor() ([]byte, []int) {
529	return file_ermite_issue_proto_rawDescGZIP(), []int{5}
530}
531
532func (x *ListIssuesRequest) GetRepo() string {
533	if x != nil {
534		return x.Repo
535	}
536	return ""
537}
538
539func (x *ListIssuesRequest) GetState() IssueState {
540	if x != nil {
541		return x.State
542	}
543	return IssueState_ISSUE_STATE_UNSPECIFIED
544}
545
546func (x *ListIssuesRequest) GetPageSize() int32 {
547	if x != nil {
548		return x.PageSize
549	}
550	return 0
551}
552
553func (x *ListIssuesRequest) GetPageToken() string {
554	if x != nil {
555		return x.PageToken
556	}
557	return ""
558}
559
560// ListIssuesResponse is one page of issues.
561type ListIssuesResponse struct {
562	state protoimpl.MessageState `protogen:"open.v1"`
563	// Issues are the issues of this page, highest number first.
564	Issues []*Issue `protobuf:"bytes,1,rep,name=issues,proto3" json:"issues,omitempty"`
565	// NextPageToken is passed as page_token to get the next page. Empty when
566	// there is no next page.
567	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
568	unknownFields protoimpl.UnknownFields
569	sizeCache     protoimpl.SizeCache
570}
571
572func (x *ListIssuesResponse) Reset() {
573	*x = ListIssuesResponse{}
574	mi := &file_ermite_issue_proto_msgTypes[6]
575	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
576	ms.StoreMessageInfo(mi)
577}
578
579func (x *ListIssuesResponse) String() string {
580	return protoimpl.X.MessageStringOf(x)
581}
582
583func (*ListIssuesResponse) ProtoMessage() {}
584
585func (x *ListIssuesResponse) ProtoReflect() protoreflect.Message {
586	mi := &file_ermite_issue_proto_msgTypes[6]
587	if x != nil {
588		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
589		if ms.LoadMessageInfo() == nil {
590			ms.StoreMessageInfo(mi)
591		}
592		return ms
593	}
594	return mi.MessageOf(x)
595}
596
597// Deprecated: Use ListIssuesResponse.ProtoReflect.Descriptor instead.
598func (*ListIssuesResponse) Descriptor() ([]byte, []int) {
599	return file_ermite_issue_proto_rawDescGZIP(), []int{6}
600}
601
602func (x *ListIssuesResponse) GetIssues() []*Issue {
603	if x != nil {
604		return x.Issues
605	}
606	return nil
607}
608
609func (x *ListIssuesResponse) GetNextPageToken() string {
610	if x != nil {
611		return x.NextPageToken
612	}
613	return ""
614}
615
616// GetIssueRequest selects an issue.
617type GetIssueRequest struct {
618	state protoimpl.MessageState `protogen:"open.v1"`
619	// Repo is the repository name.
620	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
621	// Number is the issue number.
622	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
623	unknownFields protoimpl.UnknownFields
624	sizeCache     protoimpl.SizeCache
625}
626
627func (x *GetIssueRequest) Reset() {
628	*x = GetIssueRequest{}
629	mi := &file_ermite_issue_proto_msgTypes[7]
630	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
631	ms.StoreMessageInfo(mi)
632}
633
634func (x *GetIssueRequest) String() string {
635	return protoimpl.X.MessageStringOf(x)
636}
637
638func (*GetIssueRequest) ProtoMessage() {}
639
640func (x *GetIssueRequest) ProtoReflect() protoreflect.Message {
641	mi := &file_ermite_issue_proto_msgTypes[7]
642	if x != nil {
643		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
644		if ms.LoadMessageInfo() == nil {
645			ms.StoreMessageInfo(mi)
646		}
647		return ms
648	}
649	return mi.MessageOf(x)
650}
651
652// Deprecated: Use GetIssueRequest.ProtoReflect.Descriptor instead.
653func (*GetIssueRequest) Descriptor() ([]byte, []int) {
654	return file_ermite_issue_proto_rawDescGZIP(), []int{7}
655}
656
657func (x *GetIssueRequest) GetRepo() string {
658	if x != nil {
659		return x.Repo
660	}
661	return ""
662}
663
664func (x *GetIssueRequest) GetNumber() int64 {
665	if x != nil {
666		return x.Number
667	}
668	return 0
669}
670
671// GetIssueResponse holds an issue with its comments.
672type GetIssueResponse struct {
673	state protoimpl.MessageState `protogen:"open.v1"`
674	// Issue is the issue.
675	Issue *Issue `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"`
676	// Comments are every comment of the issue, oldest first.
677	Comments []*IssueComment `protobuf:"bytes,2,rep,name=comments,proto3" json:"comments,omitempty"`
678	// References are the merge requests naming the issue, ascending by number,
679	// at most 100.
680	References []*IssueReference `protobuf:"bytes,3,rep,name=references,proto3" json:"references,omitempty"`
681	// Events are the history of the issue, oldest first, at most 500 (a server
682	// limit). Clients interleave them with the comments by created_at.
683	Events        []*IssueEvent `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"`
684	unknownFields protoimpl.UnknownFields
685	sizeCache     protoimpl.SizeCache
686}
687
688func (x *GetIssueResponse) Reset() {
689	*x = GetIssueResponse{}
690	mi := &file_ermite_issue_proto_msgTypes[8]
691	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
692	ms.StoreMessageInfo(mi)
693}
694
695func (x *GetIssueResponse) String() string {
696	return protoimpl.X.MessageStringOf(x)
697}
698
699func (*GetIssueResponse) ProtoMessage() {}
700
701func (x *GetIssueResponse) ProtoReflect() protoreflect.Message {
702	mi := &file_ermite_issue_proto_msgTypes[8]
703	if x != nil {
704		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
705		if ms.LoadMessageInfo() == nil {
706			ms.StoreMessageInfo(mi)
707		}
708		return ms
709	}
710	return mi.MessageOf(x)
711}
712
713// Deprecated: Use GetIssueResponse.ProtoReflect.Descriptor instead.
714func (*GetIssueResponse) Descriptor() ([]byte, []int) {
715	return file_ermite_issue_proto_rawDescGZIP(), []int{8}
716}
717
718func (x *GetIssueResponse) GetIssue() *Issue {
719	if x != nil {
720		return x.Issue
721	}
722	return nil
723}
724
725func (x *GetIssueResponse) GetComments() []*IssueComment {
726	if x != nil {
727		return x.Comments
728	}
729	return nil
730}
731
732func (x *GetIssueResponse) GetReferences() []*IssueReference {
733	if x != nil {
734		return x.References
735	}
736	return nil
737}
738
739func (x *GetIssueResponse) GetEvents() []*IssueEvent {
740	if x != nil {
741		return x.Events
742	}
743	return nil
744}
745
746// AddIssueCommentRequest describes the comment to add.
747type AddIssueCommentRequest struct {
748	state protoimpl.MessageState `protogen:"open.v1"`
749	// Repo is the repository name.
750	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
751	// Number is the issue number.
752	Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
753	// Text is the content. Required.
754	Text          string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
755	unknownFields protoimpl.UnknownFields
756	sizeCache     protoimpl.SizeCache
757}
758
759func (x *AddIssueCommentRequest) Reset() {
760	*x = AddIssueCommentRequest{}
761	mi := &file_ermite_issue_proto_msgTypes[9]
762	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
763	ms.StoreMessageInfo(mi)
764}
765
766func (x *AddIssueCommentRequest) String() string {
767	return protoimpl.X.MessageStringOf(x)
768}
769
770func (*AddIssueCommentRequest) ProtoMessage() {}
771
772func (x *AddIssueCommentRequest) ProtoReflect() protoreflect.Message {
773	mi := &file_ermite_issue_proto_msgTypes[9]
774	if x != nil {
775		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
776		if ms.LoadMessageInfo() == nil {
777			ms.StoreMessageInfo(mi)
778		}
779		return ms
780	}
781	return mi.MessageOf(x)
782}
783
784// Deprecated: Use AddIssueCommentRequest.ProtoReflect.Descriptor instead.
785func (*AddIssueCommentRequest) Descriptor() ([]byte, []int) {
786	return file_ermite_issue_proto_rawDescGZIP(), []int{9}
787}
788
789func (x *AddIssueCommentRequest) GetRepo() string {
790	if x != nil {
791		return x.Repo
792	}
793	return ""
794}
795
796func (x *AddIssueCommentRequest) GetNumber() int64 {
797	if x != nil {
798		return x.Number
799	}
800	return 0
801}
802
803func (x *AddIssueCommentRequest) GetText() string {
804	if x != nil {
805		return x.Text
806	}
807	return ""
808}
809
810// AddIssueCommentResponse holds the new comment.
811type AddIssueCommentResponse struct {
812	state protoimpl.MessageState `protogen:"open.v1"`
813	// Comment is the created comment.
814	Comment       *IssueComment `protobuf:"bytes,1,opt,name=comment,proto3" json:"comment,omitempty"`
815	unknownFields protoimpl.UnknownFields
816	sizeCache     protoimpl.SizeCache
817}
818
819func (x *AddIssueCommentResponse) Reset() {
820	*x = AddIssueCommentResponse{}
821	mi := &file_ermite_issue_proto_msgTypes[10]
822	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
823	ms.StoreMessageInfo(mi)
824}
825
826func (x *AddIssueCommentResponse) String() string {
827	return protoimpl.X.MessageStringOf(x)
828}
829
830func (*AddIssueCommentResponse) ProtoMessage() {}
831
832func (x *AddIssueCommentResponse) ProtoReflect() protoreflect.Message {
833	mi := &file_ermite_issue_proto_msgTypes[10]
834	if x != nil {
835		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
836		if ms.LoadMessageInfo() == nil {
837			ms.StoreMessageInfo(mi)
838		}
839		return ms
840	}
841	return mi.MessageOf(x)
842}
843
844// Deprecated: Use AddIssueCommentResponse.ProtoReflect.Descriptor instead.
845func (*AddIssueCommentResponse) Descriptor() ([]byte, []int) {
846	return file_ermite_issue_proto_rawDescGZIP(), []int{10}
847}
848
849func (x *AddIssueCommentResponse) GetComment() *IssueComment {
850	if x != nil {
851		return x.Comment
852	}
853	return nil
854}
855
856// CloseIssueRequest names the issue to close.
857type CloseIssueRequest struct {
858	state protoimpl.MessageState `protogen:"open.v1"`
859	// Repo is the repository name.
860	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
861	// Number is the issue number.
862	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
863	unknownFields protoimpl.UnknownFields
864	sizeCache     protoimpl.SizeCache
865}
866
867func (x *CloseIssueRequest) Reset() {
868	*x = CloseIssueRequest{}
869	mi := &file_ermite_issue_proto_msgTypes[11]
870	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
871	ms.StoreMessageInfo(mi)
872}
873
874func (x *CloseIssueRequest) String() string {
875	return protoimpl.X.MessageStringOf(x)
876}
877
878func (*CloseIssueRequest) ProtoMessage() {}
879
880func (x *CloseIssueRequest) ProtoReflect() protoreflect.Message {
881	mi := &file_ermite_issue_proto_msgTypes[11]
882	if x != nil {
883		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
884		if ms.LoadMessageInfo() == nil {
885			ms.StoreMessageInfo(mi)
886		}
887		return ms
888	}
889	return mi.MessageOf(x)
890}
891
892// Deprecated: Use CloseIssueRequest.ProtoReflect.Descriptor instead.
893func (*CloseIssueRequest) Descriptor() ([]byte, []int) {
894	return file_ermite_issue_proto_rawDescGZIP(), []int{11}
895}
896
897func (x *CloseIssueRequest) GetRepo() string {
898	if x != nil {
899		return x.Repo
900	}
901	return ""
902}
903
904func (x *CloseIssueRequest) GetNumber() int64 {
905	if x != nil {
906		return x.Number
907	}
908	return 0
909}
910
911// CloseIssueResponse holds the issue after closing.
912type CloseIssueResponse struct {
913	state protoimpl.MessageState `protogen:"open.v1"`
914	// Issue is the closed issue.
915	Issue         *Issue `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"`
916	unknownFields protoimpl.UnknownFields
917	sizeCache     protoimpl.SizeCache
918}
919
920func (x *CloseIssueResponse) Reset() {
921	*x = CloseIssueResponse{}
922	mi := &file_ermite_issue_proto_msgTypes[12]
923	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
924	ms.StoreMessageInfo(mi)
925}
926
927func (x *CloseIssueResponse) String() string {
928	return protoimpl.X.MessageStringOf(x)
929}
930
931func (*CloseIssueResponse) ProtoMessage() {}
932
933func (x *CloseIssueResponse) ProtoReflect() protoreflect.Message {
934	mi := &file_ermite_issue_proto_msgTypes[12]
935	if x != nil {
936		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
937		if ms.LoadMessageInfo() == nil {
938			ms.StoreMessageInfo(mi)
939		}
940		return ms
941	}
942	return mi.MessageOf(x)
943}
944
945// Deprecated: Use CloseIssueResponse.ProtoReflect.Descriptor instead.
946func (*CloseIssueResponse) Descriptor() ([]byte, []int) {
947	return file_ermite_issue_proto_rawDescGZIP(), []int{12}
948}
949
950func (x *CloseIssueResponse) GetIssue() *Issue {
951	if x != nil {
952		return x.Issue
953	}
954	return nil
955}
956
957// ResolveIssueRequest names the issue to resolve.
958type ResolveIssueRequest struct {
959	state protoimpl.MessageState `protogen:"open.v1"`
960	// Repo is the repository name.
961	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
962	// Number is the issue number.
963	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
964	unknownFields protoimpl.UnknownFields
965	sizeCache     protoimpl.SizeCache
966}
967
968func (x *ResolveIssueRequest) Reset() {
969	*x = ResolveIssueRequest{}
970	mi := &file_ermite_issue_proto_msgTypes[13]
971	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
972	ms.StoreMessageInfo(mi)
973}
974
975func (x *ResolveIssueRequest) String() string {
976	return protoimpl.X.MessageStringOf(x)
977}
978
979func (*ResolveIssueRequest) ProtoMessage() {}
980
981func (x *ResolveIssueRequest) ProtoReflect() protoreflect.Message {
982	mi := &file_ermite_issue_proto_msgTypes[13]
983	if x != nil {
984		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
985		if ms.LoadMessageInfo() == nil {
986			ms.StoreMessageInfo(mi)
987		}
988		return ms
989	}
990	return mi.MessageOf(x)
991}
992
993// Deprecated: Use ResolveIssueRequest.ProtoReflect.Descriptor instead.
994func (*ResolveIssueRequest) Descriptor() ([]byte, []int) {
995	return file_ermite_issue_proto_rawDescGZIP(), []int{13}
996}
997
998func (x *ResolveIssueRequest) GetRepo() string {
999	if x != nil {
1000		return x.Repo
1001	}
1002	return ""
1003}
1004
1005func (x *ResolveIssueRequest) GetNumber() int64 {
1006	if x != nil {
1007		return x.Number
1008	}
1009	return 0
1010}
1011
1012// ResolveIssueResponse holds the issue after resolving.
1013type ResolveIssueResponse struct {
1014	state protoimpl.MessageState `protogen:"open.v1"`
1015	// Issue is the resolved issue.
1016	Issue         *Issue `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"`
1017	unknownFields protoimpl.UnknownFields
1018	sizeCache     protoimpl.SizeCache
1019}
1020
1021func (x *ResolveIssueResponse) Reset() {
1022	*x = ResolveIssueResponse{}
1023	mi := &file_ermite_issue_proto_msgTypes[14]
1024	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1025	ms.StoreMessageInfo(mi)
1026}
1027
1028func (x *ResolveIssueResponse) String() string {
1029	return protoimpl.X.MessageStringOf(x)
1030}
1031
1032func (*ResolveIssueResponse) ProtoMessage() {}
1033
1034func (x *ResolveIssueResponse) ProtoReflect() protoreflect.Message {
1035	mi := &file_ermite_issue_proto_msgTypes[14]
1036	if x != nil {
1037		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1038		if ms.LoadMessageInfo() == nil {
1039			ms.StoreMessageInfo(mi)
1040		}
1041		return ms
1042	}
1043	return mi.MessageOf(x)
1044}
1045
1046// Deprecated: Use ResolveIssueResponse.ProtoReflect.Descriptor instead.
1047func (*ResolveIssueResponse) Descriptor() ([]byte, []int) {
1048	return file_ermite_issue_proto_rawDescGZIP(), []int{14}
1049}
1050
1051func (x *ResolveIssueResponse) GetIssue() *Issue {
1052	if x != nil {
1053		return x.Issue
1054	}
1055	return nil
1056}
1057
1058// ReopenIssueRequest names the issue to reopen.
1059type ReopenIssueRequest struct {
1060	state protoimpl.MessageState `protogen:"open.v1"`
1061	// Repo is the repository name.
1062	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1063	// Number is the issue number.
1064	Number        int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
1065	unknownFields protoimpl.UnknownFields
1066	sizeCache     protoimpl.SizeCache
1067}
1068
1069func (x *ReopenIssueRequest) Reset() {
1070	*x = ReopenIssueRequest{}
1071	mi := &file_ermite_issue_proto_msgTypes[15]
1072	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1073	ms.StoreMessageInfo(mi)
1074}
1075
1076func (x *ReopenIssueRequest) String() string {
1077	return protoimpl.X.MessageStringOf(x)
1078}
1079
1080func (*ReopenIssueRequest) ProtoMessage() {}
1081
1082func (x *ReopenIssueRequest) ProtoReflect() protoreflect.Message {
1083	mi := &file_ermite_issue_proto_msgTypes[15]
1084	if x != nil {
1085		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1086		if ms.LoadMessageInfo() == nil {
1087			ms.StoreMessageInfo(mi)
1088		}
1089		return ms
1090	}
1091	return mi.MessageOf(x)
1092}
1093
1094// Deprecated: Use ReopenIssueRequest.ProtoReflect.Descriptor instead.
1095func (*ReopenIssueRequest) Descriptor() ([]byte, []int) {
1096	return file_ermite_issue_proto_rawDescGZIP(), []int{15}
1097}
1098
1099func (x *ReopenIssueRequest) GetRepo() string {
1100	if x != nil {
1101		return x.Repo
1102	}
1103	return ""
1104}
1105
1106func (x *ReopenIssueRequest) GetNumber() int64 {
1107	if x != nil {
1108		return x.Number
1109	}
1110	return 0
1111}
1112
1113// ReopenIssueResponse holds the issue after reopening.
1114type ReopenIssueResponse struct {
1115	state protoimpl.MessageState `protogen:"open.v1"`
1116	// Issue is the reopened issue.
1117	Issue         *Issue `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"`
1118	unknownFields protoimpl.UnknownFields
1119	sizeCache     protoimpl.SizeCache
1120}
1121
1122func (x *ReopenIssueResponse) Reset() {
1123	*x = ReopenIssueResponse{}
1124	mi := &file_ermite_issue_proto_msgTypes[16]
1125	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1126	ms.StoreMessageInfo(mi)
1127}
1128
1129func (x *ReopenIssueResponse) String() string {
1130	return protoimpl.X.MessageStringOf(x)
1131}
1132
1133func (*ReopenIssueResponse) ProtoMessage() {}
1134
1135func (x *ReopenIssueResponse) ProtoReflect() protoreflect.Message {
1136	mi := &file_ermite_issue_proto_msgTypes[16]
1137	if x != nil {
1138		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1139		if ms.LoadMessageInfo() == nil {
1140			ms.StoreMessageInfo(mi)
1141		}
1142		return ms
1143	}
1144	return mi.MessageOf(x)
1145}
1146
1147// Deprecated: Use ReopenIssueResponse.ProtoReflect.Descriptor instead.
1148func (*ReopenIssueResponse) Descriptor() ([]byte, []int) {
1149	return file_ermite_issue_proto_rawDescGZIP(), []int{16}
1150}
1151
1152func (x *ReopenIssueResponse) GetIssue() *Issue {
1153	if x != nil {
1154		return x.Issue
1155	}
1156	return nil
1157}
1158
1159// PendingIssue is an issue awaiting moderation. It has no number yet.
1160type PendingIssue struct {
1161	state protoimpl.MessageState `protogen:"open.v1"`
1162	// Id identifies the pending issue. Opaque internal id, not a number.
1163	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
1164	// Repo is the name of the repository.
1165	Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"`
1166	// Title is the one-line title.
1167	Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
1168	// Body is the content. It may be empty.
1169	Body string `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"`
1170	// Author is the optional display name given by the anonymous submitter. It
1171	// may be empty or "anonymous", and is not verified: it never proves
1172	// identity (a visitor can type "owner"). It becomes Issue.author on approval.
1173	Author string `protobuf:"bytes,5,opt,name=author,proto3" json:"author,omitempty"`
1174	// CreatedAt is when the issue was submitted.
1175	CreatedAt     *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
1176	unknownFields protoimpl.UnknownFields
1177	sizeCache     protoimpl.SizeCache
1178}
1179
1180func (x *PendingIssue) Reset() {
1181	*x = PendingIssue{}
1182	mi := &file_ermite_issue_proto_msgTypes[17]
1183	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1184	ms.StoreMessageInfo(mi)
1185}
1186
1187func (x *PendingIssue) String() string {
1188	return protoimpl.X.MessageStringOf(x)
1189}
1190
1191func (*PendingIssue) ProtoMessage() {}
1192
1193func (x *PendingIssue) ProtoReflect() protoreflect.Message {
1194	mi := &file_ermite_issue_proto_msgTypes[17]
1195	if x != nil {
1196		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1197		if ms.LoadMessageInfo() == nil {
1198			ms.StoreMessageInfo(mi)
1199		}
1200		return ms
1201	}
1202	return mi.MessageOf(x)
1203}
1204
1205// Deprecated: Use PendingIssue.ProtoReflect.Descriptor instead.
1206func (*PendingIssue) Descriptor() ([]byte, []int) {
1207	return file_ermite_issue_proto_rawDescGZIP(), []int{17}
1208}
1209
1210func (x *PendingIssue) GetId() string {
1211	if x != nil {
1212		return x.Id
1213	}
1214	return ""
1215}
1216
1217func (x *PendingIssue) GetRepo() string {
1218	if x != nil {
1219		return x.Repo
1220	}
1221	return ""
1222}
1223
1224func (x *PendingIssue) GetTitle() string {
1225	if x != nil {
1226		return x.Title
1227	}
1228	return ""
1229}
1230
1231func (x *PendingIssue) GetBody() string {
1232	if x != nil {
1233		return x.Body
1234	}
1235	return ""
1236}
1237
1238func (x *PendingIssue) GetAuthor() string {
1239	if x != nil {
1240		return x.Author
1241	}
1242	return ""
1243}
1244
1245func (x *PendingIssue) GetCreatedAt() *timestamppb.Timestamp {
1246	if x != nil {
1247		return x.CreatedAt
1248	}
1249	return nil
1250}
1251
1252// ListPendingIssuesRequest selects a page of pending issues.
1253type ListPendingIssuesRequest struct {
1254	state protoimpl.MessageState `protogen:"open.v1"`
1255	// Repo is the repository name. Empty means every repository.
1256	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1257	// PageSize is the maximum number of issues to return. 0 means the server
1258	// default; values above the server maximum are lowered to it.
1259	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
1260	// PageToken is the next_page_token of a previous response, to continue the
1261	// same listing. Empty for the first page. Other fields must be unchanged.
1262	PageToken     string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
1263	unknownFields protoimpl.UnknownFields
1264	sizeCache     protoimpl.SizeCache
1265}
1266
1267func (x *ListPendingIssuesRequest) Reset() {
1268	*x = ListPendingIssuesRequest{}
1269	mi := &file_ermite_issue_proto_msgTypes[18]
1270	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1271	ms.StoreMessageInfo(mi)
1272}
1273
1274func (x *ListPendingIssuesRequest) String() string {
1275	return protoimpl.X.MessageStringOf(x)
1276}
1277
1278func (*ListPendingIssuesRequest) ProtoMessage() {}
1279
1280func (x *ListPendingIssuesRequest) ProtoReflect() protoreflect.Message {
1281	mi := &file_ermite_issue_proto_msgTypes[18]
1282	if x != nil {
1283		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1284		if ms.LoadMessageInfo() == nil {
1285			ms.StoreMessageInfo(mi)
1286		}
1287		return ms
1288	}
1289	return mi.MessageOf(x)
1290}
1291
1292// Deprecated: Use ListPendingIssuesRequest.ProtoReflect.Descriptor instead.
1293func (*ListPendingIssuesRequest) Descriptor() ([]byte, []int) {
1294	return file_ermite_issue_proto_rawDescGZIP(), []int{18}
1295}
1296
1297func (x *ListPendingIssuesRequest) GetRepo() string {
1298	if x != nil {
1299		return x.Repo
1300	}
1301	return ""
1302}
1303
1304func (x *ListPendingIssuesRequest) GetPageSize() int32 {
1305	if x != nil {
1306		return x.PageSize
1307	}
1308	return 0
1309}
1310
1311func (x *ListPendingIssuesRequest) GetPageToken() string {
1312	if x != nil {
1313		return x.PageToken
1314	}
1315	return ""
1316}
1317
1318// ListPendingIssuesResponse is one page of pending issues.
1319type ListPendingIssuesResponse struct {
1320	state protoimpl.MessageState `protogen:"open.v1"`
1321	// Issues are the pending issues of this page, oldest first.
1322	Issues []*PendingIssue `protobuf:"bytes,1,rep,name=issues,proto3" json:"issues,omitempty"`
1323	// NextPageToken is passed as page_token to get the next page. Empty when
1324	// there is no next page.
1325	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1326	unknownFields protoimpl.UnknownFields
1327	sizeCache     protoimpl.SizeCache
1328}
1329
1330func (x *ListPendingIssuesResponse) Reset() {
1331	*x = ListPendingIssuesResponse{}
1332	mi := &file_ermite_issue_proto_msgTypes[19]
1333	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1334	ms.StoreMessageInfo(mi)
1335}
1336
1337func (x *ListPendingIssuesResponse) String() string {
1338	return protoimpl.X.MessageStringOf(x)
1339}
1340
1341func (*ListPendingIssuesResponse) ProtoMessage() {}
1342
1343func (x *ListPendingIssuesResponse) ProtoReflect() protoreflect.Message {
1344	mi := &file_ermite_issue_proto_msgTypes[19]
1345	if x != nil {
1346		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1347		if ms.LoadMessageInfo() == nil {
1348			ms.StoreMessageInfo(mi)
1349		}
1350		return ms
1351	}
1352	return mi.MessageOf(x)
1353}
1354
1355// Deprecated: Use ListPendingIssuesResponse.ProtoReflect.Descriptor instead.
1356func (*ListPendingIssuesResponse) Descriptor() ([]byte, []int) {
1357	return file_ermite_issue_proto_rawDescGZIP(), []int{19}
1358}
1359
1360func (x *ListPendingIssuesResponse) GetIssues() []*PendingIssue {
1361	if x != nil {
1362		return x.Issues
1363	}
1364	return nil
1365}
1366
1367func (x *ListPendingIssuesResponse) GetNextPageToken() string {
1368	if x != nil {
1369		return x.NextPageToken
1370	}
1371	return ""
1372}
1373
1374// ApproveIssueRequest names the pending issue to approve.
1375type ApproveIssueRequest struct {
1376	state protoimpl.MessageState `protogen:"open.v1"`
1377	// Repo is the repository name.
1378	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1379	// Id is the PendingIssue.id.
1380	Id            string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
1381	unknownFields protoimpl.UnknownFields
1382	sizeCache     protoimpl.SizeCache
1383}
1384
1385func (x *ApproveIssueRequest) Reset() {
1386	*x = ApproveIssueRequest{}
1387	mi := &file_ermite_issue_proto_msgTypes[20]
1388	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1389	ms.StoreMessageInfo(mi)
1390}
1391
1392func (x *ApproveIssueRequest) String() string {
1393	return protoimpl.X.MessageStringOf(x)
1394}
1395
1396func (*ApproveIssueRequest) ProtoMessage() {}
1397
1398func (x *ApproveIssueRequest) ProtoReflect() protoreflect.Message {
1399	mi := &file_ermite_issue_proto_msgTypes[20]
1400	if x != nil {
1401		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1402		if ms.LoadMessageInfo() == nil {
1403			ms.StoreMessageInfo(mi)
1404		}
1405		return ms
1406	}
1407	return mi.MessageOf(x)
1408}
1409
1410// Deprecated: Use ApproveIssueRequest.ProtoReflect.Descriptor instead.
1411func (*ApproveIssueRequest) Descriptor() ([]byte, []int) {
1412	return file_ermite_issue_proto_rawDescGZIP(), []int{20}
1413}
1414
1415func (x *ApproveIssueRequest) GetRepo() string {
1416	if x != nil {
1417		return x.Repo
1418	}
1419	return ""
1420}
1421
1422func (x *ApproveIssueRequest) GetId() string {
1423	if x != nil {
1424		return x.Id
1425	}
1426	return ""
1427}
1428
1429// ApproveIssueResponse holds the approved issue.
1430type ApproveIssueResponse struct {
1431	state protoimpl.MessageState `protogen:"open.v1"`
1432	// Issue is the approved issue, with its new number and state
1433	// ISSUE_STATE_OPEN.
1434	Issue         *Issue `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"`
1435	unknownFields protoimpl.UnknownFields
1436	sizeCache     protoimpl.SizeCache
1437}
1438
1439func (x *ApproveIssueResponse) Reset() {
1440	*x = ApproveIssueResponse{}
1441	mi := &file_ermite_issue_proto_msgTypes[21]
1442	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1443	ms.StoreMessageInfo(mi)
1444}
1445
1446func (x *ApproveIssueResponse) String() string {
1447	return protoimpl.X.MessageStringOf(x)
1448}
1449
1450func (*ApproveIssueResponse) ProtoMessage() {}
1451
1452func (x *ApproveIssueResponse) ProtoReflect() protoreflect.Message {
1453	mi := &file_ermite_issue_proto_msgTypes[21]
1454	if x != nil {
1455		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1456		if ms.LoadMessageInfo() == nil {
1457			ms.StoreMessageInfo(mi)
1458		}
1459		return ms
1460	}
1461	return mi.MessageOf(x)
1462}
1463
1464// Deprecated: Use ApproveIssueResponse.ProtoReflect.Descriptor instead.
1465func (*ApproveIssueResponse) Descriptor() ([]byte, []int) {
1466	return file_ermite_issue_proto_rawDescGZIP(), []int{21}
1467}
1468
1469func (x *ApproveIssueResponse) GetIssue() *Issue {
1470	if x != nil {
1471		return x.Issue
1472	}
1473	return nil
1474}
1475
1476// RejectIssueRequest names the pending issue to reject.
1477type RejectIssueRequest struct {
1478	state protoimpl.MessageState `protogen:"open.v1"`
1479	// Repo is the repository name.
1480	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1481	// Id is the PendingIssue.id.
1482	Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
1483	// Ban also bans the submitter for a while.
1484	Ban           bool `protobuf:"varint,3,opt,name=ban,proto3" json:"ban,omitempty"`
1485	unknownFields protoimpl.UnknownFields
1486	sizeCache     protoimpl.SizeCache
1487}
1488
1489func (x *RejectIssueRequest) Reset() {
1490	*x = RejectIssueRequest{}
1491	mi := &file_ermite_issue_proto_msgTypes[22]
1492	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1493	ms.StoreMessageInfo(mi)
1494}
1495
1496func (x *RejectIssueRequest) String() string {
1497	return protoimpl.X.MessageStringOf(x)
1498}
1499
1500func (*RejectIssueRequest) ProtoMessage() {}
1501
1502func (x *RejectIssueRequest) ProtoReflect() protoreflect.Message {
1503	mi := &file_ermite_issue_proto_msgTypes[22]
1504	if x != nil {
1505		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1506		if ms.LoadMessageInfo() == nil {
1507			ms.StoreMessageInfo(mi)
1508		}
1509		return ms
1510	}
1511	return mi.MessageOf(x)
1512}
1513
1514// Deprecated: Use RejectIssueRequest.ProtoReflect.Descriptor instead.
1515func (*RejectIssueRequest) Descriptor() ([]byte, []int) {
1516	return file_ermite_issue_proto_rawDescGZIP(), []int{22}
1517}
1518
1519func (x *RejectIssueRequest) GetRepo() string {
1520	if x != nil {
1521		return x.Repo
1522	}
1523	return ""
1524}
1525
1526func (x *RejectIssueRequest) GetId() string {
1527	if x != nil {
1528		return x.Id
1529	}
1530	return ""
1531}
1532
1533func (x *RejectIssueRequest) GetBan() bool {
1534	if x != nil {
1535		return x.Ban
1536	}
1537	return false
1538}
1539
1540// RejectIssueResponse is empty: the pending issue is gone.
1541type RejectIssueResponse struct {
1542	state         protoimpl.MessageState `protogen:"open.v1"`
1543	unknownFields protoimpl.UnknownFields
1544	sizeCache     protoimpl.SizeCache
1545}
1546
1547func (x *RejectIssueResponse) Reset() {
1548	*x = RejectIssueResponse{}
1549	mi := &file_ermite_issue_proto_msgTypes[23]
1550	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1551	ms.StoreMessageInfo(mi)
1552}
1553
1554func (x *RejectIssueResponse) String() string {
1555	return protoimpl.X.MessageStringOf(x)
1556}
1557
1558func (*RejectIssueResponse) ProtoMessage() {}
1559
1560func (x *RejectIssueResponse) ProtoReflect() protoreflect.Message {
1561	mi := &file_ermite_issue_proto_msgTypes[23]
1562	if x != nil {
1563		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1564		if ms.LoadMessageInfo() == nil {
1565			ms.StoreMessageInfo(mi)
1566		}
1567		return ms
1568	}
1569	return mi.MessageOf(x)
1570}
1571
1572// Deprecated: Use RejectIssueResponse.ProtoReflect.Descriptor instead.
1573func (*RejectIssueResponse) Descriptor() ([]byte, []int) {
1574	return file_ermite_issue_proto_rawDescGZIP(), []int{23}
1575}
1576
1577var File_ermite_issue_proto protoreflect.FileDescriptor
1578
1579const file_ermite_issue_proto_rawDesc = "" +
1580	"\n" +
1581	"\x12ermite/issue.proto\x12\x06ermite\x1a\x1aermite/merge_request.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf1\x02\n" +
1582	"\x05Issue\x12\x12\n" +
1583	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
1584	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x14\n" +
1585	"\x05title\x18\x03 \x01(\tR\x05title\x12\x12\n" +
1586	"\x04body\x18\x04 \x01(\tR\x04body\x12(\n" +
1587	"\x05state\x18\x05 \x01(\x0e2\x12.ermite.IssueStateR\x05state\x12\x16\n" +
1588	"\x06author\x18\x06 \x01(\tR\x06author\x129\n" +
1589	"\n" +
1590	"created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
1591	"\n" +
1592	"updated_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12#\n" +
1593	"\rcomment_count\x18\t \x01(\x05R\fcommentCount\x125\n" +
1594	"\x17closed_by_merge_request\x18\n" +
1595	" \x01(\x03R\x14closedByMergeRequest\"\x87\x01\n" +
1596	"\x0eIssueReference\x12\x16\n" +
1597	"\x06number\x18\x01 \x01(\x03R\x06number\x12\x14\n" +
1598	"\x05title\x18\x02 \x01(\tR\x05title\x12/\n" +
1599	"\x05state\x18\x03 \x01(\x0e2\x19.ermite.MergeRequestStateR\x05state\x12\x16\n" +
1600	"\x06closes\x18\x04 \x01(\bR\x06closes\"\x85\x01\n" +
1601	"\fIssueComment\x12\x0e\n" +
1602	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
1603	"\x06author\x18\x02 \x01(\tR\x06author\x12\x12\n" +
1604	"\x04text\x18\x03 \x01(\tR\x04text\x129\n" +
1605	"\n" +
1606	"created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"R\n" +
1607	"\x12CreateIssueRequest\x12\x12\n" +
1608	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x14\n" +
1609	"\x05title\x18\x02 \x01(\tR\x05title\x12\x12\n" +
1610	"\x04body\x18\x03 \x01(\tR\x04body\":\n" +
1611	"\x13CreateIssueResponse\x12#\n" +
1612	"\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"\x8d\x01\n" +
1613	"\x11ListIssuesRequest\x12\x12\n" +
1614	"\x04repo\x18\x01 \x01(\tR\x04repo\x12(\n" +
1615	"\x05state\x18\x02 \x01(\x0e2\x12.ermite.IssueStateR\x05state\x12\x1b\n" +
1616	"\tpage_size\x18\x03 \x01(\x05R\bpageSize\x12\x1d\n" +
1617	"\n" +
1618	"page_token\x18\x04 \x01(\tR\tpageToken\"c\n" +
1619	"\x12ListIssuesResponse\x12%\n" +
1620	"\x06issues\x18\x01 \x03(\v2\r.ermite.IssueR\x06issues\x12&\n" +
1621	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"=\n" +
1622	"\x0fGetIssueRequest\x12\x12\n" +
1623	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
1624	"\x06number\x18\x02 \x01(\x03R\x06number\"\xcd\x01\n" +
1625	"\x10GetIssueResponse\x12#\n" +
1626	"\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\x120\n" +
1627	"\bcomments\x18\x02 \x03(\v2\x14.ermite.IssueCommentR\bcomments\x126\n" +
1628	"\n" +
1629	"references\x18\x03 \x03(\v2\x16.ermite.IssueReferenceR\n" +
1630	"references\x12*\n" +
1631	"\x06events\x18\x04 \x03(\v2\x12.ermite.IssueEventR\x06events\"X\n" +
1632	"\x16AddIssueCommentRequest\x12\x12\n" +
1633	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
1634	"\x06number\x18\x02 \x01(\x03R\x06number\x12\x12\n" +
1635	"\x04text\x18\x03 \x01(\tR\x04text\"I\n" +
1636	"\x17AddIssueCommentResponse\x12.\n" +
1637	"\acomment\x18\x01 \x01(\v2\x14.ermite.IssueCommentR\acomment\"?\n" +
1638	"\x11CloseIssueRequest\x12\x12\n" +
1639	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
1640	"\x06number\x18\x02 \x01(\x03R\x06number\"9\n" +
1641	"\x12CloseIssueResponse\x12#\n" +
1642	"\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"A\n" +
1643	"\x13ResolveIssueRequest\x12\x12\n" +
1644	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
1645	"\x06number\x18\x02 \x01(\x03R\x06number\";\n" +
1646	"\x14ResolveIssueResponse\x12#\n" +
1647	"\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"@\n" +
1648	"\x12ReopenIssueRequest\x12\x12\n" +
1649	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
1650	"\x06number\x18\x02 \x01(\x03R\x06number\":\n" +
1651	"\x13ReopenIssueResponse\x12#\n" +
1652	"\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"\xaf\x01\n" +
1653	"\fPendingIssue\x12\x0e\n" +
1654	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
1655	"\x04repo\x18\x02 \x01(\tR\x04repo\x12\x14\n" +
1656	"\x05title\x18\x03 \x01(\tR\x05title\x12\x12\n" +
1657	"\x04body\x18\x04 \x01(\tR\x04body\x12\x16\n" +
1658	"\x06author\x18\x05 \x01(\tR\x06author\x129\n" +
1659	"\n" +
1660	"created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"j\n" +
1661	"\x18ListPendingIssuesRequest\x12\x12\n" +
1662	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1b\n" +
1663	"\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" +
1664	"\n" +
1665	"page_token\x18\x03 \x01(\tR\tpageToken\"q\n" +
1666	"\x19ListPendingIssuesResponse\x12,\n" +
1667	"\x06issues\x18\x01 \x03(\v2\x14.ermite.PendingIssueR\x06issues\x12&\n" +
1668	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"9\n" +
1669	"\x13ApproveIssueRequest\x12\x12\n" +
1670	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x0e\n" +
1671	"\x02id\x18\x02 \x01(\tR\x02id\";\n" +
1672	"\x14ApproveIssueResponse\x12#\n" +
1673	"\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"J\n" +
1674	"\x12RejectIssueRequest\x12\x12\n" +
1675	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x0e\n" +
1676	"\x02id\x18\x02 \x01(\tR\x02id\x12\x10\n" +
1677	"\x03ban\x18\x03 \x01(\bR\x03ban\"\x15\n" +
1678	"\x13RejectIssueResponse*\x8a\x01\n" +
1679	"\n" +
1680	"IssueState\x12\x1b\n" +
1681	"\x17ISSUE_STATE_UNSPECIFIED\x10\x00\x12\x14\n" +
1682	"\x10ISSUE_STATE_OPEN\x10\x01\x12\x16\n" +
1683	"\x12ISSUE_STATE_CLOSED\x10\x02\x12\x17\n" +
1684	"\x13ISSUE_STATE_PENDING\x10\x03\x12\x18\n" +
1685	"\x14ISSUE_STATE_RESOLVED\x10\x042\xf3\x05\n" +
1686	"\fIssueService\x12F\n" +
1687	"\vCreateIssue\x12\x1a.ermite.CreateIssueRequest\x1a\x1b.ermite.CreateIssueResponse\x12C\n" +
1688	"\n" +
1689	"ListIssues\x12\x19.ermite.ListIssuesRequest\x1a\x1a.ermite.ListIssuesResponse\x12=\n" +
1690	"\bGetIssue\x12\x17.ermite.GetIssueRequest\x1a\x18.ermite.GetIssueResponse\x12R\n" +
1691	"\x0fAddIssueComment\x12\x1e.ermite.AddIssueCommentRequest\x1a\x1f.ermite.AddIssueCommentResponse\x12C\n" +
1692	"\n" +
1693	"CloseIssue\x12\x19.ermite.CloseIssueRequest\x1a\x1a.ermite.CloseIssueResponse\x12I\n" +
1694	"\fResolveIssue\x12\x1b.ermite.ResolveIssueRequest\x1a\x1c.ermite.ResolveIssueResponse\x12F\n" +
1695	"\vReopenIssue\x12\x1a.ermite.ReopenIssueRequest\x1a\x1b.ermite.ReopenIssueResponse\x12X\n" +
1696	"\x11ListPendingIssues\x12 .ermite.ListPendingIssuesRequest\x1a!.ermite.ListPendingIssuesResponse\x12I\n" +
1697	"\fApproveIssue\x12\x1b.ermite.ApproveIssueRequest\x1a\x1c.ermite.ApproveIssueResponse\x12F\n" +
1698	"\vRejectIssue\x12\x1a.ermite.RejectIssueRequest\x1a\x1b.ermite.RejectIssueResponseBq\n" +
1699	"\n" +
1700	"com.ermiteB\n" +
1701	"IssueProtoP\x01Z\x1fbnema.dev/ermite-api/gen/ermite\xa2\x02\x03EXX\xaa\x02\x06Ermite\xca\x02\x06Ermite\xe2\x02\x12Ermite\\GPBMetadata\xea\x02\x06Ermiteb\x06proto3"
1702
1703var (
1704	file_ermite_issue_proto_rawDescOnce sync.Once
1705	file_ermite_issue_proto_rawDescData []byte
1706)
1707
1708func file_ermite_issue_proto_rawDescGZIP() []byte {
1709	file_ermite_issue_proto_rawDescOnce.Do(func() {
1710		file_ermite_issue_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ermite_issue_proto_rawDesc), len(file_ermite_issue_proto_rawDesc)))
1711	})
1712	return file_ermite_issue_proto_rawDescData
1713}
1714
1715var file_ermite_issue_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
1716var file_ermite_issue_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
1717var file_ermite_issue_proto_goTypes = []any{
1718	(IssueState)(0),                   // 0: ermite.IssueState
1719	(*Issue)(nil),                     // 1: ermite.Issue
1720	(*IssueReference)(nil),            // 2: ermite.IssueReference
1721	(*IssueComment)(nil),              // 3: ermite.IssueComment
1722	(*CreateIssueRequest)(nil),        // 4: ermite.CreateIssueRequest
1723	(*CreateIssueResponse)(nil),       // 5: ermite.CreateIssueResponse
1724	(*ListIssuesRequest)(nil),         // 6: ermite.ListIssuesRequest
1725	(*ListIssuesResponse)(nil),        // 7: ermite.ListIssuesResponse
1726	(*GetIssueRequest)(nil),           // 8: ermite.GetIssueRequest
1727	(*GetIssueResponse)(nil),          // 9: ermite.GetIssueResponse
1728	(*AddIssueCommentRequest)(nil),    // 10: ermite.AddIssueCommentRequest
1729	(*AddIssueCommentResponse)(nil),   // 11: ermite.AddIssueCommentResponse
1730	(*CloseIssueRequest)(nil),         // 12: ermite.CloseIssueRequest
1731	(*CloseIssueResponse)(nil),        // 13: ermite.CloseIssueResponse
1732	(*ResolveIssueRequest)(nil),       // 14: ermite.ResolveIssueRequest
1733	(*ResolveIssueResponse)(nil),      // 15: ermite.ResolveIssueResponse
1734	(*ReopenIssueRequest)(nil),        // 16: ermite.ReopenIssueRequest
1735	(*ReopenIssueResponse)(nil),       // 17: ermite.ReopenIssueResponse
1736	(*PendingIssue)(nil),              // 18: ermite.PendingIssue
1737	(*ListPendingIssuesRequest)(nil),  // 19: ermite.ListPendingIssuesRequest
1738	(*ListPendingIssuesResponse)(nil), // 20: ermite.ListPendingIssuesResponse
1739	(*ApproveIssueRequest)(nil),       // 21: ermite.ApproveIssueRequest
1740	(*ApproveIssueResponse)(nil),      // 22: ermite.ApproveIssueResponse
1741	(*RejectIssueRequest)(nil),        // 23: ermite.RejectIssueRequest
1742	(*RejectIssueResponse)(nil),       // 24: ermite.RejectIssueResponse
1743	(*timestamppb.Timestamp)(nil),     // 25: google.protobuf.Timestamp
1744	(MergeRequestState)(0),            // 26: ermite.MergeRequestState
1745	(*IssueEvent)(nil),                // 27: ermite.IssueEvent
1746}
1747var file_ermite_issue_proto_depIdxs = []int32{
1748	0,  // 0: ermite.Issue.state:type_name -> ermite.IssueState
1749	25, // 1: ermite.Issue.created_at:type_name -> google.protobuf.Timestamp
1750	25, // 2: ermite.Issue.updated_at:type_name -> google.protobuf.Timestamp
1751	26, // 3: ermite.IssueReference.state:type_name -> ermite.MergeRequestState
1752	25, // 4: ermite.IssueComment.created_at:type_name -> google.protobuf.Timestamp
1753	1,  // 5: ermite.CreateIssueResponse.issue:type_name -> ermite.Issue
1754	0,  // 6: ermite.ListIssuesRequest.state:type_name -> ermite.IssueState
1755	1,  // 7: ermite.ListIssuesResponse.issues:type_name -> ermite.Issue
1756	1,  // 8: ermite.GetIssueResponse.issue:type_name -> ermite.Issue
1757	3,  // 9: ermite.GetIssueResponse.comments:type_name -> ermite.IssueComment
1758	2,  // 10: ermite.GetIssueResponse.references:type_name -> ermite.IssueReference
1759	27, // 11: ermite.GetIssueResponse.events:type_name -> ermite.IssueEvent
1760	3,  // 12: ermite.AddIssueCommentResponse.comment:type_name -> ermite.IssueComment
1761	1,  // 13: ermite.CloseIssueResponse.issue:type_name -> ermite.Issue
1762	1,  // 14: ermite.ResolveIssueResponse.issue:type_name -> ermite.Issue
1763	1,  // 15: ermite.ReopenIssueResponse.issue:type_name -> ermite.Issue
1764	25, // 16: ermite.PendingIssue.created_at:type_name -> google.protobuf.Timestamp
1765	18, // 17: ermite.ListPendingIssuesResponse.issues:type_name -> ermite.PendingIssue
1766	1,  // 18: ermite.ApproveIssueResponse.issue:type_name -> ermite.Issue
1767	4,  // 19: ermite.IssueService.CreateIssue:input_type -> ermite.CreateIssueRequest
1768	6,  // 20: ermite.IssueService.ListIssues:input_type -> ermite.ListIssuesRequest
1769	8,  // 21: ermite.IssueService.GetIssue:input_type -> ermite.GetIssueRequest
1770	10, // 22: ermite.IssueService.AddIssueComment:input_type -> ermite.AddIssueCommentRequest
1771	12, // 23: ermite.IssueService.CloseIssue:input_type -> ermite.CloseIssueRequest
1772	14, // 24: ermite.IssueService.ResolveIssue:input_type -> ermite.ResolveIssueRequest
1773	16, // 25: ermite.IssueService.ReopenIssue:input_type -> ermite.ReopenIssueRequest
1774	19, // 26: ermite.IssueService.ListPendingIssues:input_type -> ermite.ListPendingIssuesRequest
1775	21, // 27: ermite.IssueService.ApproveIssue:input_type -> ermite.ApproveIssueRequest
1776	23, // 28: ermite.IssueService.RejectIssue:input_type -> ermite.RejectIssueRequest
1777	5,  // 29: ermite.IssueService.CreateIssue:output_type -> ermite.CreateIssueResponse
1778	7,  // 30: ermite.IssueService.ListIssues:output_type -> ermite.ListIssuesResponse
1779	9,  // 31: ermite.IssueService.GetIssue:output_type -> ermite.GetIssueResponse
1780	11, // 32: ermite.IssueService.AddIssueComment:output_type -> ermite.AddIssueCommentResponse
1781	13, // 33: ermite.IssueService.CloseIssue:output_type -> ermite.CloseIssueResponse
1782	15, // 34: ermite.IssueService.ResolveIssue:output_type -> ermite.ResolveIssueResponse
1783	17, // 35: ermite.IssueService.ReopenIssue:output_type -> ermite.ReopenIssueResponse
1784	20, // 36: ermite.IssueService.ListPendingIssues:output_type -> ermite.ListPendingIssuesResponse
1785	22, // 37: ermite.IssueService.ApproveIssue:output_type -> ermite.ApproveIssueResponse
1786	24, // 38: ermite.IssueService.RejectIssue:output_type -> ermite.RejectIssueResponse
1787	29, // [29:39] is the sub-list for method output_type
1788	19, // [19:29] is the sub-list for method input_type
1789	19, // [19:19] is the sub-list for extension type_name
1790	19, // [19:19] is the sub-list for extension extendee
1791	0,  // [0:19] is the sub-list for field type_name
1792}
1793
1794func init() { file_ermite_issue_proto_init() }
1795func file_ermite_issue_proto_init() {
1796	if File_ermite_issue_proto != nil {
1797		return
1798	}
1799	file_ermite_merge_request_proto_init()
1800	type x struct{}
1801	out := protoimpl.TypeBuilder{
1802		File: protoimpl.DescBuilder{
1803			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
1804			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_issue_proto_rawDesc), len(file_ermite_issue_proto_rawDesc)),
1805			NumEnums:      1,
1806			NumMessages:   24,
1807			NumExtensions: 0,
1808			NumServices:   1,
1809		},
1810		GoTypes:           file_ermite_issue_proto_goTypes,
1811		DependencyIndexes: file_ermite_issue_proto_depIdxs,
1812		EnumInfos:         file_ermite_issue_proto_enumTypes,
1813		MessageInfos:      file_ermite_issue_proto_msgTypes,
1814	}.Build()
1815	File_ermite_issue_proto = out.File
1816	file_ermite_issue_proto_goTypes = nil
1817	file_ermite_issue_proto_depIdxs = nil
1818}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 18

↑↓ moveenter openesc close