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/token.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// Scope is a permission carried by a token. The API knows scopes only; any
28// grouping into presets is a client concern.
29type Scope int32
30
31const (
32 // Not set. Rejected in requests, never returned by the server.
33 Scope_SCOPE_UNSPECIFIED Scope = 0
34 // SCOPE_REPO_READ allows reading private repositories (public ones need no
35 // token). Wire name: repo:read.
36 Scope_SCOPE_REPO_READ Scope = 1
37 // SCOPE_REPO_WRITE allows pushing and creating repositories. Wire name:
38 // repo:write.
39 Scope_SCOPE_REPO_WRITE Scope = 2
40 // SCOPE_REPO_ADMIN allows deleting a repository and changing its visibility,
41 // description or default branch. Wire name: repo:admin.
42 Scope_SCOPE_REPO_ADMIN Scope = 3
43 // SCOPE_MR_WRITE allows creating, commenting on and closing merge requests.
44 // Wire name: mr:write.
45 Scope_SCOPE_MR_WRITE Scope = 4
46 // SCOPE_MR_MERGE allows merging merge requests whose checks allow it. Wire name:
47 // mr:merge.
48 Scope_SCOPE_MR_MERGE Scope = 5
49 // SCOPE_CI_WRITE allows re-running or cancelling CI runs. Wire name:
50 // ci:write.
51 Scope_SCOPE_CI_WRITE Scope = 6
52 // SCOPE_SECRETS_WRITE allows managing secrets, variables and environments
53 // (SecretService, VariableService, EnvironmentService), reads included. A
54 // token limited to branches is refused them even with this scope. Wire name:
55 // secrets:write.
56 Scope_SCOPE_SECRETS_WRITE Scope = 7
57 // SCOPE_RUNNER_REGISTER allows registering a CI runner. Wire name:
58 // runner:register.
59 Scope_SCOPE_RUNNER_REGISTER Scope = 8
60 // SCOPE_TOKEN_ADMIN allows creating, listing and revoking tokens. Wire name:
61 // token:admin.
62 Scope_SCOPE_TOKEN_ADMIN Scope = 9
63 // SCOPE_MR_REVIEW allows setting a verdict (approve, changes requested) on
64 // merge request notes. Wire name: mr:review.
65 Scope_SCOPE_MR_REVIEW Scope = 10
66 // SCOPE_ISSUE_WRITE allows creating, commenting on, closing and reopening
67 // issues. Wire name: issue:write.
68 Scope_SCOPE_ISSUE_WRITE Scope = 11
69 // SCOPE_MR_FORCE_MERGE allows merging a merge request whatever its checks
70 // say (MergeMergeRequestRequest.ignore_checks). Wire name: mr:force-merge.
71 Scope_SCOPE_MR_FORCE_MERGE Scope = 12
72 // SCOPE_RELEASE_WRITE allows creating, editing and deleting releases and their assets.
73 // Wire name: release:write.
74 Scope_SCOPE_RELEASE_WRITE Scope = 13
75)
76
77// Enum value maps for Scope.
78var (
79 Scope_name = map[int32]string{
80 0: "SCOPE_UNSPECIFIED",
81 1: "SCOPE_REPO_READ",
82 2: "SCOPE_REPO_WRITE",
83 3: "SCOPE_REPO_ADMIN",
84 4: "SCOPE_MR_WRITE",
85 5: "SCOPE_MR_MERGE",
86 6: "SCOPE_CI_WRITE",
87 7: "SCOPE_SECRETS_WRITE",
88 8: "SCOPE_RUNNER_REGISTER",
89 9: "SCOPE_TOKEN_ADMIN",
90 10: "SCOPE_MR_REVIEW",
91 11: "SCOPE_ISSUE_WRITE",
92 12: "SCOPE_MR_FORCE_MERGE",
93 13: "SCOPE_RELEASE_WRITE",
94 }
95 Scope_value = map[string]int32{
96 "SCOPE_UNSPECIFIED": 0,
97 "SCOPE_REPO_READ": 1,
98 "SCOPE_REPO_WRITE": 2,
99 "SCOPE_REPO_ADMIN": 3,
100 "SCOPE_MR_WRITE": 4,
101 "SCOPE_MR_MERGE": 5,
102 "SCOPE_CI_WRITE": 6,
103 "SCOPE_SECRETS_WRITE": 7,
104 "SCOPE_RUNNER_REGISTER": 8,
105 "SCOPE_TOKEN_ADMIN": 9,
106 "SCOPE_MR_REVIEW": 10,
107 "SCOPE_ISSUE_WRITE": 11,
108 "SCOPE_MR_FORCE_MERGE": 12,
109 "SCOPE_RELEASE_WRITE": 13,
110 }
111)
112
113func (x Scope) Enum() *Scope {
114 p := new(Scope)
115 *p = x
116 return p
117}
118
119func (x Scope) String() string {
120 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
121}
122
123func (Scope) Descriptor() protoreflect.EnumDescriptor {
124 return file_ermite_token_proto_enumTypes[0].Descriptor()
125}
126
127func (Scope) Type() protoreflect.EnumType {
128 return &file_ermite_token_proto_enumTypes[0]
129}
130
131func (x Scope) Number() protoreflect.EnumNumber {
132 return protoreflect.EnumNumber(x)
133}
134
135// Deprecated: Use Scope.Descriptor instead.
136func (Scope) EnumDescriptor() ([]byte, []int) {
137 return file_ermite_token_proto_rawDescGZIP(), []int{0}
138}
139
140// Token describes a stored token. It never contains the secret nor its hash.
141type Token struct {
142 state protoimpl.MessageState `protogen:"open.v1"`
143 // Id identifies the token in ListTokens and RevokeToken. It is not the
144 // secret and cannot be used to authenticate.
145 Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
146 // Label is a human-readable name chosen at creation.
147 Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
148 // Scopes are the permissions of the token. Never empty.
149 Scopes []Scope `protobuf:"varint,3,rep,packed,name=scopes,proto3,enum=ermite.Scope" json:"scopes,omitempty"`
150 // Repos restricts the token to these repository names. Empty means every
151 // repository.
152 Repos []string `protobuf:"bytes,4,rep,name=repos,proto3" json:"repos,omitempty"`
153 // ExpiresAt is when the token stops working. Unset means it never expires.
154 ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
155 // CreatedAt is when the token was created.
156 CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
157 // LastUsedAt is when the token last authenticated a request. Unset if never
158 // used. It may lag behind the real time by a short delay.
159 LastUsedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_used_at,json=lastUsedAt,proto3" json:"last_used_at,omitempty"`
160 // BranchPrefixes limits the branches the token may write. Each prefix ends
161 // with "/" (for example "agent/claude/"). Empty means every branch. A limited
162 // token can push, force-push and delete only branches under its prefixes; it
163 // cannot push tags or other refs, create repositories, or merge into or
164 // delete a branch outside its prefixes.
165 BranchPrefixes []string `protobuf:"bytes,8,rep,name=branch_prefixes,json=branchPrefixes,proto3" json:"branch_prefixes,omitempty"`
166 unknownFields protoimpl.UnknownFields
167 sizeCache protoimpl.SizeCache
168}
169
170func (x *Token) Reset() {
171 *x = Token{}
172 mi := &file_ermite_token_proto_msgTypes[0]
173 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
174 ms.StoreMessageInfo(mi)
175}
176
177func (x *Token) String() string {
178 return protoimpl.X.MessageStringOf(x)
179}
180
181func (*Token) ProtoMessage() {}
182
183func (x *Token) ProtoReflect() protoreflect.Message {
184 mi := &file_ermite_token_proto_msgTypes[0]
185 if x != nil {
186 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
187 if ms.LoadMessageInfo() == nil {
188 ms.StoreMessageInfo(mi)
189 }
190 return ms
191 }
192 return mi.MessageOf(x)
193}
194
195// Deprecated: Use Token.ProtoReflect.Descriptor instead.
196func (*Token) Descriptor() ([]byte, []int) {
197 return file_ermite_token_proto_rawDescGZIP(), []int{0}
198}
199
200func (x *Token) GetId() string {
201 if x != nil {
202 return x.Id
203 }
204 return ""
205}
206
207func (x *Token) GetLabel() string {
208 if x != nil {
209 return x.Label
210 }
211 return ""
212}
213
214func (x *Token) GetScopes() []Scope {
215 if x != nil {
216 return x.Scopes
217 }
218 return nil
219}
220
221func (x *Token) GetRepos() []string {
222 if x != nil {
223 return x.Repos
224 }
225 return nil
226}
227
228func (x *Token) GetExpiresAt() *timestamppb.Timestamp {
229 if x != nil {
230 return x.ExpiresAt
231 }
232 return nil
233}
234
235func (x *Token) GetCreatedAt() *timestamppb.Timestamp {
236 if x != nil {
237 return x.CreatedAt
238 }
239 return nil
240}
241
242func (x *Token) GetLastUsedAt() *timestamppb.Timestamp {
243 if x != nil {
244 return x.LastUsedAt
245 }
246 return nil
247}
248
249func (x *Token) GetBranchPrefixes() []string {
250 if x != nil {
251 return x.BranchPrefixes
252 }
253 return nil
254}
255
256// CreateTokenRequest describes the token to create.
257type CreateTokenRequest struct {
258 state protoimpl.MessageState `protogen:"open.v1"`
259 // Label is a human-readable name, for example "laptop". Not required to be
260 // unique.
261 Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
262 // Scopes are the permissions to grant. At least one is required.
263 Scopes []Scope `protobuf:"varint,2,rep,packed,name=scopes,proto3,enum=ermite.Scope" json:"scopes,omitempty"`
264 // Repos restricts the token to these repository names. Empty means every
265 // repository.
266 Repos []string `protobuf:"bytes,3,rep,name=repos,proto3" json:"repos,omitempty"`
267 // ExpiresAt is when the token stops working. Unset means no expiry. It must
268 // be in the future.
269 ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
270 // BranchPrefixes limits the branches the token may write, for example
271 // "agent/claude/". Each prefix must end with "/" and be a valid branch name
272 // once the "/" is removed; at most 8 are allowed. Empty means every branch;
273 // a limited token cannot push tags or create repositories. A token that has
274 // prefixes can only create tokens whose prefixes each lie within its own.
275 // Fails with invalid_argument when a prefix is malformed.
276 BranchPrefixes []string `protobuf:"bytes,5,rep,name=branch_prefixes,json=branchPrefixes,proto3" json:"branch_prefixes,omitempty"`
277 unknownFields protoimpl.UnknownFields
278 sizeCache protoimpl.SizeCache
279}
280
281func (x *CreateTokenRequest) Reset() {
282 *x = CreateTokenRequest{}
283 mi := &file_ermite_token_proto_msgTypes[1]
284 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
285 ms.StoreMessageInfo(mi)
286}
287
288func (x *CreateTokenRequest) String() string {
289 return protoimpl.X.MessageStringOf(x)
290}
291
292func (*CreateTokenRequest) ProtoMessage() {}
293
294func (x *CreateTokenRequest) ProtoReflect() protoreflect.Message {
295 mi := &file_ermite_token_proto_msgTypes[1]
296 if x != nil {
297 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
298 if ms.LoadMessageInfo() == nil {
299 ms.StoreMessageInfo(mi)
300 }
301 return ms
302 }
303 return mi.MessageOf(x)
304}
305
306// Deprecated: Use CreateTokenRequest.ProtoReflect.Descriptor instead.
307func (*CreateTokenRequest) Descriptor() ([]byte, []int) {
308 return file_ermite_token_proto_rawDescGZIP(), []int{1}
309}
310
311func (x *CreateTokenRequest) GetLabel() string {
312 if x != nil {
313 return x.Label
314 }
315 return ""
316}
317
318func (x *CreateTokenRequest) GetScopes() []Scope {
319 if x != nil {
320 return x.Scopes
321 }
322 return nil
323}
324
325func (x *CreateTokenRequest) GetRepos() []string {
326 if x != nil {
327 return x.Repos
328 }
329 return nil
330}
331
332func (x *CreateTokenRequest) GetExpiresAt() *timestamppb.Timestamp {
333 if x != nil {
334 return x.ExpiresAt
335 }
336 return nil
337}
338
339func (x *CreateTokenRequest) GetBranchPrefixes() []string {
340 if x != nil {
341 return x.BranchPrefixes
342 }
343 return nil
344}
345
346// CreateTokenResponse holds the new token and its secret.
347type CreateTokenResponse struct {
348 state protoimpl.MessageState `protogen:"open.v1"`
349 // Token describes the created token.
350 Token *Token `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
351 // Secret is the bearer secret to present as "Authorization: Bearer <secret>".
352 // It is returned once and never stored in clear text by the server.
353 Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"`
354 unknownFields protoimpl.UnknownFields
355 sizeCache protoimpl.SizeCache
356}
357
358func (x *CreateTokenResponse) Reset() {
359 *x = CreateTokenResponse{}
360 mi := &file_ermite_token_proto_msgTypes[2]
361 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
362 ms.StoreMessageInfo(mi)
363}
364
365func (x *CreateTokenResponse) String() string {
366 return protoimpl.X.MessageStringOf(x)
367}
368
369func (*CreateTokenResponse) ProtoMessage() {}
370
371func (x *CreateTokenResponse) ProtoReflect() protoreflect.Message {
372 mi := &file_ermite_token_proto_msgTypes[2]
373 if x != nil {
374 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
375 if ms.LoadMessageInfo() == nil {
376 ms.StoreMessageInfo(mi)
377 }
378 return ms
379 }
380 return mi.MessageOf(x)
381}
382
383// Deprecated: Use CreateTokenResponse.ProtoReflect.Descriptor instead.
384func (*CreateTokenResponse) Descriptor() ([]byte, []int) {
385 return file_ermite_token_proto_rawDescGZIP(), []int{2}
386}
387
388func (x *CreateTokenResponse) GetToken() *Token {
389 if x != nil {
390 return x.Token
391 }
392 return nil
393}
394
395func (x *CreateTokenResponse) GetSecret() string {
396 if x != nil {
397 return x.Secret
398 }
399 return ""
400}
401
402// ListTokensRequest selects a page of tokens.
403type ListTokensRequest struct {
404 state protoimpl.MessageState `protogen:"open.v1"`
405 // PageSize is the maximum number of tokens to return. 0 means the server
406 // default; values above the server maximum are lowered to it.
407 PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
408 // PageToken is the next_page_token of a previous response. Empty for the
409 // first page.
410 PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
411 unknownFields protoimpl.UnknownFields
412 sizeCache protoimpl.SizeCache
413}
414
415func (x *ListTokensRequest) Reset() {
416 *x = ListTokensRequest{}
417 mi := &file_ermite_token_proto_msgTypes[3]
418 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
419 ms.StoreMessageInfo(mi)
420}
421
422func (x *ListTokensRequest) String() string {
423 return protoimpl.X.MessageStringOf(x)
424}
425
426func (*ListTokensRequest) ProtoMessage() {}
427
428func (x *ListTokensRequest) ProtoReflect() protoreflect.Message {
429 mi := &file_ermite_token_proto_msgTypes[3]
430 if x != nil {
431 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
432 if ms.LoadMessageInfo() == nil {
433 ms.StoreMessageInfo(mi)
434 }
435 return ms
436 }
437 return mi.MessageOf(x)
438}
439
440// Deprecated: Use ListTokensRequest.ProtoReflect.Descriptor instead.
441func (*ListTokensRequest) Descriptor() ([]byte, []int) {
442 return file_ermite_token_proto_rawDescGZIP(), []int{3}
443}
444
445func (x *ListTokensRequest) GetPageSize() int32 {
446 if x != nil {
447 return x.PageSize
448 }
449 return 0
450}
451
452func (x *ListTokensRequest) GetPageToken() string {
453 if x != nil {
454 return x.PageToken
455 }
456 return ""
457}
458
459// ListTokensResponse is one page of tokens.
460type ListTokensResponse struct {
461 state protoimpl.MessageState `protogen:"open.v1"`
462 // Tokens are the tokens of this page, newest first.
463 Tokens []*Token `protobuf:"bytes,1,rep,name=tokens,proto3" json:"tokens,omitempty"`
464 // NextPageToken is passed as page_token to get the next page. Empty when
465 // there is no next page.
466 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
467 unknownFields protoimpl.UnknownFields
468 sizeCache protoimpl.SizeCache
469}
470
471func (x *ListTokensResponse) Reset() {
472 *x = ListTokensResponse{}
473 mi := &file_ermite_token_proto_msgTypes[4]
474 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
475 ms.StoreMessageInfo(mi)
476}
477
478func (x *ListTokensResponse) String() string {
479 return protoimpl.X.MessageStringOf(x)
480}
481
482func (*ListTokensResponse) ProtoMessage() {}
483
484func (x *ListTokensResponse) ProtoReflect() protoreflect.Message {
485 mi := &file_ermite_token_proto_msgTypes[4]
486 if x != nil {
487 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
488 if ms.LoadMessageInfo() == nil {
489 ms.StoreMessageInfo(mi)
490 }
491 return ms
492 }
493 return mi.MessageOf(x)
494}
495
496// Deprecated: Use ListTokensResponse.ProtoReflect.Descriptor instead.
497func (*ListTokensResponse) Descriptor() ([]byte, []int) {
498 return file_ermite_token_proto_rawDescGZIP(), []int{4}
499}
500
501func (x *ListTokensResponse) GetTokens() []*Token {
502 if x != nil {
503 return x.Tokens
504 }
505 return nil
506}
507
508func (x *ListTokensResponse) GetNextPageToken() string {
509 if x != nil {
510 return x.NextPageToken
511 }
512 return ""
513}
514
515// RevokeTokenRequest names the token to revoke.
516type RevokeTokenRequest struct {
517 state protoimpl.MessageState `protogen:"open.v1"`
518 // Id is the Token.id to revoke.
519 Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
520 unknownFields protoimpl.UnknownFields
521 sizeCache protoimpl.SizeCache
522}
523
524func (x *RevokeTokenRequest) Reset() {
525 *x = RevokeTokenRequest{}
526 mi := &file_ermite_token_proto_msgTypes[5]
527 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
528 ms.StoreMessageInfo(mi)
529}
530
531func (x *RevokeTokenRequest) String() string {
532 return protoimpl.X.MessageStringOf(x)
533}
534
535func (*RevokeTokenRequest) ProtoMessage() {}
536
537func (x *RevokeTokenRequest) ProtoReflect() protoreflect.Message {
538 mi := &file_ermite_token_proto_msgTypes[5]
539 if x != nil {
540 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
541 if ms.LoadMessageInfo() == nil {
542 ms.StoreMessageInfo(mi)
543 }
544 return ms
545 }
546 return mi.MessageOf(x)
547}
548
549// Deprecated: Use RevokeTokenRequest.ProtoReflect.Descriptor instead.
550func (*RevokeTokenRequest) Descriptor() ([]byte, []int) {
551 return file_ermite_token_proto_rawDescGZIP(), []int{5}
552}
553
554func (x *RevokeTokenRequest) GetId() string {
555 if x != nil {
556 return x.Id
557 }
558 return ""
559}
560
561// RevokeTokenResponse is empty.
562type RevokeTokenResponse struct {
563 state protoimpl.MessageState `protogen:"open.v1"`
564 unknownFields protoimpl.UnknownFields
565 sizeCache protoimpl.SizeCache
566}
567
568func (x *RevokeTokenResponse) Reset() {
569 *x = RevokeTokenResponse{}
570 mi := &file_ermite_token_proto_msgTypes[6]
571 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
572 ms.StoreMessageInfo(mi)
573}
574
575func (x *RevokeTokenResponse) String() string {
576 return protoimpl.X.MessageStringOf(x)
577}
578
579func (*RevokeTokenResponse) ProtoMessage() {}
580
581func (x *RevokeTokenResponse) ProtoReflect() protoreflect.Message {
582 mi := &file_ermite_token_proto_msgTypes[6]
583 if x != nil {
584 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
585 if ms.LoadMessageInfo() == nil {
586 ms.StoreMessageInfo(mi)
587 }
588 return ms
589 }
590 return mi.MessageOf(x)
591}
592
593// Deprecated: Use RevokeTokenResponse.ProtoReflect.Descriptor instead.
594func (*RevokeTokenResponse) Descriptor() ([]byte, []int) {
595 return file_ermite_token_proto_rawDescGZIP(), []int{6}
596}
597
598var File_ermite_token_proto protoreflect.FileDescriptor
599
600const file_ermite_token_proto_rawDesc = "" +
601 "\n" +
602 "\x12ermite/token.proto\x12\x06ermite\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc7\x02\n" +
603 "\x05Token\x12\x0e\n" +
604 "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" +
605 "\x05label\x18\x02 \x01(\tR\x05label\x12%\n" +
606 "\x06scopes\x18\x03 \x03(\x0e2\r.ermite.ScopeR\x06scopes\x12\x14\n" +
607 "\x05repos\x18\x04 \x03(\tR\x05repos\x129\n" +
608 "\n" +
609 "expires_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x129\n" +
610 "\n" +
611 "created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12<\n" +
612 "\flast_used_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\n" +
613 "lastUsedAt\x12'\n" +
614 "\x0fbranch_prefixes\x18\b \x03(\tR\x0ebranchPrefixes\"\xcb\x01\n" +
615 "\x12CreateTokenRequest\x12\x14\n" +
616 "\x05label\x18\x01 \x01(\tR\x05label\x12%\n" +
617 "\x06scopes\x18\x02 \x03(\x0e2\r.ermite.ScopeR\x06scopes\x12\x14\n" +
618 "\x05repos\x18\x03 \x03(\tR\x05repos\x129\n" +
619 "\n" +
620 "expires_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x12'\n" +
621 "\x0fbranch_prefixes\x18\x05 \x03(\tR\x0ebranchPrefixes\"R\n" +
622 "\x13CreateTokenResponse\x12#\n" +
623 "\x05token\x18\x01 \x01(\v2\r.ermite.TokenR\x05token\x12\x16\n" +
624 "\x06secret\x18\x02 \x01(\tR\x06secret\"O\n" +
625 "\x11ListTokensRequest\x12\x1b\n" +
626 "\tpage_size\x18\x01 \x01(\x05R\bpageSize\x12\x1d\n" +
627 "\n" +
628 "page_token\x18\x02 \x01(\tR\tpageToken\"c\n" +
629 "\x12ListTokensResponse\x12%\n" +
630 "\x06tokens\x18\x01 \x03(\v2\r.ermite.TokenR\x06tokens\x12&\n" +
631 "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"$\n" +
632 "\x12RevokeTokenRequest\x12\x0e\n" +
633 "\x02id\x18\x01 \x01(\tR\x02id\"\x15\n" +
634 "\x13RevokeTokenResponse*\xc5\x02\n" +
635 "\x05Scope\x12\x15\n" +
636 "\x11SCOPE_UNSPECIFIED\x10\x00\x12\x13\n" +
637 "\x0fSCOPE_REPO_READ\x10\x01\x12\x14\n" +
638 "\x10SCOPE_REPO_WRITE\x10\x02\x12\x14\n" +
639 "\x10SCOPE_REPO_ADMIN\x10\x03\x12\x12\n" +
640 "\x0eSCOPE_MR_WRITE\x10\x04\x12\x12\n" +
641 "\x0eSCOPE_MR_MERGE\x10\x05\x12\x12\n" +
642 "\x0eSCOPE_CI_WRITE\x10\x06\x12\x17\n" +
643 "\x13SCOPE_SECRETS_WRITE\x10\a\x12\x19\n" +
644 "\x15SCOPE_RUNNER_REGISTER\x10\b\x12\x15\n" +
645 "\x11SCOPE_TOKEN_ADMIN\x10\t\x12\x13\n" +
646 "\x0fSCOPE_MR_REVIEW\x10\n" +
647 "\x12\x15\n" +
648 "\x11SCOPE_ISSUE_WRITE\x10\v\x12\x18\n" +
649 "\x14SCOPE_MR_FORCE_MERGE\x10\f\x12\x17\n" +
650 "\x13SCOPE_RELEASE_WRITE\x10\r2\xe3\x01\n" +
651 "\fTokenService\x12F\n" +
652 "\vCreateToken\x12\x1a.ermite.CreateTokenRequest\x1a\x1b.ermite.CreateTokenResponse\x12C\n" +
653 "\n" +
654 "ListTokens\x12\x19.ermite.ListTokensRequest\x1a\x1a.ermite.ListTokensResponse\x12F\n" +
655 "\vRevokeToken\x12\x1a.ermite.RevokeTokenRequest\x1a\x1b.ermite.RevokeTokenResponseBq\n" +
656 "\n" +
657 "com.ermiteB\n" +
658 "TokenProtoP\x01Z\x1fbnema.dev/ermite-api/gen/ermite\xa2\x02\x03EXX\xaa\x02\x06Ermite\xca\x02\x06Ermite\xe2\x02\x12Ermite\\GPBMetadata\xea\x02\x06Ermiteb\x06proto3"
659
660var (
661 file_ermite_token_proto_rawDescOnce sync.Once
662 file_ermite_token_proto_rawDescData []byte
663)
664
665func file_ermite_token_proto_rawDescGZIP() []byte {
666 file_ermite_token_proto_rawDescOnce.Do(func() {
667 file_ermite_token_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ermite_token_proto_rawDesc), len(file_ermite_token_proto_rawDesc)))
668 })
669 return file_ermite_token_proto_rawDescData
670}
671
672var file_ermite_token_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
673var file_ermite_token_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
674var file_ermite_token_proto_goTypes = []any{
675 (Scope)(0), // 0: ermite.Scope
676 (*Token)(nil), // 1: ermite.Token
677 (*CreateTokenRequest)(nil), // 2: ermite.CreateTokenRequest
678 (*CreateTokenResponse)(nil), // 3: ermite.CreateTokenResponse
679 (*ListTokensRequest)(nil), // 4: ermite.ListTokensRequest
680 (*ListTokensResponse)(nil), // 5: ermite.ListTokensResponse
681 (*RevokeTokenRequest)(nil), // 6: ermite.RevokeTokenRequest
682 (*RevokeTokenResponse)(nil), // 7: ermite.RevokeTokenResponse
683 (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp
684}
685var file_ermite_token_proto_depIdxs = []int32{
686 0, // 0: ermite.Token.scopes:type_name -> ermite.Scope
687 8, // 1: ermite.Token.expires_at:type_name -> google.protobuf.Timestamp
688 8, // 2: ermite.Token.created_at:type_name -> google.protobuf.Timestamp
689 8, // 3: ermite.Token.last_used_at:type_name -> google.protobuf.Timestamp
690 0, // 4: ermite.CreateTokenRequest.scopes:type_name -> ermite.Scope
691 8, // 5: ermite.CreateTokenRequest.expires_at:type_name -> google.protobuf.Timestamp
692 1, // 6: ermite.CreateTokenResponse.token:type_name -> ermite.Token
693 1, // 7: ermite.ListTokensResponse.tokens:type_name -> ermite.Token
694 2, // 8: ermite.TokenService.CreateToken:input_type -> ermite.CreateTokenRequest
695 4, // 9: ermite.TokenService.ListTokens:input_type -> ermite.ListTokensRequest
696 6, // 10: ermite.TokenService.RevokeToken:input_type -> ermite.RevokeTokenRequest
697 3, // 11: ermite.TokenService.CreateToken:output_type -> ermite.CreateTokenResponse
698 5, // 12: ermite.TokenService.ListTokens:output_type -> ermite.ListTokensResponse
699 7, // 13: ermite.TokenService.RevokeToken:output_type -> ermite.RevokeTokenResponse
700 11, // [11:14] is the sub-list for method output_type
701 8, // [8:11] is the sub-list for method input_type
702 8, // [8:8] is the sub-list for extension type_name
703 8, // [8:8] is the sub-list for extension extendee
704 0, // [0:8] is the sub-list for field type_name
705}
706
707func init() { file_ermite_token_proto_init() }
708func file_ermite_token_proto_init() {
709 if File_ermite_token_proto != nil {
710 return
711 }
712 type x struct{}
713 out := protoimpl.TypeBuilder{
714 File: protoimpl.DescBuilder{
715 GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
716 RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_token_proto_rawDesc), len(file_ermite_token_proto_rawDesc)),
717 NumEnums: 1,
718 NumMessages: 7,
719 NumExtensions: 0,
720 NumServices: 1,
721 },
722 GoTypes: file_ermite_token_proto_goTypes,
723 DependencyIndexes: file_ermite_token_proto_depIdxs,
724 EnumInfos: file_ermite_token_proto_enumTypes,
725 MessageInfos: file_ermite_token_proto_msgTypes,
726 }.Build()
727 File_ermite_token_proto = out.File
728 file_ermite_token_proto_goTypes = nil
729 file_ermite_token_proto_depIdxs = nil
730}