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