@fi-ts/api 0.0.1-alpha.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/buf/validate/validate_pb.ts +1 -1
  2. package/fits/api/mvm/v1/domain_pb.d.ts +89 -0
  3. package/fits/api/mvm/v1/domain_pb.js +32 -0
  4. package/fits/api/mvm/v1/domain_pb.ts +113 -0
  5. package/fits/api/mvm/v1/ldap_pb.d.ts +89 -0
  6. package/fits/api/mvm/v1/ldap_pb.js +32 -0
  7. package/fits/api/mvm/v1/ldap_pb.ts +113 -0
  8. package/fits/api/mvm/v1/location_pb.d.ts +84 -0
  9. package/fits/api/mvm/v1/location_pb.js +32 -0
  10. package/fits/api/mvm/v1/location_pb.ts +107 -0
  11. package/fits/api/mvm/v1/mvm_pb.d.ts +1451 -0
  12. package/fits/api/mvm/v1/mvm_pb.js +391 -0
  13. package/fits/api/mvm/v1/mvm_pb.ts +1679 -0
  14. package/fits/api/mvm/v1/os_pb.d.ts +111 -0
  15. package/fits/api/mvm/v1/os_pb.js +62 -0
  16. package/fits/api/mvm/v1/os_pb.ts +141 -0
  17. package/fits/api/mvm/v1/vlan_pb.d.ts +125 -0
  18. package/fits/api/mvm/v1/vlan_pb.js +32 -0
  19. package/fits/api/mvm/v1/vlan_pb.ts +155 -0
  20. package/fits/api/v1/common_pb.js +3 -3
  21. package/fits/api/v1/common_pb.ts +3 -3
  22. package/fits/api/v1/health_pb.js +2 -2
  23. package/fits/api/v1/health_pb.ts +2 -2
  24. package/fits/api/v1/ip_pb.d.ts +1 -1
  25. package/fits/api/v1/ip_pb.js +4 -4
  26. package/fits/api/v1/ip_pb.ts +5 -5
  27. package/fits/api/v1/method_pb.d.ts +2 -2
  28. package/fits/api/v1/method_pb.js +4 -4
  29. package/fits/api/v1/method_pb.ts +6 -6
  30. package/fits/api/v1/predefined_rules_pb.d.ts +37 -1
  31. package/fits/api/v1/predefined_rules_pb.js +45 -9
  32. package/fits/api/v1/predefined_rules_pb.ts +58 -10
  33. package/fits/api/v1/project_pb.d.ts +11 -5
  34. package/fits/api/v1/project_pb.js +5 -6
  35. package/fits/api/v1/project_pb.ts +17 -11
  36. package/fits/api/v1/tenant_pb.d.ts +10 -10
  37. package/fits/api/v1/tenant_pb.js +5 -6
  38. package/fits/api/v1/tenant_pb.ts +15 -16
  39. package/fits/api/v1/token_pb.d.ts +177 -12
  40. package/fits/api/v1/token_pb.js +46 -16
  41. package/fits/api/v1/token_pb.ts +210 -28
  42. package/fits/api/v1/version_pb.js +4 -4
  43. package/fits/api/v1/version_pb.ts +4 -4
  44. package/package.json +1 -1
  45. package/fits/api/v1/partition_pb.d.ts +0 -251
  46. package/fits/api/v1/partition_pb.js +0 -62
  47. package/fits/api/v1/partition_pb.ts +0 -300
  48. package/fits/api/v1/user_pb.d.ts +0 -108
  49. package/fits/api/v1/user_pb.js +0 -34
  50. package/fits/api/v1/user_pb.ts +0 -139
  51. package/fits/api/v1/vpn_pb.d.ts +0 -55
  52. package/fits/api/v1/vpn_pb.js +0 -14
  53. package/fits/api/v1/vpn_pb.ts +0 -72
@@ -1,10 +1,10 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/health.proto (package fits.api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
6
  import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
- import { file_fits_api_v1_common } from "./common_pb";
7
+ import { file_fits_api_v1_common } from "./common_pb.js";
8
8
  import type { Message } from "@bufbuild/protobuf";
9
9
 
10
10
  /**
@@ -1,5 +1,5 @@
1
1
  import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
2
- import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb";
2
+ import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb.js";
3
3
  import type { Message } from "@bufbuild/protobuf";
4
4
  /**
5
5
  * Describes the file fits/api/v1/ip.proto.
@@ -1,10 +1,10 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/ip.proto (package fits.api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
  import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
5
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
6
- import { file_fits_api_v1_common } from "./common_pb";
7
- import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb";
5
+ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.js";
6
+ import { file_fits_api_v1_common } from "./common_pb.js";
7
+ import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb.js";
8
8
  /**
9
9
  * Describes the file fits/api/v1/ip.proto.
10
10
  */
@@ -1,13 +1,13 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/ip.proto (package fits.api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
6
  import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
8
- import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb";
9
- import { file_fits_api_v1_common } from "./common_pb";
10
- import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb";
7
+ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.js";
8
+ import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb.js";
9
+ import { file_fits_api_v1_common } from "./common_pb.js";
10
+ import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb.js";
11
11
  import type { Message } from "@bufbuild/protobuf";
12
12
 
13
13
  /**
@@ -1,6 +1,6 @@
1
1
  import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
2
- import type { AdminRole, ProjectRole, TenantRole } from "./common_pb";
3
- import type { MethodPermission } from "./token_pb";
2
+ import type { AdminRole, ProjectRole, TenantRole } from "./common_pb.js";
3
+ import type { MethodPermission } from "./token_pb.js";
4
4
  import type { Message } from "@bufbuild/protobuf";
5
5
  /**
6
6
  * Describes the file fits/api/v1/method.proto.
@@ -1,10 +1,10 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/method.proto (package fits.api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
  import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
5
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
6
- import { file_fits_api_v1_common } from "./common_pb";
7
- import { file_fits_api_v1_token } from "./token_pb";
5
+ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.js";
6
+ import { file_fits_api_v1_common } from "./common_pb.js";
7
+ import { file_fits_api_v1_token } from "./token_pb.js";
8
8
  /**
9
9
  * Describes the file fits/api/v1/method.proto.
10
10
  */
@@ -1,14 +1,14 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/method.proto (package fits.api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
6
  import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
8
- import type { AdminRole, ProjectRole, TenantRole } from "./common_pb";
9
- import { file_fits_api_v1_common } from "./common_pb";
10
- import type { MethodPermission } from "./token_pb";
11
- import { file_fits_api_v1_token } from "./token_pb";
7
+ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.js";
8
+ import type { AdminRole, ProjectRole, TenantRole } from "./common_pb.js";
9
+ import { file_fits_api_v1_common } from "./common_pb.js";
10
+ import type { MethodPermission } from "./token_pb.js";
11
+ import { file_fits_api_v1_token } from "./token_pb.js";
12
12
  import type { Message } from "@bufbuild/protobuf";
13
13
 
14
14
  /**
@@ -1,5 +1,5 @@
1
1
  import type { GenExtension, GenFile } from "@bufbuild/protobuf/codegenv2";
2
- import type { MapRules, RepeatedRules, StringRules } from "../../../buf/validate/validate_pb";
2
+ import type { MapRules, RepeatedRules, StringRules } from "../../../buf/validate/validate_pb.js";
3
3
  /**
4
4
  * Describes the file fits/api/v1/predefined_rules.proto.
5
5
  */
@@ -52,6 +52,30 @@ export declare const is_ip_or_hostname: GenExtension<StringRules, boolean>;
52
52
  * @generated from extension: optional bool trimmed = 80048958;
53
53
  */
54
54
  export declare const trimmed: GenExtension<StringRules, boolean>;
55
+ /**
56
+ * IsProjectSlug enforces the string to be usable as a project slug.
57
+ *
58
+ * @generated from extension: optional bool is_project_slug = 80048959;
59
+ */
60
+ export declare const is_project_slug: GenExtension<StringRules, boolean>;
61
+ /**
62
+ * IsIpv4Cidr validates if the given string is a valid IPv4 CIDR, e.g. 10.0.0.0/24
63
+ *
64
+ * @generated from extension: optional bool is_ipv4_cidr = 80048960;
65
+ */
66
+ export declare const is_ipv4_cidr: GenExtension<StringRules, boolean>;
67
+ /**
68
+ * IsTenantSubjectPermission returns true if name field satisfies our requirements.
69
+ *
70
+ * @generated from extension: optional bool is_tenant_subject_permission = 80048962;
71
+ */
72
+ export declare const is_tenant_subject_permission: GenExtension<StringRules, boolean>;
73
+ /**
74
+ * IsProjectSubjectPermission returns true if name field satisfies our requirements.
75
+ *
76
+ * @generated from extension: optional bool is_project_subject_permission = 80048963;
77
+ */
78
+ export declare const is_project_subject_permission: GenExtension<StringRules, boolean>;
55
79
  /**
56
80
  * Prefixes validates if a slice of prefixes in string form are valid
57
81
  *
@@ -88,3 +112,15 @@ export declare const keys_and_values_trimmed: GenExtension<MapRules, boolean>;
88
112
  * @generated from extension: optional bool keys_trimmed = 80068952;
89
113
  */
90
114
  export declare const keys_trimmed: GenExtension<MapRules, boolean>;
115
+ /**
116
+ * ProjectRolesKeysValid ensures that project roles keys met our requirements.
117
+ *
118
+ * @generated from extension: optional bool project_roles_keys_valid = 80068953;
119
+ */
120
+ export declare const project_roles_keys_valid: GenExtension<MapRules, boolean>;
121
+ /**
122
+ * TenantRolesKeysValid ensures that tenant roles keys met our requirements.
123
+ *
124
+ * @generated from extension: optional bool tenant_roles_keys_valid = 80068954;
125
+ */
126
+ export declare const tenant_roles_keys_valid: GenExtension<MapRules, boolean>;
@@ -1,12 +1,12 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/predefined_rules.proto (package fits.api.v1, syntax proto2)
3
3
  /* eslint-disable */
4
4
  import { extDesc, fileDesc } from "@bufbuild/protobuf/codegenv2";
5
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
5
+ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.js";
6
6
  /**
7
7
  * Describes the file fits/api/v1/predefined_rules.proto.
8
8
  */
9
- export const file_fits_api_v1_predefined_rules = /*@__PURE__*/ fileDesc("CiJmaXRzL2FwaS92MS9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEgtmaXRzLmFwaS52MTq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOp0BCgd0cmltbWVkEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL7mlSYgASgIQmXCSGIKYAoOc3RyaW5nLnRyaW1tZWQSK3ZhbHVlIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaIXRoaXMudHJpbSgpLnNpemUoKSA9PSB0aGlzLnNpemUoKVIHdHJpbW1lZDqPAQoIcHJlZml4ZXMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjHtJYmIAEoCEJTwkhQCk4KEXJlcGVhdGVkLnByZWZpeGVzEhxnaXZlbiBwcmVmaXhlcyBtdXN0IGJlIHZhbGlkGht0aGlzLmFsbChtLCBtLmlzSXBQcmVmaXgoKSlSCHByZWZpeGVzOnUKA2lwcxIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMi0liYgASgIQkPCSEAKPgoMcmVwZWF0ZWQuaXBzEhdnaXZlbiBpcHMgbXVzdCBiZSB2YWxpZBoVdGhpcy5hbGwobSwgbS5pc0lwKCkpUgNpcHM65gEKEWFyZV9ob3N0X2FuZF9wb3J0EhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYybSWJiABKAhCmgHCSJYBCpMBChpyZXBlYXRlZC5hcmVfaG9zdF9hbmRfcG9ydBJQZ2l2ZW4gZW50cmllcyBtdXN0IGFsbCBiZSBpbiB0aGUgZm9ybSBvZiA8aXAgfCBob3N0Pjo8cG9ydD4gYnV0IHBvcnQgaXMgb3B0aW9uYWwaI3RoaXMuYWxsKG0sIG0uaXNIb3N0QW5kUG9ydChmYWxzZSkpUg5hcmVIb3N0QW5kUG9ydDq6AQoLYWxsX3RyaW1tZWQSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjKtJYmIAEoCEJ5wkh2CnQKFHJlcGVhdGVkLmFsbF90cmltbWVkEjJnaXZlbiB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZRoodGhpcy5hbGwobSwgbS50cmltKCkuc2l6ZSgpID09IG0uc2l6ZSgpKVIKYWxsVHJpbW1lZDqEAgoXa2V5c19hbmRfdmFsdWVzX3RyaW1tZWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY14KXJiABKAhCsQHCSK0BCqoBChttYXAua2V5c19hbmRfdmFsdWVzX3RyaW1tZWQSNWtleXMgYW5kIHZhbHVlcyBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlGlR0aGlzLmFsbChrLCBrLnRyaW0oKS5zaXplKCkgPT0gay5zaXplKCkpICYmIHRoaXMuYWxsKHYsIHYudHJpbSgpLnNpemUoKSA9PSB2LnNpemUoKSlSFGtleXNBbmRWYWx1ZXNUcmltbWVkOqsBCgxrZXlzX3RyaW1tZWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY2IKXJiABKAhCbcJIagpoChBtYXAua2V5c190cmltbWVkEiprZXlzIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaKHRoaXMuYWxsKGssIGsudHJpbSgpLnNpemUoKSA9PSBrLnNpemUoKSlSC2tleXNUcmltbWVkQqABCg9jb20uZml0cy5hcGkudjFCFFByZWRlZmluZWRSdWxlc1Byb3RvUAFaKWdpdGh1Yi5jb20vZmktdHMvYXBpL2dvL2ZpdHMvYXBpL3YxO2FwaXYxogIDRkFYqgILRml0cy5BcGkuVjHKAgtGaXRzXEFwaVxWMeICF0ZpdHNcQXBpXFYxXEdQQk1ldGFkYXRh6gINRml0czo6QXBpOjpWMQ", [file_buf_validate_validate]);
9
+ export const file_fits_api_v1_predefined_rules = /*@__PURE__*/ fileDesc("CiJmaXRzL2FwaS92MS9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEgtmaXRzLmFwaS52MTq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOp0BCgd0cmltbWVkEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL7mlSYgASgIQmXCSGIKYAoOc3RyaW5nLnRyaW1tZWQSK3ZhbHVlIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaIXRoaXMudHJpbSgpLnNpemUoKSA9PSB0aGlzLnNpemUoKVIHdHJpbW1lZDraAQoPaXNfcHJvamVjdF9zbHVnEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL/mlSYgASgIQpMBwkiPAQqMAQoWc3RyaW5nLmlzX3Byb2plY3Rfc2x1ZxIebXVzdCBiZSBhIGxvd2VyY2FzZSBpZGVudGlmaWVyGlJ0aGlzLm1hdGNoZXMoJ14oW2Etel9dWzAtOUEtWmEtel8tXSskKScpICYmIHRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4Ug1pc1Byb2plY3RTbHVnOrEBCgxpc19pcHY0X2NpZHISGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYwOaVJiABKAhCccJIbgpsChNzdHJpbmcuaXNfaXB2NF9jaWRyEittdXN0IGJlIGEgdmFsaWQgSVB2NCBDSURSLCBlLmcuIDEwLjAuMC4wLzI0Gih0aGlzLmlzSXBQcmVmaXgoKSAmJiAhdGhpcy5jb250YWlucygnOicpUgppc0lwdjRDaWRyOu8BChxpc190ZW5hbnRfc3ViamVjdF9wZXJtaXNzaW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMLmlSYgASgIQo8BwkiLAQqIAQojc3RyaW5nLmlzX3RlbmFudF9zdWJqZWN0X3Blcm1pc3Npb24SKm11c3QgYmUgJyonIG9yIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxo1dGhpcyA9PSAnKicgfHwgdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSGWlzVGVuYW50U3ViamVjdFBlcm1pc3Npb246lAIKHWlzX3Byb2plY3Rfc3ViamVjdF9wZXJtaXNzaW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMPmlSYgASgIQrIBwkiuAQqrAQokc3RyaW5nLmlzX3Byb2plY3Rfc3ViamVjdF9wZXJtaXNzaW9uEhVtdXN0IGJlICcqJyBvciBhIHV1aWQabHRoaXMgPT0gJyonIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKVIaaXNQcm9qZWN0U3ViamVjdFBlcm1pc3Npb246jwEKCHByZWZpeGVzEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYx7SWJiABKAhCU8JIUApOChFyZXBlYXRlZC5wcmVmaXhlcxIcZ2l2ZW4gcHJlZml4ZXMgbXVzdCBiZSB2YWxpZBobdGhpcy5hbGwobSwgbS5pc0lwUHJlZml4KCkpUghwcmVmaXhlczp1CgNpcHMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjItJYmIAEoCEJDwkhACj4KDHJlcGVhdGVkLmlwcxIXZ2l2ZW4gaXBzIG11c3QgYmUgdmFsaWQaFXRoaXMuYWxsKG0sIG0uaXNJcCgpKVIDaXBzOuYBChFhcmVfaG9zdF9hbmRfcG9ydBIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMm0liYgASgIQpoBwkiWAQqTAQoacmVwZWF0ZWQuYXJlX2hvc3RfYW5kX3BvcnQSUGdpdmVuIGVudHJpZXMgbXVzdCBhbGwgYmUgaW4gdGhlIGZvcm0gb2YgPGlwIHwgaG9zdD46PHBvcnQ+IGJ1dCBwb3J0IGlzIG9wdGlvbmFsGiN0aGlzLmFsbChtLCBtLmlzSG9zdEFuZFBvcnQoZmFsc2UpKVIOYXJlSG9zdEFuZFBvcnQ6ugEKC2FsbF90cmltbWVkEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYyrSWJiABKAhCecJIdgp0ChRyZXBlYXRlZC5hbGxfdHJpbW1lZBIyZ2l2ZW4gdmFsdWVzIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaKHRoaXMuYWxsKG0sIG0udHJpbSgpLnNpemUoKSA9PSBtLnNpemUoKSlSCmFsbFRyaW1tZWQ6hAIKF2tleXNfYW5kX3ZhbHVlc190cmltbWVkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNeClyYgASgIQrEBwkitAQqqAQobbWFwLmtleXNfYW5kX3ZhbHVlc190cmltbWVkEjVrZXlzIGFuZCB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZRpUdGhpcy5hbGwoaywgay50cmltKCkuc2l6ZSgpID09IGsuc2l6ZSgpKSAmJiB0aGlzLmFsbCh2LCB2LnRyaW0oKS5zaXplKCkgPT0gdi5zaXplKCkpUhRrZXlzQW5kVmFsdWVzVHJpbW1lZDqrAQoMa2V5c190cmltbWVkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNiClyYgASgIQm3CSGoKaAoQbWFwLmtleXNfdHJpbW1lZBIqa2V5cyBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlGih0aGlzLmFsbChrLCBrLnRyaW0oKS5zaXplKCkgPT0gay5zaXplKCkpUgtrZXlzVHJpbW1lZDqSAgoYcHJvamVjdF9yb2xlc19rZXlzX3ZhbGlkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNmClyYgASgIQr0Bwki5AQq2AQoXcHJvamVjdF9yb2xlcy5rZXkudmFsaWQSJnN1YmplY3QgbXVzdCBiZSBhICcqJywgb3IgYSB2YWxpZCBVVUlEGnN0aGlzLmFsbChrLCBrID09ICcqJyB8fCBrLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykpUhVwcm9qZWN0Um9sZXNLZXlzVmFsaWQ64gEKF3RlbmFudF9yb2xlc19rZXlzX3ZhbGlkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNqClyYgASgIQo8BwkiLAQqIAQoWdGVuYW50X3JvbGVzLmtleS52YWxpZBIzc3ViamVjdCBtdXN0IGJlICcqJyBvciBiZXR3ZWVuIDIgYW5kIDEyOCBjaGFyYWN0ZXJzGjl0aGlzLmFsbChrLCBrID09ICcqJyB8fCBrLnNpemUoKSA+PSAyICYmIGsuc2l6ZSgpIDw9MTI4IClSFHRlbmFudFJvbGVzS2V5c1ZhbGlkQqABCg9jb20uZml0cy5hcGkudjFCFFByZWRlZmluZWRSdWxlc1Byb3RvUAFaKWdpdGh1Yi5jb20vZmktdHMvYXBpL2dvL2ZpdHMvYXBpL3YxO2FwaXYxogIDRkFYqgILRml0cy5BcGkuVjHKAgtGaXRzXEFwaVxWMeICF0ZpdHNcQXBpXFYxXEdQQk1ldGFkYXRh6gINRml0czo6QXBpOjpWMQ", [file_buf_validate_validate]);
10
10
  /**
11
11
  * Macaddress returns true if the given string is a valid macadress
12
12
  *
@@ -55,39 +55,75 @@ export const is_ip_or_hostname = /*@__PURE__*/ extDesc(file_fits_api_v1_predefin
55
55
  * @generated from extension: optional bool trimmed = 80048958;
56
56
  */
57
57
  export const trimmed = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 7);
58
+ /**
59
+ * IsProjectSlug enforces the string to be usable as a project slug.
60
+ *
61
+ * @generated from extension: optional bool is_project_slug = 80048959;
62
+ */
63
+ export const is_project_slug = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 8);
64
+ /**
65
+ * IsIpv4Cidr validates if the given string is a valid IPv4 CIDR, e.g. 10.0.0.0/24
66
+ *
67
+ * @generated from extension: optional bool is_ipv4_cidr = 80048960;
68
+ */
69
+ export const is_ipv4_cidr = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 9);
70
+ /**
71
+ * IsTenantSubjectPermission returns true if name field satisfies our requirements.
72
+ *
73
+ * @generated from extension: optional bool is_tenant_subject_permission = 80048962;
74
+ */
75
+ export const is_tenant_subject_permission = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 10);
76
+ /**
77
+ * IsProjectSubjectPermission returns true if name field satisfies our requirements.
78
+ *
79
+ * @generated from extension: optional bool is_project_subject_permission = 80048963;
80
+ */
81
+ export const is_project_subject_permission = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 11);
58
82
  /**
59
83
  * Prefixes validates if a slice of prefixes in string form are valid
60
84
  *
61
85
  * @generated from extension: optional bool prefixes = 80058951;
62
86
  */
63
- export const prefixes = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 8);
87
+ export const prefixes = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 12);
64
88
  /**
65
89
  * Ips validates if a slice of ips in string form are valid
66
90
  *
67
91
  * @generated from extension: optional bool ips = 80058952;
68
92
  */
69
- export const ips = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 9);
93
+ export const ips = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 13);
70
94
  /**
71
95
  * AreHostAndPort validates if a slice of strings are all in the form of <ip | host>:<port>
72
96
  *
73
97
  * @generated from extension: optional bool are_host_and_port = 80058953;
74
98
  */
75
- export const are_host_and_port = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 10);
99
+ export const are_host_and_port = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 14);
76
100
  /**
77
101
  * All Trimmed enforces all strings to be trimmed, e.g. no whitespaces at the begin and end
78
102
  *
79
103
  * @generated from extension: optional bool all_trimmed = 80058954;
80
104
  */
81
- export const all_trimmed = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 11);
105
+ export const all_trimmed = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 15);
82
106
  /**
83
107
  * Keys and Values trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end
84
108
  *
85
109
  * @generated from extension: optional bool keys_and_values_trimmed = 80068951;
86
110
  */
87
- export const keys_and_values_trimmed = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 12);
111
+ export const keys_and_values_trimmed = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 16);
88
112
  /**
89
113
  * Keys trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end
90
114
  *
91
115
  * @generated from extension: optional bool keys_trimmed = 80068952;
92
116
  */
93
- export const keys_trimmed = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 13);
117
+ export const keys_trimmed = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 17);
118
+ /**
119
+ * ProjectRolesKeysValid ensures that project roles keys met our requirements.
120
+ *
121
+ * @generated from extension: optional bool project_roles_keys_valid = 80068953;
122
+ */
123
+ export const project_roles_keys_valid = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 18);
124
+ /**
125
+ * TenantRolesKeysValid ensures that tenant roles keys met our requirements.
126
+ *
127
+ * @generated from extension: optional bool tenant_roles_keys_valid = 80068954;
128
+ */
129
+ export const tenant_roles_keys_valid = /*@__PURE__*/ extDesc(file_fits_api_v1_predefined_rules, 19);
@@ -1,17 +1,17 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/predefined_rules.proto (package fits.api.v1, syntax proto2)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenExtension, GenFile } from "@bufbuild/protobuf/codegenv2";
6
6
  import { extDesc, fileDesc } from "@bufbuild/protobuf/codegenv2";
7
- import type { MapRules, RepeatedRules, StringRules } from "../../../buf/validate/validate_pb";
8
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
7
+ import type { MapRules, RepeatedRules, StringRules } from "../../../buf/validate/validate_pb.js";
8
+ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.js";
9
9
 
10
10
  /**
11
11
  * Describes the file fits/api/v1/predefined_rules.proto.
12
12
  */
13
13
  export const file_fits_api_v1_predefined_rules: GenFile = /*@__PURE__*/
14
- fileDesc("CiJmaXRzL2FwaS92MS9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEgtmaXRzLmFwaS52MTq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOp0BCgd0cmltbWVkEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL7mlSYgASgIQmXCSGIKYAoOc3RyaW5nLnRyaW1tZWQSK3ZhbHVlIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaIXRoaXMudHJpbSgpLnNpemUoKSA9PSB0aGlzLnNpemUoKVIHdHJpbW1lZDqPAQoIcHJlZml4ZXMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjHtJYmIAEoCEJTwkhQCk4KEXJlcGVhdGVkLnByZWZpeGVzEhxnaXZlbiBwcmVmaXhlcyBtdXN0IGJlIHZhbGlkGht0aGlzLmFsbChtLCBtLmlzSXBQcmVmaXgoKSlSCHByZWZpeGVzOnUKA2lwcxIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMi0liYgASgIQkPCSEAKPgoMcmVwZWF0ZWQuaXBzEhdnaXZlbiBpcHMgbXVzdCBiZSB2YWxpZBoVdGhpcy5hbGwobSwgbS5pc0lwKCkpUgNpcHM65gEKEWFyZV9ob3N0X2FuZF9wb3J0EhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYybSWJiABKAhCmgHCSJYBCpMBChpyZXBlYXRlZC5hcmVfaG9zdF9hbmRfcG9ydBJQZ2l2ZW4gZW50cmllcyBtdXN0IGFsbCBiZSBpbiB0aGUgZm9ybSBvZiA8aXAgfCBob3N0Pjo8cG9ydD4gYnV0IHBvcnQgaXMgb3B0aW9uYWwaI3RoaXMuYWxsKG0sIG0uaXNIb3N0QW5kUG9ydChmYWxzZSkpUg5hcmVIb3N0QW5kUG9ydDq6AQoLYWxsX3RyaW1tZWQSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjKtJYmIAEoCEJ5wkh2CnQKFHJlcGVhdGVkLmFsbF90cmltbWVkEjJnaXZlbiB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZRoodGhpcy5hbGwobSwgbS50cmltKCkuc2l6ZSgpID09IG0uc2l6ZSgpKVIKYWxsVHJpbW1lZDqEAgoXa2V5c19hbmRfdmFsdWVzX3RyaW1tZWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY14KXJiABKAhCsQHCSK0BCqoBChttYXAua2V5c19hbmRfdmFsdWVzX3RyaW1tZWQSNWtleXMgYW5kIHZhbHVlcyBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlGlR0aGlzLmFsbChrLCBrLnRyaW0oKS5zaXplKCkgPT0gay5zaXplKCkpICYmIHRoaXMuYWxsKHYsIHYudHJpbSgpLnNpemUoKSA9PSB2LnNpemUoKSlSFGtleXNBbmRWYWx1ZXNUcmltbWVkOqsBCgxrZXlzX3RyaW1tZWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY2IKXJiABKAhCbcJIagpoChBtYXAua2V5c190cmltbWVkEiprZXlzIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaKHRoaXMuYWxsKGssIGsudHJpbSgpLnNpemUoKSA9PSBrLnNpemUoKSlSC2tleXNUcmltbWVkQqABCg9jb20uZml0cy5hcGkudjFCFFByZWRlZmluZWRSdWxlc1Byb3RvUAFaKWdpdGh1Yi5jb20vZmktdHMvYXBpL2dvL2ZpdHMvYXBpL3YxO2FwaXYxogIDRkFYqgILRml0cy5BcGkuVjHKAgtGaXRzXEFwaVxWMeICF0ZpdHNcQXBpXFYxXEdQQk1ldGFkYXRh6gINRml0czo6QXBpOjpWMQ", [file_buf_validate_validate]);
14
+ fileDesc("CiJmaXRzL2FwaS92MS9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEgtmaXRzLmFwaS52MTq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOp0BCgd0cmltbWVkEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL7mlSYgASgIQmXCSGIKYAoOc3RyaW5nLnRyaW1tZWQSK3ZhbHVlIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaIXRoaXMudHJpbSgpLnNpemUoKSA9PSB0aGlzLnNpemUoKVIHdHJpbW1lZDraAQoPaXNfcHJvamVjdF9zbHVnEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL/mlSYgASgIQpMBwkiPAQqMAQoWc3RyaW5nLmlzX3Byb2plY3Rfc2x1ZxIebXVzdCBiZSBhIGxvd2VyY2FzZSBpZGVudGlmaWVyGlJ0aGlzLm1hdGNoZXMoJ14oW2Etel9dWzAtOUEtWmEtel8tXSskKScpICYmIHRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4Ug1pc1Byb2plY3RTbHVnOrEBCgxpc19pcHY0X2NpZHISGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYwOaVJiABKAhCccJIbgpsChNzdHJpbmcuaXNfaXB2NF9jaWRyEittdXN0IGJlIGEgdmFsaWQgSVB2NCBDSURSLCBlLmcuIDEwLjAuMC4wLzI0Gih0aGlzLmlzSXBQcmVmaXgoKSAmJiAhdGhpcy5jb250YWlucygnOicpUgppc0lwdjRDaWRyOu8BChxpc190ZW5hbnRfc3ViamVjdF9wZXJtaXNzaW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMLmlSYgASgIQo8BwkiLAQqIAQojc3RyaW5nLmlzX3RlbmFudF9zdWJqZWN0X3Blcm1pc3Npb24SKm11c3QgYmUgJyonIG9yIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxo1dGhpcyA9PSAnKicgfHwgdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSGWlzVGVuYW50U3ViamVjdFBlcm1pc3Npb246lAIKHWlzX3Byb2plY3Rfc3ViamVjdF9wZXJtaXNzaW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMPmlSYgASgIQrIBwkiuAQqrAQokc3RyaW5nLmlzX3Byb2plY3Rfc3ViamVjdF9wZXJtaXNzaW9uEhVtdXN0IGJlICcqJyBvciBhIHV1aWQabHRoaXMgPT0gJyonIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKVIaaXNQcm9qZWN0U3ViamVjdFBlcm1pc3Npb246jwEKCHByZWZpeGVzEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYx7SWJiABKAhCU8JIUApOChFyZXBlYXRlZC5wcmVmaXhlcxIcZ2l2ZW4gcHJlZml4ZXMgbXVzdCBiZSB2YWxpZBobdGhpcy5hbGwobSwgbS5pc0lwUHJlZml4KCkpUghwcmVmaXhlczp1CgNpcHMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjItJYmIAEoCEJDwkhACj4KDHJlcGVhdGVkLmlwcxIXZ2l2ZW4gaXBzIG11c3QgYmUgdmFsaWQaFXRoaXMuYWxsKG0sIG0uaXNJcCgpKVIDaXBzOuYBChFhcmVfaG9zdF9hbmRfcG9ydBIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMm0liYgASgIQpoBwkiWAQqTAQoacmVwZWF0ZWQuYXJlX2hvc3RfYW5kX3BvcnQSUGdpdmVuIGVudHJpZXMgbXVzdCBhbGwgYmUgaW4gdGhlIGZvcm0gb2YgPGlwIHwgaG9zdD46PHBvcnQ+IGJ1dCBwb3J0IGlzIG9wdGlvbmFsGiN0aGlzLmFsbChtLCBtLmlzSG9zdEFuZFBvcnQoZmFsc2UpKVIOYXJlSG9zdEFuZFBvcnQ6ugEKC2FsbF90cmltbWVkEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYyrSWJiABKAhCecJIdgp0ChRyZXBlYXRlZC5hbGxfdHJpbW1lZBIyZ2l2ZW4gdmFsdWVzIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaKHRoaXMuYWxsKG0sIG0udHJpbSgpLnNpemUoKSA9PSBtLnNpemUoKSlSCmFsbFRyaW1tZWQ6hAIKF2tleXNfYW5kX3ZhbHVlc190cmltbWVkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNeClyYgASgIQrEBwkitAQqqAQobbWFwLmtleXNfYW5kX3ZhbHVlc190cmltbWVkEjVrZXlzIGFuZCB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZRpUdGhpcy5hbGwoaywgay50cmltKCkuc2l6ZSgpID09IGsuc2l6ZSgpKSAmJiB0aGlzLmFsbCh2LCB2LnRyaW0oKS5zaXplKCkgPT0gdi5zaXplKCkpUhRrZXlzQW5kVmFsdWVzVHJpbW1lZDqrAQoMa2V5c190cmltbWVkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNiClyYgASgIQm3CSGoKaAoQbWFwLmtleXNfdHJpbW1lZBIqa2V5cyBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlGih0aGlzLmFsbChrLCBrLnRyaW0oKS5zaXplKCkgPT0gay5zaXplKCkpUgtrZXlzVHJpbW1lZDqSAgoYcHJvamVjdF9yb2xlc19rZXlzX3ZhbGlkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNmClyYgASgIQr0Bwki5AQq2AQoXcHJvamVjdF9yb2xlcy5rZXkudmFsaWQSJnN1YmplY3QgbXVzdCBiZSBhICcqJywgb3IgYSB2YWxpZCBVVUlEGnN0aGlzLmFsbChrLCBrID09ICcqJyB8fCBrLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykpUhVwcm9qZWN0Um9sZXNLZXlzVmFsaWQ64gEKF3RlbmFudF9yb2xlc19rZXlzX3ZhbGlkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNqClyYgASgIQo8BwkiLAQqIAQoWdGVuYW50X3JvbGVzLmtleS52YWxpZBIzc3ViamVjdCBtdXN0IGJlICcqJyBvciBiZXR3ZWVuIDIgYW5kIDEyOCBjaGFyYWN0ZXJzGjl0aGlzLmFsbChrLCBrID09ICcqJyB8fCBrLnNpemUoKSA+PSAyICYmIGsuc2l6ZSgpIDw9MTI4IClSFHRlbmFudFJvbGVzS2V5c1ZhbGlkQqABCg9jb20uZml0cy5hcGkudjFCFFByZWRlZmluZWRSdWxlc1Byb3RvUAFaKWdpdGh1Yi5jb20vZmktdHMvYXBpL2dvL2ZpdHMvYXBpL3YxO2FwaXYxogIDRkFYqgILRml0cy5BcGkuVjHKAgtGaXRzXEFwaVxWMeICF0ZpdHNcQXBpXFYxXEdQQk1ldGFkYXRh6gINRml0czo6QXBpOjpWMQ", [file_buf_validate_validate]);
15
15
 
16
16
  /**
17
17
  * Macaddress returns true if the given string is a valid macadress
@@ -77,13 +77,45 @@ export const is_ip_or_hostname: GenExtension<StringRules, boolean> = /*@__PURE__
77
77
  export const trimmed: GenExtension<StringRules, boolean> = /*@__PURE__*/
78
78
  extDesc(file_fits_api_v1_predefined_rules, 7);
79
79
 
80
+ /**
81
+ * IsProjectSlug enforces the string to be usable as a project slug.
82
+ *
83
+ * @generated from extension: optional bool is_project_slug = 80048959;
84
+ */
85
+ export const is_project_slug: GenExtension<StringRules, boolean> = /*@__PURE__*/
86
+ extDesc(file_fits_api_v1_predefined_rules, 8);
87
+
88
+ /**
89
+ * IsIpv4Cidr validates if the given string is a valid IPv4 CIDR, e.g. 10.0.0.0/24
90
+ *
91
+ * @generated from extension: optional bool is_ipv4_cidr = 80048960;
92
+ */
93
+ export const is_ipv4_cidr: GenExtension<StringRules, boolean> = /*@__PURE__*/
94
+ extDesc(file_fits_api_v1_predefined_rules, 9);
95
+
96
+ /**
97
+ * IsTenantSubjectPermission returns true if name field satisfies our requirements.
98
+ *
99
+ * @generated from extension: optional bool is_tenant_subject_permission = 80048962;
100
+ */
101
+ export const is_tenant_subject_permission: GenExtension<StringRules, boolean> = /*@__PURE__*/
102
+ extDesc(file_fits_api_v1_predefined_rules, 10);
103
+
104
+ /**
105
+ * IsProjectSubjectPermission returns true if name field satisfies our requirements.
106
+ *
107
+ * @generated from extension: optional bool is_project_subject_permission = 80048963;
108
+ */
109
+ export const is_project_subject_permission: GenExtension<StringRules, boolean> = /*@__PURE__*/
110
+ extDesc(file_fits_api_v1_predefined_rules, 11);
111
+
80
112
  /**
81
113
  * Prefixes validates if a slice of prefixes in string form are valid
82
114
  *
83
115
  * @generated from extension: optional bool prefixes = 80058951;
84
116
  */
85
117
  export const prefixes: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
86
- extDesc(file_fits_api_v1_predefined_rules, 8);
118
+ extDesc(file_fits_api_v1_predefined_rules, 12);
87
119
 
88
120
  /**
89
121
  * Ips validates if a slice of ips in string form are valid
@@ -91,7 +123,7 @@ export const prefixes: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
91
123
  * @generated from extension: optional bool ips = 80058952;
92
124
  */
93
125
  export const ips: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
94
- extDesc(file_fits_api_v1_predefined_rules, 9);
126
+ extDesc(file_fits_api_v1_predefined_rules, 13);
95
127
 
96
128
  /**
97
129
  * AreHostAndPort validates if a slice of strings are all in the form of <ip | host>:<port>
@@ -99,7 +131,7 @@ export const ips: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
99
131
  * @generated from extension: optional bool are_host_and_port = 80058953;
100
132
  */
101
133
  export const are_host_and_port: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
102
- extDesc(file_fits_api_v1_predefined_rules, 10);
134
+ extDesc(file_fits_api_v1_predefined_rules, 14);
103
135
 
104
136
  /**
105
137
  * All Trimmed enforces all strings to be trimmed, e.g. no whitespaces at the begin and end
@@ -107,7 +139,7 @@ export const are_host_and_port: GenExtension<RepeatedRules, boolean> = /*@__PURE
107
139
  * @generated from extension: optional bool all_trimmed = 80058954;
108
140
  */
109
141
  export const all_trimmed: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
110
- extDesc(file_fits_api_v1_predefined_rules, 11);
142
+ extDesc(file_fits_api_v1_predefined_rules, 15);
111
143
 
112
144
  /**
113
145
  * Keys and Values trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end
@@ -115,7 +147,7 @@ export const all_trimmed: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
115
147
  * @generated from extension: optional bool keys_and_values_trimmed = 80068951;
116
148
  */
117
149
  export const keys_and_values_trimmed: GenExtension<MapRules, boolean> = /*@__PURE__*/
118
- extDesc(file_fits_api_v1_predefined_rules, 12);
150
+ extDesc(file_fits_api_v1_predefined_rules, 16);
119
151
 
120
152
  /**
121
153
  * Keys trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end
@@ -123,5 +155,21 @@ export const keys_and_values_trimmed: GenExtension<MapRules, boolean> = /*@__PUR
123
155
  * @generated from extension: optional bool keys_trimmed = 80068952;
124
156
  */
125
157
  export const keys_trimmed: GenExtension<MapRules, boolean> = /*@__PURE__*/
126
- extDesc(file_fits_api_v1_predefined_rules, 13);
158
+ extDesc(file_fits_api_v1_predefined_rules, 17);
159
+
160
+ /**
161
+ * ProjectRolesKeysValid ensures that project roles keys met our requirements.
162
+ *
163
+ * @generated from extension: optional bool project_roles_keys_valid = 80068953;
164
+ */
165
+ export const project_roles_keys_valid: GenExtension<MapRules, boolean> = /*@__PURE__*/
166
+ extDesc(file_fits_api_v1_predefined_rules, 18);
167
+
168
+ /**
169
+ * TenantRolesKeysValid ensures that tenant roles keys met our requirements.
170
+ *
171
+ * @generated from extension: optional bool tenant_roles_keys_valid = 80068954;
172
+ */
173
+ export const tenant_roles_keys_valid: GenExtension<MapRules, boolean> = /*@__PURE__*/
174
+ extDesc(file_fits_api_v1_predefined_rules, 19);
127
175
 
@@ -1,5 +1,5 @@
1
1
  import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
2
- import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb";
2
+ import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb.js";
3
3
  import type { Message } from "@bufbuild/protobuf";
4
4
  /**
5
5
  * Describes the file fits/api/v1/project.proto.
@@ -48,6 +48,13 @@ export type Project = Message<"fits.api.v1.Project"> & {
48
48
  * @generated from field: optional string avatar_url = 6;
49
49
  */
50
50
  avatarUrl?: string | undefined;
51
+ /**
52
+ * Slug is an immutable identifier of the project.
53
+ * Guaranteed to be unique within a tenant.
54
+ *
55
+ * @generated from field: string slug = 7;
56
+ */
57
+ slug: string;
51
58
  };
52
59
  /**
53
60
  * Describes the message fits.api.v1.Project.
@@ -151,12 +158,11 @@ export declare const ProjectServiceGetResponseSchema: GenMessage<ProjectServiceG
151
158
  */
152
159
  export type ProjectServiceCreateRequest = Message<"fits.api.v1.ProjectServiceCreateRequest"> & {
153
160
  /**
154
- * Login is the tenant of this project
155
- * TODO: is login really a good name?
161
+ * Tenant is the tenant of this project (the tenant login)
156
162
  *
157
- * @generated from field: string login = 1;
163
+ * @generated from field: string tenant = 1;
158
164
  */
159
- login: string;
165
+ tenant: string;
160
166
  /**
161
167
  * Name of this project, unique per tenant
162
168
  *
@@ -1,15 +1,14 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/project.proto (package fits.api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
  import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
5
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
6
- import { file_fits_api_v1_common } from "./common_pb";
7
- import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb";
8
- import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
5
+ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.js";
6
+ import { file_fits_api_v1_common } from "./common_pb.js";
7
+ import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb.js";
9
8
  /**
10
9
  * Describes the file fits/api/v1/project.proto.
11
10
  */
12
- export const file_fits_api_v1_project = /*@__PURE__*/ fileDesc("ChlmaXRzL2FwaS92MS9wcm9qZWN0LnByb3RvEgtmaXRzLmFwaS52MSKtAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEh8KBG1ldGEYAiABKAsyES5maXRzLmFwaS52MS5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIr4BChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESKAoGbGFiZWxzGAQgASgLMhMuZml0cy5hcGkudjEuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJEChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRImCghwcm9qZWN0cxgBIAMoCzIULmZpdHMuYXBpLnYxLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIkIKGVByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QiwwEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEhcKCmF2YXRhcl91cmwYBCABKAlIAIgBARIjCgZsYWJlbHMYBSABKAsyEy5maXRzLmFwaS52MS5MYWJlbHNCDQoLX2F2YXRhcl91cmwiRQocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuZml0cy5hcGkudjEuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiRQocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuZml0cy5hcGkudjEuUHJvamVjdCKxAgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjQKC3VwZGF0ZV9tZXRhGAIgASgLMhcuZml0cy5hcGkudjEuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEi4KBmxhYmVscxgGIAEoCzIZLmZpdHMuYXBpLnYxLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIkUKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QylgQKDlByb2plY3RTZXJ2aWNlEmEKBExpc3QSJi5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0GicuZml0cy5hcGkudjEuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEmEKA0dldBIlLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBomLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEmkKBkNyZWF0ZRIoLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBopLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESaAoGRGVsZXRlEiguZml0cy5hcGkudjEuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0GikuZml0cy5hcGkudjEuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEmkKBlVwZGF0ZRIoLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBopLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAFCmAEKD2NvbS5maXRzLmFwaS52MUIMUHJvamVjdFByb3RvUAFaKWdpdGh1Yi5jb20vZmktdHMvYXBpL2dvL2ZpdHMvYXBpL3YxO2FwaXYxogIDRkFYqgILRml0cy5BcGkuVjHKAgtGaXRzXEFwaVxWMeICF0ZpdHNcQXBpXFYxXEdQQk1ldGFkYXRh6gINRml0czo6QXBpOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules, file_google_protobuf_timestamp]);
11
+ export const file_fits_api_v1_project = /*@__PURE__*/ fileDesc("ChlmaXRzL2FwaS92MS9wcm9qZWN0LnByb3RvEgtmaXRzLmFwaS52MSLIAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEh8KBG1ldGEYAiABKAsyES5maXRzLmFwaS52MS5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBEhkKBHNsdWcYByABKAlCC7pICHIG+LOusQIBQg0KC19hdmF0YXJfdXJsIr4BChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESKAoGbGFiZWxzGAQgASgLMhMuZml0cy5hcGkudjEuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJEChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRImCghwcm9qZWN0cxgBIAMoCzIULmZpdHMuYXBpLnYxLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIkIKGVByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QixAEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIbCgZ0ZW5hbnQYASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIXCgphdmF0YXJfdXJsGAQgASgJSACIAQESIwoGbGFiZWxzGAUgASgLMhMuZml0cy5hcGkudjEuTGFiZWxzQg0KC19hdmF0YXJfdXJsIkUKHFByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QiOAobUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIkUKHFByb2plY3RTZXJ2aWNlRGVsZXRlUmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QisQIKG1Byb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARI0Cgt1cGRhdGVfbWV0YRgCIAEoCzIXLmZpdHMuYXBpLnYxLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEhcKCmF2YXRhcl91cmwYBSABKAlIAogBARIuCgZsYWJlbHMYBiABKAsyGS5maXRzLmFwaS52MS5VcGRhdGVMYWJlbHNIA4gBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDQoLX2F2YXRhcl91cmxCCQoHX2xhYmVscyJFChxQcm9qZWN0U2VydmljZVVwZGF0ZVJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5maXRzLmFwaS52MS5Qcm9qZWN0MpYECg5Qcm9qZWN0U2VydmljZRJhCgRMaXN0EiYuZml0cy5hcGkudjEuUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBonLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgC4PMYAhJhCgNHZXQSJS5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUdldFJlcXVlc3QaJi5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUdldFJlc3BvbnNlIgvK8xgDAQID4PMYAhJpCgZDcmVhdGUSKC5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QaKS5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEmgKBkRlbGV0ZRIoLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBopLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCcrzGAEB4PMYARJpCgZVcGRhdGUSKC5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QaKS5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZVVwZGF0ZVJlc3BvbnNlIgrK8xgCAQLg8xgBQpgBCg9jb20uZml0cy5hcGkudjFCDFByb2plY3RQcm90b1ABWilnaXRodWIuY29tL2ZpLXRzL2FwaS9nby9maXRzL2FwaS92MTthcGl2MaICA0ZBWKoCC0ZpdHMuQXBpLlYxygILRml0c1xBcGlcVjHiAhdGaXRzXEFwaVxWMVxHUEJNZXRhZGF0YeoCDUZpdHM6OkFwaTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules]);
13
12
  /**
14
13
  * Describes the message fits.api.v1.Project.
15
14
  * Use `create(ProjectSchema)` to create a new message.
@@ -1,21 +1,20 @@
1
- // @generated by protoc-gen-es v2.14.1 with parameter "target=ts"
1
+ // @generated by protoc-gen-es v2.14.1 with parameter "target=ts,import_extension=js"
2
2
  // @generated from file fits/api/v1/project.proto (package fits.api.v1, syntax proto3)
3
3
  /* eslint-disable */
4
4
 
5
5
  import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
6
  import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
- import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
8
- import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb";
9
- import { file_fits_api_v1_common } from "./common_pb";
10
- import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb";
11
- import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
+ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.js";
8
+ import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb.js";
9
+ import { file_fits_api_v1_common } from "./common_pb.js";
10
+ import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb.js";
12
11
  import type { Message } from "@bufbuild/protobuf";
13
12
 
14
13
  /**
15
14
  * Describes the file fits/api/v1/project.proto.
16
15
  */
17
16
  export const file_fits_api_v1_project: GenFile = /*@__PURE__*/
18
- fileDesc("ChlmaXRzL2FwaS92MS9wcm9qZWN0LnByb3RvEgtmaXRzLmFwaS52MSKtAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEh8KBG1ldGEYAiABKAsyES5maXRzLmFwaS52MS5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIr4BChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESKAoGbGFiZWxzGAQgASgLMhMuZml0cy5hcGkudjEuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJEChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRImCghwcm9qZWN0cxgBIAMoCzIULmZpdHMuYXBpLnYxLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIkIKGVByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QiwwEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEhcKCmF2YXRhcl91cmwYBCABKAlIAIgBARIjCgZsYWJlbHMYBSABKAsyEy5maXRzLmFwaS52MS5MYWJlbHNCDQoLX2F2YXRhcl91cmwiRQocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuZml0cy5hcGkudjEuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiRQocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuZml0cy5hcGkudjEuUHJvamVjdCKxAgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjQKC3VwZGF0ZV9tZXRhGAIgASgLMhcuZml0cy5hcGkudjEuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEi4KBmxhYmVscxgGIAEoCzIZLmZpdHMuYXBpLnYxLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIkUKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QylgQKDlByb2plY3RTZXJ2aWNlEmEKBExpc3QSJi5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0GicuZml0cy5hcGkudjEuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgCEmEKA0dldBIlLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBomLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEmkKBkNyZWF0ZRIoLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBopLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESaAoGRGVsZXRlEiguZml0cy5hcGkudjEuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0GikuZml0cy5hcGkudjEuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEmkKBlVwZGF0ZRIoLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBopLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAFCmAEKD2NvbS5maXRzLmFwaS52MUIMUHJvamVjdFByb3RvUAFaKWdpdGh1Yi5jb20vZmktdHMvYXBpL2dvL2ZpdHMvYXBpL3YxO2FwaXYxogIDRkFYqgILRml0cy5BcGkuVjHKAgtGaXRzXEFwaVxWMeICF0ZpdHNcQXBpXFYxXEdQQk1ldGFkYXRh6gINRml0czo6QXBpOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules, file_google_protobuf_timestamp]);
17
+ fileDesc("ChlmaXRzL2FwaS92MS9wcm9qZWN0LnByb3RvEgtmaXRzLmFwaS52MSLIAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEh8KBG1ldGEYAiABKAsyES5maXRzLmFwaS52MS5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBEhkKBHNsdWcYByABKAlCC7pICHIG+LOusQIBQg0KC19hdmF0YXJfdXJsIr4BChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESKAoGbGFiZWxzGAQgASgLMhMuZml0cy5hcGkudjEuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJEChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRImCghwcm9qZWN0cxgBIAMoCzIULmZpdHMuYXBpLnYxLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIkIKGVByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QixAEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIbCgZ0ZW5hbnQYASABKAlCC7pICHIGwLOusQIBEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIXCgphdmF0YXJfdXJsGAQgASgJSACIAQESIwoGbGFiZWxzGAUgASgLMhMuZml0cy5hcGkudjEuTGFiZWxzQg0KC19hdmF0YXJfdXJsIkUKHFByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QiOAobUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIkUKHFByb2plY3RTZXJ2aWNlRGVsZXRlUmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmZpdHMuYXBpLnYxLlByb2plY3QisQIKG1Byb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARI0Cgt1cGRhdGVfbWV0YRgCIAEoCzIXLmZpdHMuYXBpLnYxLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEhcKCmF2YXRhcl91cmwYBSABKAlIAogBARIuCgZsYWJlbHMYBiABKAsyGS5maXRzLmFwaS52MS5VcGRhdGVMYWJlbHNIA4gBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDQoLX2F2YXRhcl91cmxCCQoHX2xhYmVscyJFChxQcm9qZWN0U2VydmljZVVwZGF0ZVJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5maXRzLmFwaS52MS5Qcm9qZWN0MpYECg5Qcm9qZWN0U2VydmljZRJhCgRMaXN0EiYuZml0cy5hcGkudjEuUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBonLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgC4PMYAhJhCgNHZXQSJS5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUdldFJlcXVlc3QaJi5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUdldFJlc3BvbnNlIgvK8xgDAQID4PMYAhJpCgZDcmVhdGUSKC5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUNyZWF0ZVJlcXVlc3QaKS5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZUNyZWF0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEmgKBkRlbGV0ZRIoLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlRGVsZXRlUmVxdWVzdBopLmZpdHMuYXBpLnYxLlByb2plY3RTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCcrzGAEB4PMYARJpCgZVcGRhdGUSKC5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZVVwZGF0ZVJlcXVlc3QaKS5maXRzLmFwaS52MS5Qcm9qZWN0U2VydmljZVVwZGF0ZVJlc3BvbnNlIgrK8xgCAQLg8xgBQpgBCg9jb20uZml0cy5hcGkudjFCDFByb2plY3RQcm90b1ABWilnaXRodWIuY29tL2ZpLXRzL2FwaS9nby9maXRzL2FwaS92MTthcGl2MaICA0ZBWKoCC0ZpdHMuQXBpLlYxygILRml0c1xBcGlcVjHiAhdGaXRzXEFwaVxWMVxHUEJNZXRhZGF0YeoCDUZpdHM6OkFwaTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules]);
19
18
 
20
19
  /**
21
20
  * Project defines a group of resources belonging to a tenant
@@ -65,6 +64,14 @@ export type Project = Message<"fits.api.v1.Project"> & {
65
64
  * @generated from field: optional string avatar_url = 6;
66
65
  */
67
66
  avatarUrl?: string | undefined;
67
+
68
+ /**
69
+ * Slug is an immutable identifier of the project.
70
+ * Guaranteed to be unique within a tenant.
71
+ *
72
+ * @generated from field: string slug = 7;
73
+ */
74
+ slug: string;
68
75
  };
69
76
 
70
77
  /**
@@ -186,12 +193,11 @@ export const ProjectServiceGetResponseSchema: GenMessage<ProjectServiceGetRespon
186
193
  */
187
194
  export type ProjectServiceCreateRequest = Message<"fits.api.v1.ProjectServiceCreateRequest"> & {
188
195
  /**
189
- * Login is the tenant of this project
190
- * TODO: is login really a good name?
196
+ * Tenant is the tenant of this project (the tenant login)
191
197
  *
192
- * @generated from field: string login = 1;
198
+ * @generated from field: string tenant = 1;
193
199
  */
194
- login: string;
200
+ tenant: string;
195
201
 
196
202
  /**
197
203
  * Name of this project, unique per tenant
@@ -1,5 +1,5 @@
1
1
  import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
2
- import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb";
2
+ import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb.js";
3
3
  import type { Message } from "@bufbuild/protobuf";
4
4
  /**
5
5
  * Describes the file fits/api/v1/tenant.proto.
@@ -96,11 +96,11 @@ export declare const TenantServiceListRequestSchema: GenMessage<TenantServiceLis
96
96
  */
97
97
  export type TenantServiceGetRequest = Message<"fits.api.v1.TenantServiceGetRequest"> & {
98
98
  /**
99
- * Login of the tenant
99
+ * Tenant is the login of the tenant
100
100
  *
101
- * @generated from field: string login = 1;
101
+ * @generated from field: string tenant = 1;
102
102
  */
103
- login: string;
103
+ tenant: string;
104
104
  };
105
105
  /**
106
106
  * Describes the message fits.api.v1.TenantServiceGetRequest.
@@ -156,11 +156,11 @@ export declare const TenantServiceCreateRequestSchema: GenMessage<TenantServiceC
156
156
  */
157
157
  export type TenantServiceUpdateRequest = Message<"fits.api.v1.TenantServiceUpdateRequest"> & {
158
158
  /**
159
- * Login of the tenant
159
+ * Tenant is the login of the tenant
160
160
  *
161
- * @generated from field: string login = 1;
161
+ * @generated from field: string tenant = 1;
162
162
  */
163
- login: string;
163
+ tenant: string;
164
164
  /**
165
165
  * UpdateMeta contains the timestamp and strategy to be used in this update request
166
166
  *
@@ -210,11 +210,11 @@ export declare const TenantServiceUpdateRequestSchema: GenMessage<TenantServiceU
210
210
  */
211
211
  export type TenantServiceDeleteRequest = Message<"fits.api.v1.TenantServiceDeleteRequest"> & {
212
212
  /**
213
- * Login of the tenant
213
+ * Tenant is the login of the tenant
214
214
  *
215
- * @generated from field: string login = 1;
215
+ * @generated from field: string tenant = 1;
216
216
  */
217
- login: string;
217
+ tenant: string;
218
218
  };
219
219
  /**
220
220
  * Describes the message fits.api.v1.TenantServiceDeleteRequest.