diff --git a/doc/index.html b/doc/index.html
index 42de6145..c6a38aef 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -4569,6 +4569,14 @@
TODO: decide if we need this map from machine.uuid->role, we could instead use the subject in the token instead
+
+ | refreshed_at |
+ google.protobuf.Timestamp |
+ |
+ RefreshedAt indicates the timestamp when this token was refreshed.
+this is only set on tokens which have been created during a refresh call. |
+
+
diff --git a/go/metalstack/api/v2/token.pb.go b/go/metalstack/api/v2/token.pb.go
index 9e1f756f..c209c228 100644
--- a/go/metalstack/api/v2/token.pb.go
+++ b/go/metalstack/api/v2/token.pb.go
@@ -117,7 +117,10 @@ type Token struct {
InfraRole *InfraRole `protobuf:"varint,12,opt,name=infra_role,json=infraRole,proto3,enum=metalstack.api.v2.InfraRole,oneof" json:"infra_role,omitempty"`
// MachineRoles associates a machine uuid with the corresponding role of the token owner
// TODO: decide if we need this map from machine.uuid->role, we could instead use the subject in the token instead
- MachineRoles map[string]MachineRole `protobuf:"bytes,13,rep,name=machine_roles,json=machineRoles,proto3" json:"machine_roles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=metalstack.api.v2.MachineRole"`
+ MachineRoles map[string]MachineRole `protobuf:"bytes,13,rep,name=machine_roles,json=machineRoles,proto3" json:"machine_roles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=metalstack.api.v2.MachineRole"`
+ // RefreshedAt indicates the timestamp when this token was refreshed.
+ // this is only set on tokens which have been created during a refresh call.
+ RefreshedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=refreshed_at,json=refreshedAt,proto3" json:"refreshed_at,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -243,6 +246,13 @@ func (x *Token) GetMachineRoles() map[string]MachineRole {
return nil
}
+func (x *Token) GetRefreshedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.RefreshedAt
+ }
+ return nil
+}
+
// TokenServiceCreateRequest is the request payload to create a token
type TokenServiceCreateRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -1621,7 +1631,8 @@ var File_metalstack_api_v2_token_proto protoreflect.FileDescriptor
const file_metalstack_api_v2_token_proto_rawDesc = "" +
"\n" +
- "\x1dmetalstack/api/v2/token.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xc2\t\n" +
+ "\x1dmetalstack/api/v2/token.proto\x12\x11metalstack.api.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\x81\n" +
+ "\n" +
"\x05Token\x12\x1c\n" +
"\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1f\n" +
"\x04user\x18\x02 \x01(\tB\v\xbaH\br\x06\xf8\xb3\xae\xb1\x02\x01R\x04user\x12+\n" +
@@ -1639,7 +1650,8 @@ const file_metalstack_api_v2_token_proto_rawDesc = "" +
"admin_role\x18\v \x01(\x0e2\x1c.metalstack.api.v2.AdminRoleB\b\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x12J\n" +
"\n" +
"infra_role\x18\f \x01(\x0e2\x1c.metalstack.api.v2.InfraRoleB\b\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tinfraRole\x88\x01\x01\x12j\n" +
- "\rmachine_roles\x18\r \x03(\v2*.metalstack.api.v2.Token.MachineRolesEntryB\x19\xbaH\x16\x9a\x01\x13\xc0\x95\xb8\xb1\x02\x01ؕ\xb8\xb1\x02\x01*\x05\x82\x01\x02\x10\x01R\fmachineRoles\x1a_\n" +
+ "\rmachine_roles\x18\r \x03(\v2*.metalstack.api.v2.Token.MachineRolesEntryB\x19\xbaH\x16\x9a\x01\x13\xc0\x95\xb8\xb1\x02\x01ؕ\xb8\xb1\x02\x01*\x05\x82\x01\x02\x10\x01R\fmachineRoles\x12=\n" +
+ "\frefreshed_at\x18\x0e \x01(\v2\x1a.google.protobuf.TimestampR\vrefreshedAt\x1a_\n" +
"\x11ProjectRolesEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x124\n" +
"\x05value\x18\x02 \x01(\x0e2\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x028\x01\x1a]\n" +
@@ -1849,63 +1861,64 @@ var file_metalstack_api_v2_token_proto_depIdxs = []int32{
35, // 7: metalstack.api.v2.Token.admin_role:type_name -> metalstack.api.v2.AdminRole
36, // 8: metalstack.api.v2.Token.infra_role:type_name -> metalstack.api.v2.InfraRole
26, // 9: metalstack.api.v2.Token.machine_roles:type_name -> metalstack.api.v2.Token.MachineRolesEntry
- 4, // 10: metalstack.api.v2.TokenServiceCreateRequest.permissions:type_name -> metalstack.api.v2.PermissionsByVisibility
- 37, // 11: metalstack.api.v2.TokenServiceCreateRequest.expires:type_name -> google.protobuf.Duration
- 27, // 12: metalstack.api.v2.TokenServiceCreateRequest.project_roles:type_name -> metalstack.api.v2.TokenServiceCreateRequest.ProjectRolesEntry
- 28, // 13: metalstack.api.v2.TokenServiceCreateRequest.tenant_roles:type_name -> metalstack.api.v2.TokenServiceCreateRequest.TenantRolesEntry
- 35, // 14: metalstack.api.v2.TokenServiceCreateRequest.admin_role:type_name -> metalstack.api.v2.AdminRole
- 36, // 15: metalstack.api.v2.TokenServiceCreateRequest.infra_role:type_name -> metalstack.api.v2.InfraRole
- 29, // 16: metalstack.api.v2.TokenServiceCreateRequest.machine_roles:type_name -> metalstack.api.v2.TokenServiceCreateRequest.MachineRolesEntry
- 38, // 17: metalstack.api.v2.TokenServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
- 5, // 18: metalstack.api.v2.PermissionsByVisibility.public:type_name -> metalstack.api.v2.PublicPermissions
- 6, // 19: metalstack.api.v2.PermissionsByVisibility.self:type_name -> metalstack.api.v2.SelfPermissions
- 7, // 20: metalstack.api.v2.PermissionsByVisibility.project:type_name -> metalstack.api.v2.ProjectPermissions
- 8, // 21: metalstack.api.v2.PermissionsByVisibility.tenant:type_name -> metalstack.api.v2.TenantPermissions
- 9, // 22: metalstack.api.v2.PermissionsByVisibility.admin:type_name -> metalstack.api.v2.AdminPermissions
- 10, // 23: metalstack.api.v2.PermissionsByVisibility.machine:type_name -> metalstack.api.v2.MachinePermissions
- 11, // 24: metalstack.api.v2.PermissionsByVisibility.infra:type_name -> metalstack.api.v2.InfraPermissions
- 1, // 25: metalstack.api.v2.TokenServiceCreateResponse.token:type_name -> metalstack.api.v2.Token
- 23, // 26: metalstack.api.v2.TokenServiceListRequest.query:type_name -> metalstack.api.v2.TokenQuery
- 1, // 27: metalstack.api.v2.TokenServiceListResponse.tokens:type_name -> metalstack.api.v2.Token
- 39, // 28: metalstack.api.v2.TokenServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
- 4, // 29: metalstack.api.v2.TokenServiceUpdateRequest.permissions:type_name -> metalstack.api.v2.PermissionsByVisibility
- 30, // 30: metalstack.api.v2.TokenServiceUpdateRequest.project_roles:type_name -> metalstack.api.v2.TokenServiceUpdateRequest.ProjectRolesEntry
- 31, // 31: metalstack.api.v2.TokenServiceUpdateRequest.tenant_roles:type_name -> metalstack.api.v2.TokenServiceUpdateRequest.TenantRolesEntry
- 35, // 32: metalstack.api.v2.TokenServiceUpdateRequest.admin_role:type_name -> metalstack.api.v2.AdminRole
- 36, // 33: metalstack.api.v2.TokenServiceUpdateRequest.infra_role:type_name -> metalstack.api.v2.InfraRole
- 32, // 34: metalstack.api.v2.TokenServiceUpdateRequest.machine_roles:type_name -> metalstack.api.v2.TokenServiceUpdateRequest.MachineRolesEntry
- 40, // 35: metalstack.api.v2.TokenServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
- 1, // 36: metalstack.api.v2.TokenServiceUpdateResponse.token:type_name -> metalstack.api.v2.Token
- 1, // 37: metalstack.api.v2.TokenServiceGetResponse.token:type_name -> metalstack.api.v2.Token
- 1, // 38: metalstack.api.v2.TokenServiceRefreshResponse.token:type_name -> metalstack.api.v2.Token
- 38, // 39: metalstack.api.v2.TokenQuery.labels:type_name -> metalstack.api.v2.Labels
- 0, // 40: metalstack.api.v2.TokenQuery.token_type:type_name -> metalstack.api.v2.TokenType
- 41, // 41: metalstack.api.v2.Token.ProjectRolesEntry.value:type_name -> metalstack.api.v2.ProjectRole
- 42, // 42: metalstack.api.v2.Token.TenantRolesEntry.value:type_name -> metalstack.api.v2.TenantRole
- 43, // 43: metalstack.api.v2.Token.MachineRolesEntry.value:type_name -> metalstack.api.v2.MachineRole
- 41, // 44: metalstack.api.v2.TokenServiceCreateRequest.ProjectRolesEntry.value:type_name -> metalstack.api.v2.ProjectRole
- 42, // 45: metalstack.api.v2.TokenServiceCreateRequest.TenantRolesEntry.value:type_name -> metalstack.api.v2.TenantRole
- 43, // 46: metalstack.api.v2.TokenServiceCreateRequest.MachineRolesEntry.value:type_name -> metalstack.api.v2.MachineRole
- 41, // 47: metalstack.api.v2.TokenServiceUpdateRequest.ProjectRolesEntry.value:type_name -> metalstack.api.v2.ProjectRole
- 42, // 48: metalstack.api.v2.TokenServiceUpdateRequest.TenantRolesEntry.value:type_name -> metalstack.api.v2.TenantRole
- 43, // 49: metalstack.api.v2.TokenServiceUpdateRequest.MachineRolesEntry.value:type_name -> metalstack.api.v2.MachineRole
- 19, // 50: metalstack.api.v2.TokenService.Get:input_type -> metalstack.api.v2.TokenServiceGetRequest
- 2, // 51: metalstack.api.v2.TokenService.Create:input_type -> metalstack.api.v2.TokenServiceCreateRequest
- 17, // 52: metalstack.api.v2.TokenService.Update:input_type -> metalstack.api.v2.TokenServiceUpdateRequest
- 13, // 53: metalstack.api.v2.TokenService.List:input_type -> metalstack.api.v2.TokenServiceListRequest
- 15, // 54: metalstack.api.v2.TokenService.Revoke:input_type -> metalstack.api.v2.TokenServiceRevokeRequest
- 21, // 55: metalstack.api.v2.TokenService.Refresh:input_type -> metalstack.api.v2.TokenServiceRefreshRequest
- 20, // 56: metalstack.api.v2.TokenService.Get:output_type -> metalstack.api.v2.TokenServiceGetResponse
- 12, // 57: metalstack.api.v2.TokenService.Create:output_type -> metalstack.api.v2.TokenServiceCreateResponse
- 18, // 58: metalstack.api.v2.TokenService.Update:output_type -> metalstack.api.v2.TokenServiceUpdateResponse
- 14, // 59: metalstack.api.v2.TokenService.List:output_type -> metalstack.api.v2.TokenServiceListResponse
- 16, // 60: metalstack.api.v2.TokenService.Revoke:output_type -> metalstack.api.v2.TokenServiceRevokeResponse
- 22, // 61: metalstack.api.v2.TokenService.Refresh:output_type -> metalstack.api.v2.TokenServiceRefreshResponse
- 56, // [56:62] is the sub-list for method output_type
- 50, // [50:56] is the sub-list for method input_type
- 50, // [50:50] is the sub-list for extension type_name
- 50, // [50:50] is the sub-list for extension extendee
- 0, // [0:50] is the sub-list for field type_name
+ 34, // 10: metalstack.api.v2.Token.refreshed_at:type_name -> google.protobuf.Timestamp
+ 4, // 11: metalstack.api.v2.TokenServiceCreateRequest.permissions:type_name -> metalstack.api.v2.PermissionsByVisibility
+ 37, // 12: metalstack.api.v2.TokenServiceCreateRequest.expires:type_name -> google.protobuf.Duration
+ 27, // 13: metalstack.api.v2.TokenServiceCreateRequest.project_roles:type_name -> metalstack.api.v2.TokenServiceCreateRequest.ProjectRolesEntry
+ 28, // 14: metalstack.api.v2.TokenServiceCreateRequest.tenant_roles:type_name -> metalstack.api.v2.TokenServiceCreateRequest.TenantRolesEntry
+ 35, // 15: metalstack.api.v2.TokenServiceCreateRequest.admin_role:type_name -> metalstack.api.v2.AdminRole
+ 36, // 16: metalstack.api.v2.TokenServiceCreateRequest.infra_role:type_name -> metalstack.api.v2.InfraRole
+ 29, // 17: metalstack.api.v2.TokenServiceCreateRequest.machine_roles:type_name -> metalstack.api.v2.TokenServiceCreateRequest.MachineRolesEntry
+ 38, // 18: metalstack.api.v2.TokenServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 5, // 19: metalstack.api.v2.PermissionsByVisibility.public:type_name -> metalstack.api.v2.PublicPermissions
+ 6, // 20: metalstack.api.v2.PermissionsByVisibility.self:type_name -> metalstack.api.v2.SelfPermissions
+ 7, // 21: metalstack.api.v2.PermissionsByVisibility.project:type_name -> metalstack.api.v2.ProjectPermissions
+ 8, // 22: metalstack.api.v2.PermissionsByVisibility.tenant:type_name -> metalstack.api.v2.TenantPermissions
+ 9, // 23: metalstack.api.v2.PermissionsByVisibility.admin:type_name -> metalstack.api.v2.AdminPermissions
+ 10, // 24: metalstack.api.v2.PermissionsByVisibility.machine:type_name -> metalstack.api.v2.MachinePermissions
+ 11, // 25: metalstack.api.v2.PermissionsByVisibility.infra:type_name -> metalstack.api.v2.InfraPermissions
+ 1, // 26: metalstack.api.v2.TokenServiceCreateResponse.token:type_name -> metalstack.api.v2.Token
+ 23, // 27: metalstack.api.v2.TokenServiceListRequest.query:type_name -> metalstack.api.v2.TokenQuery
+ 1, // 28: metalstack.api.v2.TokenServiceListResponse.tokens:type_name -> metalstack.api.v2.Token
+ 39, // 29: metalstack.api.v2.TokenServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 4, // 30: metalstack.api.v2.TokenServiceUpdateRequest.permissions:type_name -> metalstack.api.v2.PermissionsByVisibility
+ 30, // 31: metalstack.api.v2.TokenServiceUpdateRequest.project_roles:type_name -> metalstack.api.v2.TokenServiceUpdateRequest.ProjectRolesEntry
+ 31, // 32: metalstack.api.v2.TokenServiceUpdateRequest.tenant_roles:type_name -> metalstack.api.v2.TokenServiceUpdateRequest.TenantRolesEntry
+ 35, // 33: metalstack.api.v2.TokenServiceUpdateRequest.admin_role:type_name -> metalstack.api.v2.AdminRole
+ 36, // 34: metalstack.api.v2.TokenServiceUpdateRequest.infra_role:type_name -> metalstack.api.v2.InfraRole
+ 32, // 35: metalstack.api.v2.TokenServiceUpdateRequest.machine_roles:type_name -> metalstack.api.v2.TokenServiceUpdateRequest.MachineRolesEntry
+ 40, // 36: metalstack.api.v2.TokenServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
+ 1, // 37: metalstack.api.v2.TokenServiceUpdateResponse.token:type_name -> metalstack.api.v2.Token
+ 1, // 38: metalstack.api.v2.TokenServiceGetResponse.token:type_name -> metalstack.api.v2.Token
+ 1, // 39: metalstack.api.v2.TokenServiceRefreshResponse.token:type_name -> metalstack.api.v2.Token
+ 38, // 40: metalstack.api.v2.TokenQuery.labels:type_name -> metalstack.api.v2.Labels
+ 0, // 41: metalstack.api.v2.TokenQuery.token_type:type_name -> metalstack.api.v2.TokenType
+ 41, // 42: metalstack.api.v2.Token.ProjectRolesEntry.value:type_name -> metalstack.api.v2.ProjectRole
+ 42, // 43: metalstack.api.v2.Token.TenantRolesEntry.value:type_name -> metalstack.api.v2.TenantRole
+ 43, // 44: metalstack.api.v2.Token.MachineRolesEntry.value:type_name -> metalstack.api.v2.MachineRole
+ 41, // 45: metalstack.api.v2.TokenServiceCreateRequest.ProjectRolesEntry.value:type_name -> metalstack.api.v2.ProjectRole
+ 42, // 46: metalstack.api.v2.TokenServiceCreateRequest.TenantRolesEntry.value:type_name -> metalstack.api.v2.TenantRole
+ 43, // 47: metalstack.api.v2.TokenServiceCreateRequest.MachineRolesEntry.value:type_name -> metalstack.api.v2.MachineRole
+ 41, // 48: metalstack.api.v2.TokenServiceUpdateRequest.ProjectRolesEntry.value:type_name -> metalstack.api.v2.ProjectRole
+ 42, // 49: metalstack.api.v2.TokenServiceUpdateRequest.TenantRolesEntry.value:type_name -> metalstack.api.v2.TenantRole
+ 43, // 50: metalstack.api.v2.TokenServiceUpdateRequest.MachineRolesEntry.value:type_name -> metalstack.api.v2.MachineRole
+ 19, // 51: metalstack.api.v2.TokenService.Get:input_type -> metalstack.api.v2.TokenServiceGetRequest
+ 2, // 52: metalstack.api.v2.TokenService.Create:input_type -> metalstack.api.v2.TokenServiceCreateRequest
+ 17, // 53: metalstack.api.v2.TokenService.Update:input_type -> metalstack.api.v2.TokenServiceUpdateRequest
+ 13, // 54: metalstack.api.v2.TokenService.List:input_type -> metalstack.api.v2.TokenServiceListRequest
+ 15, // 55: metalstack.api.v2.TokenService.Revoke:input_type -> metalstack.api.v2.TokenServiceRevokeRequest
+ 21, // 56: metalstack.api.v2.TokenService.Refresh:input_type -> metalstack.api.v2.TokenServiceRefreshRequest
+ 20, // 57: metalstack.api.v2.TokenService.Get:output_type -> metalstack.api.v2.TokenServiceGetResponse
+ 12, // 58: metalstack.api.v2.TokenService.Create:output_type -> metalstack.api.v2.TokenServiceCreateResponse
+ 18, // 59: metalstack.api.v2.TokenService.Update:output_type -> metalstack.api.v2.TokenServiceUpdateResponse
+ 14, // 60: metalstack.api.v2.TokenService.List:output_type -> metalstack.api.v2.TokenServiceListResponse
+ 16, // 61: metalstack.api.v2.TokenService.Revoke:output_type -> metalstack.api.v2.TokenServiceRevokeResponse
+ 22, // 62: metalstack.api.v2.TokenService.Refresh:output_type -> metalstack.api.v2.TokenServiceRefreshResponse
+ 57, // [57:63] is the sub-list for method output_type
+ 51, // [51:57] is the sub-list for method input_type
+ 51, // [51:51] is the sub-list for extension type_name
+ 51, // [51:51] is the sub-list for extension extendee
+ 0, // [0:51] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_token_proto_init() }
diff --git a/js/metalstack/api/v2/token_pb.d.ts b/js/metalstack/api/v2/token_pb.d.ts
index 971d567e..d8eea489 100644
--- a/js/metalstack/api/v2/token_pb.d.ts
+++ b/js/metalstack/api/v2/token_pb.d.ts
@@ -110,6 +110,13 @@ export type Token = Message<"metalstack.api.v2.Token"> & {
machineRoles: {
[key: string]: MachineRole;
};
+ /**
+ * RefreshedAt indicates the timestamp when this token was refreshed.
+ * this is only set on tokens which have been created during a refresh call.
+ *
+ * @generated from field: google.protobuf.Timestamp refreshed_at = 14;
+ */
+ refreshedAt?: Timestamp | undefined;
};
/**
* Describes the message metalstack.api.v2.Token.
diff --git a/js/metalstack/api/v2/token_pb.js b/js/metalstack/api/v2/token_pb.js
index ffe492ea..63dad515 100644
--- a/js/metalstack/api/v2/token_pb.js
+++ b/js/metalstack/api/v2/token_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
/**
* Describes the file metalstack/api/v2/token.proto.
*/
-export const file_metalstack_api_v2_token = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi90b2tlbi5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIilQgKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKBHVzZXIYAiABKAlCC7pICHIG+LOusQIBEiUKBG1ldGEYAyABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARJDCgtwZXJtaXNzaW9ucxgFIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb25CCbpIBpIBAxD0AxIrCgdleHBpcmVzGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglpc3N1ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKCnRva2VuX3R5cGUYCCABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblR5cGVCCLpIBYIBAhABElwKDXByb2plY3Rfcm9sZXMYCSADKAsyKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5Qcm9qZWN0Um9sZXNFbnRyeUIZukgWmgETwJW4sQIByJW4sQIBKgWCAQIQARJaCgx0ZW5hbnRfcm9sZXMYCiADKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5UZW5hbnRSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHQlbixAgEqBYIBAhABEj8KCmFkbWluX3JvbGUYCyABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSACIAQESPwoKaW5mcmFfcm9sZRgMIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAYgBARJcCg1tYWNoaW5lX3JvbGVzGA0gAygLMioubWV0YWxzdGFjay5hcGkudjIuVG9rZW4uTWFjaGluZVJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdiVuLECASoFggECEAEaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAEaUwoRTWFjaGluZVJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJvbGU6AjgBQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIuQHChlUb2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0EiAKC2Rlc2NyaXB0aW9uGAEgASgJQgu6SAhyBsizrrECARJJCgtwZXJtaXNzaW9ucxgCIAMoCzIqLm1ldGFsc3RhY2suYXBpLnYyLlBlcm1pc3Npb25zQnlWaXNpYmlsaXR5Qgi6SAWSAQIQZBI+CgdleHBpcmVzGAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQhK6SA+qAQwaBQiB54QPMgMI2AQScAoNcHJvamVjdF9yb2xlcxgEIAMoCzI+Lm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QuUHJvamVjdFJvbGVzRW50cnlCGbpIFpoBE8CVuLECAciVuLECASoFggECEAESbgoMdGVuYW50X3JvbGVzGAUgAygLMj0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5UZW5hbnRSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHQlbixAgEqBYIBAhABEj8KCmFkbWluX3JvbGUYBiABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSACIAQESPwoKaW5mcmFfcm9sZRgHIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAYgBARJwCg1tYWNoaW5lX3JvbGVzGAggAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5NYWNoaW5lUm9sZXNFbnRyeUIZukgWmgETwJW4sQIB2JW4sQIBKgWCAQIQARIpCgZsYWJlbHMYCSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAEaUwoRTWFjaGluZVJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJvbGU6AjgBQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIkkKEE1ldGhvZFBlcm1pc3Npb24SGQoHc3ViamVjdBgBIAEoCUIIukgFcgMYgAISGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIqsDChdQZXJtaXNzaW9uc0J5VmlzaWJpbGl0eRI2CgZwdWJsaWMYASABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5QdWJsaWNQZXJtaXNzaW9uc0gAEjIKBHNlbGYYAiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5TZWxmUGVybWlzc2lvbnNIABI4Cgdwcm9qZWN0GAMgASgLMiUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFBlcm1pc3Npb25zSAASNgoGdGVuYW50GAQgASgLMiQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50UGVybWlzc2lvbnNIABI0CgVhZG1pbhgFIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUGVybWlzc2lvbnNIABI4CgdtYWNoaW5lGAYgASgLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBlcm1pc3Npb25zSAASNAoFaW5mcmEYByABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVBlcm1pc3Npb25zSABCDAoKdmlzaWJpbGl0eSIvChFQdWJsaWNQZXJtaXNzaW9ucxIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiLQoPU2VsZlBlcm1pc3Npb25zEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyJOChJQcm9qZWN0UGVybWlzc2lvbnMSHAoHcHJvamVjdBgBIAEoCUILukgIcgagtK6xAgESGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIksKEVRlbmFudFBlcm1pc3Npb25zEhoKBWxvZ2luGAEgASgJQgu6SAhyBpi0rrECARIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiLgoQQWRtaW5QZXJtaXNzaW9ucxIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiSwoSTWFjaGluZVBlcm1pc3Npb25zEhkKBHV1aWQYASABKAlCC7pICHIGqLSusQIBEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyIuChBJbmZyYVBlcm1pc3Npb25zEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyJVChpUb2tlblNlcnZpY2VDcmVhdGVSZXNwb25zZRInCgV0b2tlbhgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuEg4KBnNlY3JldBgCIAEoCSJHChdUb2tlblNlcnZpY2VMaXN0UmVxdWVzdBIsCgVxdWVyeRgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuUXVlcnkiRAoYVG9rZW5TZXJ2aWNlTGlzdFJlc3BvbnNlEigKBnRva2VucxgBIAMoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuIjMKGVRva2VuU2VydmljZVJldm9rZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQEiHAoaVG9rZW5TZXJ2aWNlUmV2b2tlUmVzcG9uc2UiiQgKGVRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQASJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSACIAQESPwoLcGVybWlzc2lvbnMYBCADKAsyKi5tZXRhbHN0YWNrLmFwaS52Mi5QZXJtaXNzaW9uc0J5VmlzaWJpbGl0eRJwCg1wcm9qZWN0X3JvbGVzGAUgAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdC5Qcm9qZWN0Um9sZXNFbnRyeUIZukgWmgETwJW4sQIByJW4sQIBKgWCAQIQARJuCgx0ZW5hbnRfcm9sZXMYBiADKAsyPS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0LlRlbmFudFJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdCVuLECASoFggECEAESPwoKYWRtaW5fcm9sZRgHIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAYgBARI/CgppbmZyYV9yb2xlGAggASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgCiAEBEnAKDW1hY2hpbmVfcm9sZXMYCSADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0Lk1hY2hpbmVSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHYlbixAgEqBYIBAhABEi8KBmxhYmVscxgKIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVscxpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4ARpTChFNYWNoaW5lUm9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZToCOAFCDgoMX2Rlc2NyaXB0aW9uQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIkUKGlRva2VuU2VydmljZVVwZGF0ZVJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iMAoWVG9rZW5TZXJ2aWNlR2V0UmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJCChdUb2tlblNlcnZpY2VHZXRSZXNwb25zZRInCgV0b2tlbhgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuIhwKGlRva2VuU2VydmljZVJlZnJlc2hSZXF1ZXN0IlYKG1Rva2VuU2VydmljZVJlZnJlc2hSZXNwb25zZRInCgV0b2tlbhgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuEg4KBnNlY3JldBgCIAEoCSKdAgoKVG9rZW5RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBHVzZXIYAiABKAlCC7pICHIG+LOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESLgoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQESPwoKdG9rZW5fdHlwZRgFIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuVHlwZUIIukgFggECEAFIBIgBAUIHCgVfdXVpZEIHCgVfdXNlckIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVsc0INCgtfdG9rZW5fdHlwZSpQCglUb2tlblR5cGUSGgoWVE9LRU5fVFlQRV9VTlNQRUNJRklFRBAAEhIKDlRPS0VOX1RZUEVfQVBJEAESEwoPVE9LRU5fVFlQRV9VU0VSEAIyqAUKDFRva2VuU2VydmljZRJmCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGALg8xgBEm8KBkNyZWF0ZRIsLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXNwb25zZSII2PMYAuDzGAESbwoGVXBkYXRlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlc3BvbnNlIgjY8xgC4PMYARJpCgRMaXN0EioubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlTGlzdFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgBEm8KBlJldm9rZRIsLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJldm9rZVJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSII2PMYAuDzGAEScgoHUmVmcmVzaBItLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJlZnJlc2hSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlIgjY8xgC4PMYAULAAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgpUb2tlblByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+export const file_metalstack_api_v2_token = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi90b2tlbi5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIixwgKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKBHVzZXIYAiABKAlCC7pICHIG+LOusQIBEiUKBG1ldGEYAyABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARJDCgtwZXJtaXNzaW9ucxgFIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb25CCbpIBpIBAxD0AxIrCgdleHBpcmVzGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglpc3N1ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKCnRva2VuX3R5cGUYCCABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblR5cGVCCLpIBYIBAhABElwKDXByb2plY3Rfcm9sZXMYCSADKAsyKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5Qcm9qZWN0Um9sZXNFbnRyeUIZukgWmgETwJW4sQIByJW4sQIBKgWCAQIQARJaCgx0ZW5hbnRfcm9sZXMYCiADKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5UZW5hbnRSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHQlbixAgEqBYIBAhABEj8KCmFkbWluX3JvbGUYCyABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSACIAQESPwoKaW5mcmFfcm9sZRgMIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAYgBARJcCg1tYWNoaW5lX3JvbGVzGA0gAygLMioubWV0YWxzdGFjay5hcGkudjIuVG9rZW4uTWFjaGluZVJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdiVuLECASoFggECEAESMAoMcmVmcmVzaGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4ARpTChFNYWNoaW5lUm9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUi5AcKGVRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QSIAoLZGVzY3JpcHRpb24YASABKAlCC7pICHIGyLOusQIBEkkKC3Blcm1pc3Npb25zGAIgAygLMioubWV0YWxzdGFjay5hcGkudjIuUGVybWlzc2lvbnNCeVZpc2liaWxpdHlCCLpIBZIBAhBkEj4KB2V4cGlyZXMYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CErpID6oBDBoFCIHnhA8yAwjYBBJwCg1wcm9qZWN0X3JvbGVzGAQgAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5Qcm9qZWN0Um9sZXNFbnRyeUIZukgWmgETwJW4sQIByJW4sQIBKgWCAQIQARJuCgx0ZW5hbnRfcm9sZXMYBSADKAsyPS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0LlRlbmFudFJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdCVuLECASoFggECEAESPwoKYWRtaW5fcm9sZRgGIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAIgBARI/CgppbmZyYV9yb2xlGAcgASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgBiAEBEnAKDW1hY2hpbmVfcm9sZXMYCCADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Lk1hY2hpbmVSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHYlbixAgEqBYIBAhABEikKBmxhYmVscxgJIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4ARpTChFNYWNoaW5lUm9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiSQoQTWV0aG9kUGVybWlzc2lvbhIZCgdzdWJqZWN0GAEgASgJQgi6SAVyAxiAAhIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiqwMKF1Blcm1pc3Npb25zQnlWaXNpYmlsaXR5EjYKBnB1YmxpYxgBIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLlB1YmxpY1Blcm1pc3Npb25zSAASMgoEc2VsZhgCIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLlNlbGZQZXJtaXNzaW9uc0gAEjgKB3Byb2plY3QYAyABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0UGVybWlzc2lvbnNIABI2CgZ0ZW5hbnQYBCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRQZXJtaXNzaW9uc0gAEjQKBWFkbWluGAUgASgLMiMubWV0YWxzdGFjay5hcGkudjIuQWRtaW5QZXJtaXNzaW9uc0gAEjgKB21hY2hpbmUYBiABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUGVybWlzc2lvbnNIABI0CgVpbmZyYRgHIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUGVybWlzc2lvbnNIAEIMCgp2aXNpYmlsaXR5Ii8KEVB1YmxpY1Blcm1pc3Npb25zEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyItCg9TZWxmUGVybWlzc2lvbnMSGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIk4KElByb2plY3RQZXJtaXNzaW9ucxIcCgdwcm9qZWN0GAEgASgJQgu6SAhyBqC0rrECARIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiSwoRVGVuYW50UGVybWlzc2lvbnMSGgoFbG9naW4YASABKAlCC7pICHIGmLSusQIBEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyIuChBBZG1pblBlcm1pc3Npb25zEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyJLChJNYWNoaW5lUGVybWlzc2lvbnMSGQoEdXVpZBgBIAEoCUILukgIcgaotK6xAgESGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIi4KEEluZnJhUGVybWlzc2lvbnMSGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIlUKGlRva2VuU2VydmljZUNyZWF0ZVJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4SDgoGc2VjcmV0GAIgASgJIkcKF1Rva2VuU2VydmljZUxpc3RSZXF1ZXN0EiwKBXF1ZXJ5GAEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5RdWVyeSJEChhUb2tlblNlcnZpY2VMaXN0UmVzcG9uc2USKAoGdG9rZW5zGAEgAygLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iMwoZVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASIcChpUb2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSKJCAoZVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBABIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAIgBARI/CgtwZXJtaXNzaW9ucxgEIAMoCzIqLm1ldGFsc3RhY2suYXBpLnYyLlBlcm1pc3Npb25zQnlWaXNpYmlsaXR5EnAKDXByb2plY3Rfcm9sZXMYBSADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0LlByb2plY3RSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHIlbixAgEqBYIBAhABEm4KDHRlbmFudF9yb2xlcxgGIAMoCzI9Lm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuVGVuYW50Um9sZXNFbnRyeUIZukgWmgETwJW4sQIB0JW4sQIBKgWCAQIQARI/CgphZG1pbl9yb2xlGAcgASgOMhwubWV0YWxzdGFjay5hcGkudjIuQWRtaW5Sb2xlQgi6SAWCAQIQAUgBiAEBEj8KCmluZnJhX3JvbGUYCCABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVCCLpIBYIBAhABSAKIAQEScAoNbWFjaGluZV9yb2xlcxgJIAMoCzI+Lm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuTWFjaGluZVJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdiVuLECASoFggECEAESLwoGbGFiZWxzGAogASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzGlMKEVByb2plY3RSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlOgI4ARpRChBUZW5hbnRSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGU6AjgBGlMKEU1hY2hpbmVSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVSb2xlOgI4AUIOCgxfZGVzY3JpcHRpb25CDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiRQoaVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbiIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIkIKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iHAoaVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QiVgobVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4SDgoGc2VjcmV0GAIgASgJIp0CCgpUb2tlblF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEdXNlchgCIAEoCUILukgIcgb4s66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBARI/Cgp0b2tlbl90eXBlGAUgASgOMhwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5UeXBlQgi6SAWCAQIQAUgEiAEBQgcKBV91dWlkQgcKBV91c2VyQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQg0KC190b2tlbl90eXBlKlAKCVRva2VuVHlwZRIaChZUT0tFTl9UWVBFX1VOU1BFQ0lGSUVEEAASEgoOVE9LRU5fVFlQRV9BUEkQARITCg9UT0tFTl9UWVBFX1VTRVIQAjKoBQoMVG9rZW5TZXJ2aWNlEmYKA0dldBIpLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUdldFJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VHZXRSZXNwb25zZSII2PMYAuDzGAESbwoGQ3JlYXRlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUNyZWF0ZVJlc3BvbnNlIgjY8xgC4PMYARJvCgZVcGRhdGUSLC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCNjzGALg8xgBEmkKBExpc3QSKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAESbwoGUmV2b2tlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJldm9rZVJlc3BvbnNlIgjY8xgC4PMYARJyCgdSZWZyZXNoEi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VSZWZyZXNoUmVzcG9uc2UiCNjzGALg8xgBQsABChVjb20ubWV0YWxzdGFjay5hcGkudjJCClRva2VuUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* Describes the message metalstack.api.v2.Token.
* Use `create(TokenSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/token_pb.ts b/js/metalstack/api/v2/token_pb.ts
index 15be48df..f4bfd047 100644
--- a/js/metalstack/api/v2/token_pb.ts
+++ b/js/metalstack/api/v2/token_pb.ts
@@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/token.proto.
*/
export const file_metalstack_api_v2_token: GenFile = /*@__PURE__*/
- fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi90b2tlbi5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIilQgKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKBHVzZXIYAiABKAlCC7pICHIG+LOusQIBEiUKBG1ldGEYAyABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARJDCgtwZXJtaXNzaW9ucxgFIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb25CCbpIBpIBAxD0AxIrCgdleHBpcmVzGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglpc3N1ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKCnRva2VuX3R5cGUYCCABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblR5cGVCCLpIBYIBAhABElwKDXByb2plY3Rfcm9sZXMYCSADKAsyKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5Qcm9qZWN0Um9sZXNFbnRyeUIZukgWmgETwJW4sQIByJW4sQIBKgWCAQIQARJaCgx0ZW5hbnRfcm9sZXMYCiADKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5UZW5hbnRSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHQlbixAgEqBYIBAhABEj8KCmFkbWluX3JvbGUYCyABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSACIAQESPwoKaW5mcmFfcm9sZRgMIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAYgBARJcCg1tYWNoaW5lX3JvbGVzGA0gAygLMioubWV0YWxzdGFjay5hcGkudjIuVG9rZW4uTWFjaGluZVJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdiVuLECASoFggECEAEaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAEaUwoRTWFjaGluZVJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJvbGU6AjgBQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIuQHChlUb2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0EiAKC2Rlc2NyaXB0aW9uGAEgASgJQgu6SAhyBsizrrECARJJCgtwZXJtaXNzaW9ucxgCIAMoCzIqLm1ldGFsc3RhY2suYXBpLnYyLlBlcm1pc3Npb25zQnlWaXNpYmlsaXR5Qgi6SAWSAQIQZBI+CgdleHBpcmVzGAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQhK6SA+qAQwaBQiB54QPMgMI2AQScAoNcHJvamVjdF9yb2xlcxgEIAMoCzI+Lm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QuUHJvamVjdFJvbGVzRW50cnlCGbpIFpoBE8CVuLECAciVuLECASoFggECEAESbgoMdGVuYW50X3JvbGVzGAUgAygLMj0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5UZW5hbnRSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHQlbixAgEqBYIBAhABEj8KCmFkbWluX3JvbGUYBiABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSACIAQESPwoKaW5mcmFfcm9sZRgHIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAYgBARJwCg1tYWNoaW5lX3JvbGVzGAggAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5NYWNoaW5lUm9sZXNFbnRyeUIZukgWmgETwJW4sQIB2JW4sQIBKgWCAQIQARIpCgZsYWJlbHMYCSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAEaUwoRTWFjaGluZVJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJvbGU6AjgBQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIkkKEE1ldGhvZFBlcm1pc3Npb24SGQoHc3ViamVjdBgBIAEoCUIIukgFcgMYgAISGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIqsDChdQZXJtaXNzaW9uc0J5VmlzaWJpbGl0eRI2CgZwdWJsaWMYASABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5QdWJsaWNQZXJtaXNzaW9uc0gAEjIKBHNlbGYYAiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5TZWxmUGVybWlzc2lvbnNIABI4Cgdwcm9qZWN0GAMgASgLMiUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFBlcm1pc3Npb25zSAASNgoGdGVuYW50GAQgASgLMiQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50UGVybWlzc2lvbnNIABI0CgVhZG1pbhgFIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUGVybWlzc2lvbnNIABI4CgdtYWNoaW5lGAYgASgLMiUubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVBlcm1pc3Npb25zSAASNAoFaW5mcmEYByABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVBlcm1pc3Npb25zSABCDAoKdmlzaWJpbGl0eSIvChFQdWJsaWNQZXJtaXNzaW9ucxIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiLQoPU2VsZlBlcm1pc3Npb25zEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyJOChJQcm9qZWN0UGVybWlzc2lvbnMSHAoHcHJvamVjdBgBIAEoCUILukgIcgagtK6xAgESGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIksKEVRlbmFudFBlcm1pc3Npb25zEhoKBWxvZ2luGAEgASgJQgu6SAhyBpi0rrECARIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiLgoQQWRtaW5QZXJtaXNzaW9ucxIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiSwoSTWFjaGluZVBlcm1pc3Npb25zEhkKBHV1aWQYASABKAlCC7pICHIGqLSusQIBEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyIuChBJbmZyYVBlcm1pc3Npb25zEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyJVChpUb2tlblNlcnZpY2VDcmVhdGVSZXNwb25zZRInCgV0b2tlbhgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuEg4KBnNlY3JldBgCIAEoCSJHChdUb2tlblNlcnZpY2VMaXN0UmVxdWVzdBIsCgVxdWVyeRgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuUXVlcnkiRAoYVG9rZW5TZXJ2aWNlTGlzdFJlc3BvbnNlEigKBnRva2VucxgBIAMoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuIjMKGVRva2VuU2VydmljZVJldm9rZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQEiHAoaVG9rZW5TZXJ2aWNlUmV2b2tlUmVzcG9uc2UiiQgKGVRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQASJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSACIAQESPwoLcGVybWlzc2lvbnMYBCADKAsyKi5tZXRhbHN0YWNrLmFwaS52Mi5QZXJtaXNzaW9uc0J5VmlzaWJpbGl0eRJwCg1wcm9qZWN0X3JvbGVzGAUgAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdC5Qcm9qZWN0Um9sZXNFbnRyeUIZukgWmgETwJW4sQIByJW4sQIBKgWCAQIQARJuCgx0ZW5hbnRfcm9sZXMYBiADKAsyPS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0LlRlbmFudFJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdCVuLECASoFggECEAESPwoKYWRtaW5fcm9sZRgHIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAYgBARI/CgppbmZyYV9yb2xlGAggASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgCiAEBEnAKDW1hY2hpbmVfcm9sZXMYCSADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0Lk1hY2hpbmVSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHYlbixAgEqBYIBAhABEi8KBmxhYmVscxgKIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVscxpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4ARpTChFNYWNoaW5lUm9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZToCOAFCDgoMX2Rlc2NyaXB0aW9uQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIkUKGlRva2VuU2VydmljZVVwZGF0ZVJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iMAoWVG9rZW5TZXJ2aWNlR2V0UmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJCChdUb2tlblNlcnZpY2VHZXRSZXNwb25zZRInCgV0b2tlbhgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuIhwKGlRva2VuU2VydmljZVJlZnJlc2hSZXF1ZXN0IlYKG1Rva2VuU2VydmljZVJlZnJlc2hSZXNwb25zZRInCgV0b2tlbhgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuEg4KBnNlY3JldBgCIAEoCSKdAgoKVG9rZW5RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBHVzZXIYAiABKAlCC7pICHIG+LOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESLgoGbGFiZWxzGAQgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQESPwoKdG9rZW5fdHlwZRgFIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuVHlwZUIIukgFggECEAFIBIgBAUIHCgVfdXVpZEIHCgVfdXNlckIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVsc0INCgtfdG9rZW5fdHlwZSpQCglUb2tlblR5cGUSGgoWVE9LRU5fVFlQRV9VTlNQRUNJRklFRBAAEhIKDlRPS0VOX1RZUEVfQVBJEAESEwoPVE9LRU5fVFlQRV9VU0VSEAIyqAUKDFRva2VuU2VydmljZRJmCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGALg8xgBEm8KBkNyZWF0ZRIsLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXNwb25zZSII2PMYAuDzGAESbwoGVXBkYXRlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlc3BvbnNlIgjY8xgC4PMYARJpCgRMaXN0EioubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlTGlzdFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgBEm8KBlJldm9rZRIsLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJldm9rZVJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSII2PMYAuDzGAEScgoHUmVmcmVzaBItLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJlZnJlc2hSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlIgjY8xgC4PMYAULAAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgpUb2tlblByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi90b2tlbi5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIixwgKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhkKBHVzZXIYAiABKAlCC7pICHIG+LOusQIBEiUKBG1ldGEYAyABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARJDCgtwZXJtaXNzaW9ucxgFIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb25CCbpIBpIBAxD0AxIrCgdleHBpcmVzGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglpc3N1ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKCnRva2VuX3R5cGUYCCABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblR5cGVCCLpIBYIBAhABElwKDXByb2plY3Rfcm9sZXMYCSADKAsyKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5Qcm9qZWN0Um9sZXNFbnRyeUIZukgWmgETwJW4sQIByJW4sQIBKgWCAQIQARJaCgx0ZW5hbnRfcm9sZXMYCiADKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5UZW5hbnRSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHQlbixAgEqBYIBAhABEj8KCmFkbWluX3JvbGUYCyABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSACIAQESPwoKaW5mcmFfcm9sZRgMIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAYgBARJcCg1tYWNoaW5lX3JvbGVzGA0gAygLMioubWV0YWxzdGFjay5hcGkudjIuVG9rZW4uTWFjaGluZVJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdiVuLECASoFggECEAESMAoMcmVmcmVzaGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4ARpTChFNYWNoaW5lUm9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUi5AcKGVRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QSIAoLZGVzY3JpcHRpb24YASABKAlCC7pICHIGyLOusQIBEkkKC3Blcm1pc3Npb25zGAIgAygLMioubWV0YWxzdGFjay5hcGkudjIuUGVybWlzc2lvbnNCeVZpc2liaWxpdHlCCLpIBZIBAhBkEj4KB2V4cGlyZXMYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CErpID6oBDBoFCIHnhA8yAwjYBBJwCg1wcm9qZWN0X3JvbGVzGAQgAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5Qcm9qZWN0Um9sZXNFbnRyeUIZukgWmgETwJW4sQIByJW4sQIBKgWCAQIQARJuCgx0ZW5hbnRfcm9sZXMYBSADKAsyPS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0LlRlbmFudFJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdCVuLECASoFggECEAESPwoKYWRtaW5fcm9sZRgGIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAIgBARI/CgppbmZyYV9yb2xlGAcgASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgBiAEBEnAKDW1hY2hpbmVfcm9sZXMYCCADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Lk1hY2hpbmVSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHYlbixAgEqBYIBAhABEikKBmxhYmVscxgJIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4ARpTChFNYWNoaW5lUm9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiSQoQTWV0aG9kUGVybWlzc2lvbhIZCgdzdWJqZWN0GAEgASgJQgi6SAVyAxiAAhIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiqwMKF1Blcm1pc3Npb25zQnlWaXNpYmlsaXR5EjYKBnB1YmxpYxgBIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLlB1YmxpY1Blcm1pc3Npb25zSAASMgoEc2VsZhgCIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLlNlbGZQZXJtaXNzaW9uc0gAEjgKB3Byb2plY3QYAyABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0UGVybWlzc2lvbnNIABI2CgZ0ZW5hbnQYBCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRQZXJtaXNzaW9uc0gAEjQKBWFkbWluGAUgASgLMiMubWV0YWxzdGFjay5hcGkudjIuQWRtaW5QZXJtaXNzaW9uc0gAEjgKB21hY2hpbmUYBiABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUGVybWlzc2lvbnNIABI0CgVpbmZyYRgHIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUGVybWlzc2lvbnNIAEIMCgp2aXNpYmlsaXR5Ii8KEVB1YmxpY1Blcm1pc3Npb25zEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyItCg9TZWxmUGVybWlzc2lvbnMSGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIk4KElByb2plY3RQZXJtaXNzaW9ucxIcCgdwcm9qZWN0GAEgASgJQgu6SAhyBqC0rrECARIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiSwoRVGVuYW50UGVybWlzc2lvbnMSGgoFbG9naW4YASABKAlCC7pICHIGmLSusQIBEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyIuChBBZG1pblBlcm1pc3Npb25zEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyJLChJNYWNoaW5lUGVybWlzc2lvbnMSGQoEdXVpZBgBIAEoCUILukgIcgaotK6xAgESGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIi4KEEluZnJhUGVybWlzc2lvbnMSGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIlUKGlRva2VuU2VydmljZUNyZWF0ZVJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4SDgoGc2VjcmV0GAIgASgJIkcKF1Rva2VuU2VydmljZUxpc3RSZXF1ZXN0EiwKBXF1ZXJ5GAEgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5RdWVyeSJEChhUb2tlblNlcnZpY2VMaXN0UmVzcG9uc2USKAoGdG9rZW5zGAEgAygLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iMwoZVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASIcChpUb2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSKJCAoZVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBABIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAIgBARI/CgtwZXJtaXNzaW9ucxgEIAMoCzIqLm1ldGFsc3RhY2suYXBpLnYyLlBlcm1pc3Npb25zQnlWaXNpYmlsaXR5EnAKDXByb2plY3Rfcm9sZXMYBSADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0LlByb2plY3RSb2xlc0VudHJ5Qhm6SBaaARPAlbixAgHIlbixAgEqBYIBAhABEm4KDHRlbmFudF9yb2xlcxgGIAMoCzI9Lm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuVGVuYW50Um9sZXNFbnRyeUIZukgWmgETwJW4sQIB0JW4sQIBKgWCAQIQARI/CgphZG1pbl9yb2xlGAcgASgOMhwubWV0YWxzdGFjay5hcGkudjIuQWRtaW5Sb2xlQgi6SAWCAQIQAUgBiAEBEj8KCmluZnJhX3JvbGUYCCABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVCCLpIBYIBAhABSAKIAQEScAoNbWFjaGluZV9yb2xlcxgJIAMoCzI+Lm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuTWFjaGluZVJvbGVzRW50cnlCGbpIFpoBE8CVuLECAdiVuLECASoFggECEAESLwoGbGFiZWxzGAogASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzGlMKEVByb2plY3RSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlOgI4ARpRChBUZW5hbnRSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGU6AjgBGlMKEU1hY2hpbmVSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVSb2xlOgI4AUIOCgxfZGVzY3JpcHRpb25CDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiRQoaVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbiIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIkIKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iHAoaVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QiVgobVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4SDgoGc2VjcmV0GAIgASgJIp0CCgpUb2tlblF1ZXJ5EhsKBHV1aWQYASABKAlCCLpIBXIDsAEBSACIAQESHgoEdXNlchgCIAEoCUILukgIcgb4s66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBARI/Cgp0b2tlbl90eXBlGAUgASgOMhwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5UeXBlQgi6SAWCAQIQAUgEiAEBQgcKBV91dWlkQgcKBV91c2VyQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQg0KC190b2tlbl90eXBlKlAKCVRva2VuVHlwZRIaChZUT0tFTl9UWVBFX1VOU1BFQ0lGSUVEEAASEgoOVE9LRU5fVFlQRV9BUEkQARITCg9UT0tFTl9UWVBFX1VTRVIQAjKoBQoMVG9rZW5TZXJ2aWNlEmYKA0dldBIpLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUdldFJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VHZXRSZXNwb25zZSII2PMYAuDzGAESbwoGQ3JlYXRlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUNyZWF0ZVJlc3BvbnNlIgjY8xgC4PMYARJvCgZVcGRhdGUSLC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCNjzGALg8xgBEmkKBExpc3QSKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAESbwoGUmV2b2tlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJldm9rZVJlc3BvbnNlIgjY8xgC4PMYARJyCgdSZWZyZXNoEi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VSZWZyZXNoUmVzcG9uc2UiCNjzGALg8xgBQsABChVjb20ubWV0YWxzdGFjay5hcGkudjJCClRva2VuUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* Token generates a jwt authentication token to access the api
@@ -128,6 +128,14 @@ export type Token = Message<"metalstack.api.v2.Token"> & {
* @generated from field: map machine_roles = 13;
*/
machineRoles: { [key: string]: MachineRole };
+
+ /**
+ * RefreshedAt indicates the timestamp when this token was refreshed.
+ * this is only set on tokens which have been created during a refresh call.
+ *
+ * @generated from field: google.protobuf.Timestamp refreshed_at = 14;
+ */
+ refreshedAt?: Timestamp | undefined;
};
/**
diff --git a/proto/metalstack/api/v2/token.proto b/proto/metalstack/api/v2/token.proto
index db3bcb3c..60c2c808 100644
--- a/proto/metalstack/api/v2/token.proto
+++ b/proto/metalstack/api/v2/token.proto
@@ -102,6 +102,9 @@ message Token {
},
(buf.validate.field).map.(metalstack.api.v2.keys_trimmed) = true
];
+ // RefreshedAt indicates the timestamp when this token was refreshed.
+ // this is only set on tokens which have been created during a refresh call.
+ google.protobuf.Timestamp refreshed_at = 14;
}
// TokenType specifies different use cases of tokens
diff --git a/python/metalstack/api/v2/token_pb2.py b/python/metalstack/api/v2/token_pb2.py
index 1086d846..0feedad2 100644
--- a/python/metalstack/api/v2/token_pb2.py
+++ b/python/metalstack/api/v2/token_pb2.py
@@ -29,7 +29,7 @@
from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dmetalstack/api/v2/token.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xc2\t\n\x05Token\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1f\n\x04user\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xf8\xb3\xae\xb1\x02\x01R\x04user\x12+\n\x04meta\x18\x03 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12P\n\x0bpermissions\x18\x05 \x03(\x0b\x32#.metalstack.api.v2.MethodPermissionB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x0bpermissions\x12\x34\n\x07\x65xpires\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65xpires\x12\x37\n\tissued_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08issuedAt\x12\x45\n\ntoken_type\x18\x08 \x01(\x0e\x32\x1c.metalstack.api.v2.TokenTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\ttokenType\x12j\n\rproject_roles\x18\t \x03(\x0b\x32*.metalstack.api.v2.Token.ProjectRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xc8\x95\xb8\xb1\x02\x01R\x0cprojectRoles\x12g\n\x0ctenant_roles\x18\n \x03(\x0b\x32).metalstack.api.v2.Token.TenantRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd0\x95\xb8\xb1\x02\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x0b \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x12J\n\ninfra_role\x18\x0c \x01(\x0e\x32\x1c.metalstack.api.v2.InfraRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tinfraRole\x88\x01\x01\x12j\n\rmachine_roles\x18\r \x03(\x0b\x32*.metalstack.api.v2.Token.MachineRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd8\x95\xb8\xb1\x02\x01R\x0cmachineRoles\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x1a_\n\x11MachineRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_roleB\r\n\x0b_infra_role\"\xf2\x08\n\x19TokenServiceCreateRequest\x12-\n\x0b\x64\x65scription\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12V\n\x0bpermissions\x18\x02 \x03(\x0b\x32*.metalstack.api.v2.PermissionsByVisibilityB\x08\xbaH\x05\x92\x01\x02\x10\x64R\x0bpermissions\x12G\n\x07\x65xpires\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x12\xbaH\x0f\xaa\x01\x0c\x1a\x05\x08\x81\xe7\x84\x0f\x32\x03\x08\xd8\x04R\x07\x65xpires\x12~\n\rproject_roles\x18\x04 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceCreateRequest.ProjectRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xc8\x95\xb8\xb1\x02\x01R\x0cprojectRoles\x12{\n\x0ctenant_roles\x18\x05 \x03(\x0b\x32=.metalstack.api.v2.TokenServiceCreateRequest.TenantRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd0\x95\xb8\xb1\x02\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x06 \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x12J\n\ninfra_role\x18\x07 \x01(\x0e\x32\x1c.metalstack.api.v2.InfraRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tinfraRole\x88\x01\x01\x12~\n\rmachine_roles\x18\x08 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceCreateRequest.MachineRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd8\x95\xb8\xb1\x02\x01R\x0cmachineRoles\x12\x31\n\x06labels\x18\t \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x1a_\n\x11MachineRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_roleB\r\n\x0b_infra_role\"[\n\x10MethodPermission\x12\"\n\x07subject\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x07subject\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"\xe1\x03\n\x17PermissionsByVisibility\x12>\n\x06public\x18\x01 \x01(\x0b\x32$.metalstack.api.v2.PublicPermissionsH\x00R\x06public\x12\x38\n\x04self\x18\x02 \x01(\x0b\x32\".metalstack.api.v2.SelfPermissionsH\x00R\x04self\x12\x41\n\x07project\x18\x03 \x01(\x0b\x32%.metalstack.api.v2.ProjectPermissionsH\x00R\x07project\x12>\n\x06tenant\x18\x04 \x01(\x0b\x32$.metalstack.api.v2.TenantPermissionsH\x00R\x06tenant\x12;\n\x05\x61\x64min\x18\x05 \x01(\x0b\x32#.metalstack.api.v2.AdminPermissionsH\x00R\x05\x61\x64min\x12\x41\n\x07machine\x18\x06 \x01(\x0b\x32%.metalstack.api.v2.MachinePermissionsH\x00R\x07machine\x12;\n\x05infra\x18\x07 \x01(\x0b\x32#.metalstack.api.v2.InfraPermissionsH\x00R\x05infraB\x0c\n\nvisibility\"8\n\x11PublicPermissions\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"6\n\x0fSelfPermissions\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"`\n\x12ProjectPermissions\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xa0\xb4\xae\xb1\x02\x01R\x07project\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"[\n\x11TenantPermissions\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x98\xb4\xae\xb1\x02\x01R\x05login\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"7\n\x10\x41\x64minPermissions\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"Z\n\x12MachinePermissions\x12\x1f\n\x04uuid\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xa8\xb4\xae\xb1\x02\x01R\x04uuid\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"7\n\x10InfraPermissions\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"d\n\x1aTokenServiceCreateResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"N\n\x17TokenServiceListRequest\x12\x33\n\x05query\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.TokenQueryR\x05query\"L\n\x18TokenServiceListResponse\x12\x30\n\x06tokens\x18\x01 \x03(\x0b\x32\x18.metalstack.api.v2.TokenR\x06tokens\"9\n\x19TokenServiceRevokeRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x1c\n\x1aTokenServiceRevokeResponse\"\xa0\t\n\x19TokenServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x00R\nupdateMeta\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12L\n\x0bpermissions\x18\x04 \x03(\x0b\x32*.metalstack.api.v2.PermissionsByVisibilityR\x0bpermissions\x12~\n\rproject_roles\x18\x05 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceUpdateRequest.ProjectRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xc8\x95\xb8\xb1\x02\x01R\x0cprojectRoles\x12{\n\x0ctenant_roles\x18\x06 \x03(\x0b\x32=.metalstack.api.v2.TokenServiceUpdateRequest.TenantRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd0\x95\xb8\xb1\x02\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x07 \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tadminRole\x88\x01\x01\x12J\n\ninfra_role\x18\x08 \x01(\x0e\x32\x1c.metalstack.api.v2.InfraRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x02R\tinfraRole\x88\x01\x01\x12~\n\rmachine_roles\x18\t \x03(\x0b\x32>.metalstack.api.v2.TokenServiceUpdateRequest.MachineRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd8\x95\xb8\xb1\x02\x01R\x0cmachineRoles\x12\x37\n\x06labels\x18\n \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsR\x06labels\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x1a_\n\x11MachineRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\r\n\x0b_admin_roleB\r\n\x0b_infra_role\"L\n\x1aTokenServiceUpdateResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"6\n\x16TokenServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"I\n\x17TokenServiceGetResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"\x1c\n\x1aTokenServiceRefreshRequest\"e\n\x1bTokenServiceRefreshResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"\xc9\x02\n\nTokenQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04user\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xf8\xb3\xae\xb1\x02\x01H\x01R\x04user\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x36\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x12J\n\ntoken_type\x18\x05 \x01(\x0e\x32\x1c.metalstack.api.v2.TokenTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x04R\ttokenType\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_userB\x0e\n\x0c_descriptionB\t\n\x07_labelsB\r\n\x0b_token_type*P\n\tTokenType\x12\x1a\n\x16TOKEN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eTOKEN_TYPE_API\x10\x01\x12\x13\n\x0fTOKEN_TYPE_USER\x10\x02\x32\xa8\x05\n\x0cTokenService\x12\x66\n\x03Get\x12).metalstack.api.v2.TokenServiceGetRequest\x1a*.metalstack.api.v2.TokenServiceGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12o\n\x06\x43reate\x12,.metalstack.api.v2.TokenServiceCreateRequest\x1a-.metalstack.api.v2.TokenServiceCreateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12o\n\x06Update\x12,.metalstack.api.v2.TokenServiceUpdateRequest\x1a-.metalstack.api.v2.TokenServiceUpdateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12i\n\x04List\x12*.metalstack.api.v2.TokenServiceListRequest\x1a+.metalstack.api.v2.TokenServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12o\n\x06Revoke\x12,.metalstack.api.v2.TokenServiceRevokeRequest\x1a-.metalstack.api.v2.TokenServiceRevokeResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12r\n\x07Refresh\x12-.metalstack.api.v2.TokenServiceRefreshRequest\x1a..metalstack.api.v2.TokenServiceRefreshResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x42\xc0\x01\n\x15\x63om.metalstack.api.v2B\nTokenProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dmetalstack/api/v2/token.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\x81\n\n\x05Token\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1f\n\x04user\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xf8\xb3\xae\xb1\x02\x01R\x04user\x12+\n\x04meta\x18\x03 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12P\n\x0bpermissions\x18\x05 \x03(\x0b\x32#.metalstack.api.v2.MethodPermissionB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x0bpermissions\x12\x34\n\x07\x65xpires\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65xpires\x12\x37\n\tissued_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08issuedAt\x12\x45\n\ntoken_type\x18\x08 \x01(\x0e\x32\x1c.metalstack.api.v2.TokenTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\ttokenType\x12j\n\rproject_roles\x18\t \x03(\x0b\x32*.metalstack.api.v2.Token.ProjectRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xc8\x95\xb8\xb1\x02\x01R\x0cprojectRoles\x12g\n\x0ctenant_roles\x18\n \x03(\x0b\x32).metalstack.api.v2.Token.TenantRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd0\x95\xb8\xb1\x02\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x0b \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x12J\n\ninfra_role\x18\x0c \x01(\x0e\x32\x1c.metalstack.api.v2.InfraRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tinfraRole\x88\x01\x01\x12j\n\rmachine_roles\x18\r \x03(\x0b\x32*.metalstack.api.v2.Token.MachineRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd8\x95\xb8\xb1\x02\x01R\x0cmachineRoles\x12=\n\x0crefreshed_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0brefreshedAt\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x1a_\n\x11MachineRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_roleB\r\n\x0b_infra_role\"\xf2\x08\n\x19TokenServiceCreateRequest\x12-\n\x0b\x64\x65scription\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12V\n\x0bpermissions\x18\x02 \x03(\x0b\x32*.metalstack.api.v2.PermissionsByVisibilityB\x08\xbaH\x05\x92\x01\x02\x10\x64R\x0bpermissions\x12G\n\x07\x65xpires\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x12\xbaH\x0f\xaa\x01\x0c\x1a\x05\x08\x81\xe7\x84\x0f\x32\x03\x08\xd8\x04R\x07\x65xpires\x12~\n\rproject_roles\x18\x04 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceCreateRequest.ProjectRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xc8\x95\xb8\xb1\x02\x01R\x0cprojectRoles\x12{\n\x0ctenant_roles\x18\x05 \x03(\x0b\x32=.metalstack.api.v2.TokenServiceCreateRequest.TenantRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd0\x95\xb8\xb1\x02\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x06 \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x12J\n\ninfra_role\x18\x07 \x01(\x0e\x32\x1c.metalstack.api.v2.InfraRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tinfraRole\x88\x01\x01\x12~\n\rmachine_roles\x18\x08 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceCreateRequest.MachineRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd8\x95\xb8\xb1\x02\x01R\x0cmachineRoles\x12\x31\n\x06labels\x18\t \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x1a_\n\x11MachineRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_roleB\r\n\x0b_infra_role\"[\n\x10MethodPermission\x12\"\n\x07subject\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x07subject\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"\xe1\x03\n\x17PermissionsByVisibility\x12>\n\x06public\x18\x01 \x01(\x0b\x32$.metalstack.api.v2.PublicPermissionsH\x00R\x06public\x12\x38\n\x04self\x18\x02 \x01(\x0b\x32\".metalstack.api.v2.SelfPermissionsH\x00R\x04self\x12\x41\n\x07project\x18\x03 \x01(\x0b\x32%.metalstack.api.v2.ProjectPermissionsH\x00R\x07project\x12>\n\x06tenant\x18\x04 \x01(\x0b\x32$.metalstack.api.v2.TenantPermissionsH\x00R\x06tenant\x12;\n\x05\x61\x64min\x18\x05 \x01(\x0b\x32#.metalstack.api.v2.AdminPermissionsH\x00R\x05\x61\x64min\x12\x41\n\x07machine\x18\x06 \x01(\x0b\x32%.metalstack.api.v2.MachinePermissionsH\x00R\x07machine\x12;\n\x05infra\x18\x07 \x01(\x0b\x32#.metalstack.api.v2.InfraPermissionsH\x00R\x05infraB\x0c\n\nvisibility\"8\n\x11PublicPermissions\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"6\n\x0fSelfPermissions\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"`\n\x12ProjectPermissions\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xa0\xb4\xae\xb1\x02\x01R\x07project\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"[\n\x11TenantPermissions\x12!\n\x05login\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\x98\xb4\xae\xb1\x02\x01R\x05login\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"7\n\x10\x41\x64minPermissions\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"Z\n\x12MachinePermissions\x12\x1f\n\x04uuid\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xa8\xb4\xae\xb1\x02\x01R\x04uuid\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"7\n\x10InfraPermissions\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"d\n\x1aTokenServiceCreateResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"N\n\x17TokenServiceListRequest\x12\x33\n\x05query\x18\x01 \x01(\x0b\x32\x1d.metalstack.api.v2.TokenQueryR\x05query\"L\n\x18TokenServiceListResponse\x12\x30\n\x06tokens\x18\x01 \x03(\x0b\x32\x18.metalstack.api.v2.TokenR\x06tokens\"9\n\x19TokenServiceRevokeRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x1c\n\x1aTokenServiceRevokeResponse\"\xa0\t\n\x19TokenServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x00R\nupdateMeta\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12L\n\x0bpermissions\x18\x04 \x03(\x0b\x32*.metalstack.api.v2.PermissionsByVisibilityR\x0bpermissions\x12~\n\rproject_roles\x18\x05 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceUpdateRequest.ProjectRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xc8\x95\xb8\xb1\x02\x01R\x0cprojectRoles\x12{\n\x0ctenant_roles\x18\x06 \x03(\x0b\x32=.metalstack.api.v2.TokenServiceUpdateRequest.TenantRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd0\x95\xb8\xb1\x02\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x07 \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tadminRole\x88\x01\x01\x12J\n\ninfra_role\x18\x08 \x01(\x0e\x32\x1c.metalstack.api.v2.InfraRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x02R\tinfraRole\x88\x01\x01\x12~\n\rmachine_roles\x18\t \x03(\x0b\x32>.metalstack.api.v2.TokenServiceUpdateRequest.MachineRolesEntryB\x19\xbaH\x16\x9a\x01\x13*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01\xd8\x95\xb8\xb1\x02\x01R\x0cmachineRoles\x12\x37\n\x06labels\x18\n \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsR\x06labels\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x1a_\n\x11MachineRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\r\n\x0b_admin_roleB\r\n\x0b_infra_role\"L\n\x1aTokenServiceUpdateResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"6\n\x16TokenServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"I\n\x17TokenServiceGetResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"\x1c\n\x1aTokenServiceRefreshRequest\"e\n\x1bTokenServiceRefreshResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"\xc9\x02\n\nTokenQuery\x12!\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x04uuid\x88\x01\x01\x12$\n\x04user\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xf8\xb3\xae\xb1\x02\x01H\x01R\x04user\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\x36\n\x06labels\x18\x04 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x12J\n\ntoken_type\x18\x05 \x01(\x0e\x32\x1c.metalstack.api.v2.TokenTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x04R\ttokenType\x88\x01\x01\x42\x07\n\x05_uuidB\x07\n\x05_userB\x0e\n\x0c_descriptionB\t\n\x07_labelsB\r\n\x0b_token_type*P\n\tTokenType\x12\x1a\n\x16TOKEN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eTOKEN_TYPE_API\x10\x01\x12\x13\n\x0fTOKEN_TYPE_USER\x10\x02\x32\xa8\x05\n\x0cTokenService\x12\x66\n\x03Get\x12).metalstack.api.v2.TokenServiceGetRequest\x1a*.metalstack.api.v2.TokenServiceGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12o\n\x06\x43reate\x12,.metalstack.api.v2.TokenServiceCreateRequest\x1a-.metalstack.api.v2.TokenServiceCreateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12o\n\x06Update\x12,.metalstack.api.v2.TokenServiceUpdateRequest\x1a-.metalstack.api.v2.TokenServiceUpdateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12i\n\x04List\x12*.metalstack.api.v2.TokenServiceListRequest\x1a+.metalstack.api.v2.TokenServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12o\n\x06Revoke\x12,.metalstack.api.v2.TokenServiceRevokeRequest\x1a-.metalstack.api.v2.TokenServiceRevokeResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12r\n\x07Refresh\x12-.metalstack.api.v2.TokenServiceRefreshRequest\x1a..metalstack.api.v2.TokenServiceRefreshResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x42\xc0\x01\n\x15\x63om.metalstack.api.v2B\nTokenProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -155,72 +155,72 @@
_globals['_TOKENSERVICE'].methods_by_name['Revoke']._serialized_options = b'\330\363\030\002\340\363\030\001'
_globals['_TOKENSERVICE'].methods_by_name['Refresh']._loaded_options = None
_globals['_TOKENSERVICE'].methods_by_name['Refresh']._serialized_options = b'\330\363\030\002\340\363\030\001'
- _globals['_TOKENTYPE']._serialized_start=5880
- _globals['_TOKENTYPE']._serialized_end=5960
+ _globals['_TOKENTYPE']._serialized_start=5943
+ _globals['_TOKENTYPE']._serialized_end=6023
_globals['_TOKEN']._serialized_start=221
- _globals['_TOKEN']._serialized_end=1439
- _globals['_TOKEN_PROJECTROLESENTRY']._serialized_start=1122
- _globals['_TOKEN_PROJECTROLESENTRY']._serialized_end=1217
- _globals['_TOKEN_TENANTROLESENTRY']._serialized_start=1219
- _globals['_TOKEN_TENANTROLESENTRY']._serialized_end=1312
- _globals['_TOKEN_MACHINEROLESENTRY']._serialized_start=1314
- _globals['_TOKEN_MACHINEROLESENTRY']._serialized_end=1409
- _globals['_TOKENSERVICECREATEREQUEST']._serialized_start=1442
- _globals['_TOKENSERVICECREATEREQUEST']._serialized_end=2580
- _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_start=1122
- _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_end=1217
- _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_start=1219
- _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_end=1312
- _globals['_TOKENSERVICECREATEREQUEST_MACHINEROLESENTRY']._serialized_start=1314
- _globals['_TOKENSERVICECREATEREQUEST_MACHINEROLESENTRY']._serialized_end=1409
- _globals['_METHODPERMISSION']._serialized_start=2582
- _globals['_METHODPERMISSION']._serialized_end=2673
- _globals['_PERMISSIONSBYVISIBILITY']._serialized_start=2676
- _globals['_PERMISSIONSBYVISIBILITY']._serialized_end=3157
- _globals['_PUBLICPERMISSIONS']._serialized_start=3159
- _globals['_PUBLICPERMISSIONS']._serialized_end=3215
- _globals['_SELFPERMISSIONS']._serialized_start=3217
- _globals['_SELFPERMISSIONS']._serialized_end=3271
- _globals['_PROJECTPERMISSIONS']._serialized_start=3273
- _globals['_PROJECTPERMISSIONS']._serialized_end=3369
- _globals['_TENANTPERMISSIONS']._serialized_start=3371
- _globals['_TENANTPERMISSIONS']._serialized_end=3462
- _globals['_ADMINPERMISSIONS']._serialized_start=3464
- _globals['_ADMINPERMISSIONS']._serialized_end=3519
- _globals['_MACHINEPERMISSIONS']._serialized_start=3521
- _globals['_MACHINEPERMISSIONS']._serialized_end=3611
- _globals['_INFRAPERMISSIONS']._serialized_start=3613
- _globals['_INFRAPERMISSIONS']._serialized_end=3668
- _globals['_TOKENSERVICECREATERESPONSE']._serialized_start=3670
- _globals['_TOKENSERVICECREATERESPONSE']._serialized_end=3770
- _globals['_TOKENSERVICELISTREQUEST']._serialized_start=3772
- _globals['_TOKENSERVICELISTREQUEST']._serialized_end=3850
- _globals['_TOKENSERVICELISTRESPONSE']._serialized_start=3852
- _globals['_TOKENSERVICELISTRESPONSE']._serialized_end=3928
- _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_start=3930
- _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_end=3987
- _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_start=3989
- _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_end=4017
- _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_start=4020
- _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_end=5204
- _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_start=1122
- _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_end=1217
- _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_start=1219
- _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_end=1312
- _globals['_TOKENSERVICEUPDATEREQUEST_MACHINEROLESENTRY']._serialized_start=1314
- _globals['_TOKENSERVICEUPDATEREQUEST_MACHINEROLESENTRY']._serialized_end=1409
- _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_start=5206
- _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_end=5282
- _globals['_TOKENSERVICEGETREQUEST']._serialized_start=5284
- _globals['_TOKENSERVICEGETREQUEST']._serialized_end=5338
- _globals['_TOKENSERVICEGETRESPONSE']._serialized_start=5340
- _globals['_TOKENSERVICEGETRESPONSE']._serialized_end=5413
- _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_start=5415
- _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_end=5443
- _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_start=5445
- _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_end=5546
- _globals['_TOKENQUERY']._serialized_start=5549
- _globals['_TOKENQUERY']._serialized_end=5878
- _globals['_TOKENSERVICE']._serialized_start=5963
- _globals['_TOKENSERVICE']._serialized_end=6643
+ _globals['_TOKEN']._serialized_end=1502
+ _globals['_TOKEN_PROJECTROLESENTRY']._serialized_start=1185
+ _globals['_TOKEN_PROJECTROLESENTRY']._serialized_end=1280
+ _globals['_TOKEN_TENANTROLESENTRY']._serialized_start=1282
+ _globals['_TOKEN_TENANTROLESENTRY']._serialized_end=1375
+ _globals['_TOKEN_MACHINEROLESENTRY']._serialized_start=1377
+ _globals['_TOKEN_MACHINEROLESENTRY']._serialized_end=1472
+ _globals['_TOKENSERVICECREATEREQUEST']._serialized_start=1505
+ _globals['_TOKENSERVICECREATEREQUEST']._serialized_end=2643
+ _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_start=1185
+ _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_end=1280
+ _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_start=1282
+ _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_end=1375
+ _globals['_TOKENSERVICECREATEREQUEST_MACHINEROLESENTRY']._serialized_start=1377
+ _globals['_TOKENSERVICECREATEREQUEST_MACHINEROLESENTRY']._serialized_end=1472
+ _globals['_METHODPERMISSION']._serialized_start=2645
+ _globals['_METHODPERMISSION']._serialized_end=2736
+ _globals['_PERMISSIONSBYVISIBILITY']._serialized_start=2739
+ _globals['_PERMISSIONSBYVISIBILITY']._serialized_end=3220
+ _globals['_PUBLICPERMISSIONS']._serialized_start=3222
+ _globals['_PUBLICPERMISSIONS']._serialized_end=3278
+ _globals['_SELFPERMISSIONS']._serialized_start=3280
+ _globals['_SELFPERMISSIONS']._serialized_end=3334
+ _globals['_PROJECTPERMISSIONS']._serialized_start=3336
+ _globals['_PROJECTPERMISSIONS']._serialized_end=3432
+ _globals['_TENANTPERMISSIONS']._serialized_start=3434
+ _globals['_TENANTPERMISSIONS']._serialized_end=3525
+ _globals['_ADMINPERMISSIONS']._serialized_start=3527
+ _globals['_ADMINPERMISSIONS']._serialized_end=3582
+ _globals['_MACHINEPERMISSIONS']._serialized_start=3584
+ _globals['_MACHINEPERMISSIONS']._serialized_end=3674
+ _globals['_INFRAPERMISSIONS']._serialized_start=3676
+ _globals['_INFRAPERMISSIONS']._serialized_end=3731
+ _globals['_TOKENSERVICECREATERESPONSE']._serialized_start=3733
+ _globals['_TOKENSERVICECREATERESPONSE']._serialized_end=3833
+ _globals['_TOKENSERVICELISTREQUEST']._serialized_start=3835
+ _globals['_TOKENSERVICELISTREQUEST']._serialized_end=3913
+ _globals['_TOKENSERVICELISTRESPONSE']._serialized_start=3915
+ _globals['_TOKENSERVICELISTRESPONSE']._serialized_end=3991
+ _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_start=3993
+ _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_end=4050
+ _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_start=4052
+ _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_end=4080
+ _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_start=4083
+ _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_end=5267
+ _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_start=1185
+ _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_end=1280
+ _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_start=1282
+ _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_end=1375
+ _globals['_TOKENSERVICEUPDATEREQUEST_MACHINEROLESENTRY']._serialized_start=1377
+ _globals['_TOKENSERVICEUPDATEREQUEST_MACHINEROLESENTRY']._serialized_end=1472
+ _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_start=5269
+ _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_end=5345
+ _globals['_TOKENSERVICEGETREQUEST']._serialized_start=5347
+ _globals['_TOKENSERVICEGETREQUEST']._serialized_end=5401
+ _globals['_TOKENSERVICEGETRESPONSE']._serialized_start=5403
+ _globals['_TOKENSERVICEGETRESPONSE']._serialized_end=5476
+ _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_start=5478
+ _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_end=5506
+ _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_start=5508
+ _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_end=5609
+ _globals['_TOKENQUERY']._serialized_start=5612
+ _globals['_TOKENQUERY']._serialized_end=5941
+ _globals['_TOKENSERVICE']._serialized_start=6026
+ _globals['_TOKENSERVICE']._serialized_end=6706
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/token_pb2.pyi b/python/metalstack/api/v2/token_pb2.pyi
index 072688f6..ceb65f61 100644
--- a/python/metalstack/api/v2/token_pb2.pyi
+++ b/python/metalstack/api/v2/token_pb2.pyi
@@ -24,7 +24,7 @@ TOKEN_TYPE_API: TokenType
TOKEN_TYPE_USER: TokenType
class Token(_message.Message):
- __slots__ = ("uuid", "user", "meta", "description", "permissions", "expires", "issued_at", "token_type", "project_roles", "tenant_roles", "admin_role", "infra_role", "machine_roles")
+ __slots__ = ("uuid", "user", "meta", "description", "permissions", "expires", "issued_at", "token_type", "project_roles", "tenant_roles", "admin_role", "infra_role", "machine_roles", "refreshed_at")
class ProjectRolesEntry(_message.Message):
__slots__ = ("key", "value")
KEY_FIELD_NUMBER: _ClassVar[int]
@@ -59,6 +59,7 @@ class Token(_message.Message):
ADMIN_ROLE_FIELD_NUMBER: _ClassVar[int]
INFRA_ROLE_FIELD_NUMBER: _ClassVar[int]
MACHINE_ROLES_FIELD_NUMBER: _ClassVar[int]
+ REFRESHED_AT_FIELD_NUMBER: _ClassVar[int]
uuid: str
user: str
meta: _common_pb2.Meta
@@ -72,7 +73,8 @@ class Token(_message.Message):
admin_role: _common_pb2.AdminRole
infra_role: _common_pb2.InfraRole
machine_roles: _containers.ScalarMap[str, _common_pb2.MachineRole]
- def __init__(self, uuid: _Optional[str] = ..., user: _Optional[str] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., expires: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., issued_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., token_type: _Optional[_Union[TokenType, str]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ..., infra_role: _Optional[_Union[_common_pb2.InfraRole, str]] = ..., machine_roles: _Optional[_Mapping[str, _common_pb2.MachineRole]] = ...) -> None: ...
+ refreshed_at: _timestamp_pb2.Timestamp
+ def __init__(self, uuid: _Optional[str] = ..., user: _Optional[str] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., expires: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., issued_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., token_type: _Optional[_Union[TokenType, str]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ..., infra_role: _Optional[_Union[_common_pb2.InfraRole, str]] = ..., machine_roles: _Optional[_Mapping[str, _common_pb2.MachineRole]] = ..., refreshed_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
class TokenServiceCreateRequest(_message.Message):
__slots__ = ("description", "permissions", "expires", "project_roles", "tenant_roles", "admin_role", "infra_role", "machine_roles", "labels")