@metal-stack/api 0.4.3 → 0.5.1

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 (151) hide show
  1. package/{js/Makefile → Makefile} +5 -2
  2. package/bun.lock +74 -0
  3. package/client-test.d.ts +1 -0
  4. package/client-test.js +45 -0
  5. package/client-test.ts +49 -0
  6. package/client.d.ts +97 -0
  7. package/client.js +347 -0
  8. package/client.ts +662 -0
  9. package/{js/metalstack → metalstack}/admin/v2/audit_pb.d.ts +5 -5
  10. package/{js/metalstack → metalstack}/admin/v2/audit_pb.ts +5 -5
  11. package/{js/metalstack → metalstack}/admin/v2/component_pb.d.ts +6 -6
  12. package/{js/metalstack → metalstack}/admin/v2/component_pb.ts +6 -6
  13. package/{js/metalstack → metalstack}/admin/v2/filesystem_pb.d.ts +28 -28
  14. package/{js/metalstack → metalstack}/admin/v2/filesystem_pb.ts +28 -28
  15. package/{js/metalstack → metalstack}/admin/v2/image_pb.d.ts +22 -16
  16. package/{js/metalstack → metalstack}/admin/v2/image_pb.js +1 -1
  17. package/{js/metalstack → metalstack}/admin/v2/image_pb.ts +24 -17
  18. package/{js/metalstack → metalstack}/admin/v2/ip_pb.d.ts +2 -2
  19. package/{js/metalstack → metalstack}/admin/v2/ip_pb.ts +2 -2
  20. package/{js/metalstack → metalstack}/admin/v2/machine_pb.d.ts +47 -55
  21. package/{js/metalstack → metalstack}/admin/v2/machine_pb.js +1 -1
  22. package/{js/metalstack → metalstack}/admin/v2/machine_pb.ts +48 -55
  23. package/{js/metalstack → metalstack}/admin/v2/network_pb.d.ts +36 -36
  24. package/{js/metalstack → metalstack}/admin/v2/network_pb.ts +36 -36
  25. package/{js/metalstack → metalstack}/admin/v2/partition_pb.d.ts +26 -26
  26. package/{js/metalstack → metalstack}/admin/v2/partition_pb.ts +26 -26
  27. package/{js/metalstack → metalstack}/admin/v2/project_pb.d.ts +2 -2
  28. package/{js/metalstack → metalstack}/admin/v2/project_pb.ts +2 -2
  29. package/{js/metalstack → metalstack}/admin/v2/size_imageconstraint_pb.d.ts +18 -18
  30. package/{js/metalstack → metalstack}/admin/v2/size_imageconstraint_pb.ts +18 -18
  31. package/{js/metalstack → metalstack}/admin/v2/size_pb.d.ts +11 -11
  32. package/{js/metalstack → metalstack}/admin/v2/size_pb.ts +11 -11
  33. package/{js/metalstack → metalstack}/admin/v2/size_reservation_pb.d.ts +14 -14
  34. package/{js/metalstack → metalstack}/admin/v2/size_reservation_pb.ts +14 -14
  35. package/{js/metalstack → metalstack}/admin/v2/switch_pb.d.ts +29 -29
  36. package/{js/metalstack → metalstack}/admin/v2/switch_pb.ts +29 -29
  37. package/{js/metalstack → metalstack}/admin/v2/task_pb.d.ts +47 -47
  38. package/{js/metalstack → metalstack}/admin/v2/task_pb.js +8 -8
  39. package/{js/metalstack → metalstack}/admin/v2/task_pb.ts +47 -47
  40. package/{js/metalstack → metalstack}/admin/v2/tenant_pb.d.ts +22 -22
  41. package/{js/metalstack → metalstack}/admin/v2/tenant_pb.ts +22 -22
  42. package/{js/metalstack → metalstack}/admin/v2/token_pb.d.ts +8 -8
  43. package/{js/metalstack → metalstack}/admin/v2/token_pb.ts +8 -8
  44. package/{js/metalstack → metalstack}/admin/v2/vpn_pb.d.ts +13 -13
  45. package/{js/metalstack → metalstack}/admin/v2/vpn_pb.ts +13 -13
  46. package/{js/metalstack → metalstack}/api/v2/audit_pb.d.ts +37 -37
  47. package/{js/metalstack → metalstack}/api/v2/audit_pb.js +3 -3
  48. package/{js/metalstack → metalstack}/api/v2/audit_pb.ts +37 -37
  49. package/{js/metalstack → metalstack}/api/v2/common_pb.d.ts +68 -68
  50. package/{js/metalstack → metalstack}/api/v2/common_pb.js +47 -47
  51. package/{js/metalstack → metalstack}/api/v2/common_pb.ts +68 -68
  52. package/{js/metalstack → metalstack}/api/v2/component_pb.d.ts +17 -17
  53. package/{js/metalstack → metalstack}/api/v2/component_pb.js +8 -8
  54. package/{js/metalstack → metalstack}/api/v2/component_pb.ts +17 -17
  55. package/{js/metalstack → metalstack}/api/v2/filesystem_pb.d.ts +82 -82
  56. package/{js/metalstack → metalstack}/api/v2/filesystem_pb.js +23 -23
  57. package/{js/metalstack → metalstack}/api/v2/filesystem_pb.ts +82 -82
  58. package/{js/metalstack → metalstack}/api/v2/health_pb.d.ts +21 -21
  59. package/{js/metalstack → metalstack}/api/v2/health_pb.js +13 -13
  60. package/{js/metalstack → metalstack}/api/v2/health_pb.ts +21 -21
  61. package/{js/metalstack → metalstack}/api/v2/image_pb.d.ts +45 -45
  62. package/{js/metalstack → metalstack}/api/v2/image_pb.js +9 -9
  63. package/{js/metalstack → metalstack}/api/v2/image_pb.ts +45 -45
  64. package/{js/metalstack → metalstack}/api/v2/ip_pb.d.ts +67 -67
  65. package/{js/metalstack → metalstack}/api/v2/ip_pb.js +8 -8
  66. package/{js/metalstack → metalstack}/api/v2/ip_pb.ts +67 -67
  67. package/{js/metalstack → metalstack}/api/v2/machine_pb.d.ts +422 -374
  68. package/{js/metalstack → metalstack}/api/v2/machine_pb.js +94 -89
  69. package/{js/metalstack → metalstack}/api/v2/machine_pb.ts +453 -396
  70. package/{js/metalstack → metalstack}/api/v2/method_pb.d.ts +7 -7
  71. package/{js/metalstack → metalstack}/api/v2/method_pb.ts +7 -7
  72. package/{js/metalstack → metalstack}/api/v2/network_pb.d.ts +98 -98
  73. package/{js/metalstack → metalstack}/api/v2/network_pb.js +16 -16
  74. package/{js/metalstack → metalstack}/api/v2/network_pb.ts +98 -98
  75. package/{js/metalstack → metalstack}/api/v2/partition_pb.d.ts +28 -28
  76. package/{js/metalstack → metalstack}/api/v2/partition_pb.ts +28 -28
  77. package/{js/metalstack → metalstack}/api/v2/predefined_rules_pb.d.ts +30 -24
  78. package/{js/metalstack → metalstack}/api/v2/predefined_rules_pb.js +40 -34
  79. package/{js/metalstack → metalstack}/api/v2/predefined_rules_pb.ts +42 -34
  80. package/{js/metalstack → metalstack}/api/v2/project_pb.d.ts +114 -114
  81. package/{js/metalstack → metalstack}/api/v2/project_pb.ts +114 -114
  82. package/{js/metalstack → metalstack}/api/v2/size_imageconstraint_pb.d.ts +21 -22
  83. package/{js/metalstack → metalstack}/api/v2/size_imageconstraint_pb.ts +21 -22
  84. package/{js/metalstack → metalstack}/api/v2/size_pb.d.ts +29 -29
  85. package/{js/metalstack → metalstack}/api/v2/size_pb.js +6 -6
  86. package/{js/metalstack → metalstack}/api/v2/size_pb.ts +29 -29
  87. package/{js/metalstack → metalstack}/api/v2/size_reservation_pb.d.ts +27 -27
  88. package/{js/metalstack → metalstack}/api/v2/size_reservation_pb.ts +27 -27
  89. package/{js/metalstack → metalstack}/api/v2/switch_pb.d.ts +8 -8
  90. package/{js/metalstack → metalstack}/api/v2/switch_pb.js +1 -1
  91. package/{js/metalstack → metalstack}/api/v2/switch_pb.ts +9 -9
  92. package/{js/metalstack → metalstack}/api/v2/tenant_pb.d.ts +114 -116
  93. package/{js/metalstack → metalstack}/api/v2/tenant_pb.ts +114 -116
  94. package/{js/metalstack → metalstack}/api/v2/token_pb.d.ts +103 -103
  95. package/{js/metalstack → metalstack}/api/v2/token_pb.js +3 -3
  96. package/{js/metalstack → metalstack}/api/v2/token_pb.ts +103 -103
  97. package/{js/metalstack → metalstack}/api/v2/user_pb.d.ts +8 -8
  98. package/{js/metalstack → metalstack}/api/v2/user_pb.ts +8 -8
  99. package/{js/metalstack → metalstack}/api/v2/version_pb.d.ts +5 -5
  100. package/{js/metalstack → metalstack}/api/v2/version_pb.ts +5 -5
  101. package/{js/metalstack → metalstack}/api/v2/vpn_pb.d.ts +6 -6
  102. package/{js/metalstack → metalstack}/api/v2/vpn_pb.ts +6 -6
  103. package/{js/metalstack → metalstack}/infra/v2/bmc_pb.d.ts +15 -17
  104. package/{js/metalstack → metalstack}/infra/v2/bmc_pb.js +1 -1
  105. package/{js/metalstack → metalstack}/infra/v2/bmc_pb.ts +16 -16
  106. package/{js/metalstack → metalstack}/infra/v2/boot_pb.d.ts +36 -36
  107. package/{js/metalstack → metalstack}/infra/v2/boot_pb.ts +36 -36
  108. package/{js/metalstack → metalstack}/infra/v2/component_pb.d.ts +5 -5
  109. package/{js/metalstack → metalstack}/infra/v2/component_pb.ts +5 -5
  110. package/{js/metalstack → metalstack}/infra/v2/event_pb.d.ts +3 -3
  111. package/{js/metalstack → metalstack}/infra/v2/event_pb.ts +3 -3
  112. package/{js/metalstack → metalstack}/infra/v2/switch_pb.d.ts +12 -12
  113. package/{js/metalstack → metalstack}/infra/v2/switch_pb.ts +12 -12
  114. package/package.json +4 -3
  115. package/test-interceptor.d.ts +9 -0
  116. package/test-interceptor.js +33 -0
  117. package/test-interceptor.ts +49 -0
  118. package/tsconfig.json +14 -0
  119. package/LICENSE +0 -21
  120. package/README.md +0 -117
  121. package/js/tsconfig.json +0 -70
  122. /package/{js/buf → buf}/validate/validate_pb.d.ts +0 -0
  123. /package/{js/buf → buf}/validate/validate_pb.js +0 -0
  124. /package/{js/buf → buf}/validate/validate_pb.ts +0 -0
  125. /package/{js/metalstack → metalstack}/admin/v2/audit_pb.js +0 -0
  126. /package/{js/metalstack → metalstack}/admin/v2/component_pb.js +0 -0
  127. /package/{js/metalstack → metalstack}/admin/v2/filesystem_pb.js +0 -0
  128. /package/{js/metalstack → metalstack}/admin/v2/ip_pb.js +0 -0
  129. /package/{js/metalstack → metalstack}/admin/v2/network_pb.js +0 -0
  130. /package/{js/metalstack → metalstack}/admin/v2/partition_pb.js +0 -0
  131. /package/{js/metalstack → metalstack}/admin/v2/project_pb.js +0 -0
  132. /package/{js/metalstack → metalstack}/admin/v2/size_imageconstraint_pb.js +0 -0
  133. /package/{js/metalstack → metalstack}/admin/v2/size_pb.js +0 -0
  134. /package/{js/metalstack → metalstack}/admin/v2/size_reservation_pb.js +0 -0
  135. /package/{js/metalstack → metalstack}/admin/v2/switch_pb.js +0 -0
  136. /package/{js/metalstack → metalstack}/admin/v2/tenant_pb.js +0 -0
  137. /package/{js/metalstack → metalstack}/admin/v2/token_pb.js +0 -0
  138. /package/{js/metalstack → metalstack}/admin/v2/vpn_pb.js +0 -0
  139. /package/{js/metalstack → metalstack}/api/v2/method_pb.js +0 -0
  140. /package/{js/metalstack → metalstack}/api/v2/partition_pb.js +0 -0
  141. /package/{js/metalstack → metalstack}/api/v2/project_pb.js +0 -0
  142. /package/{js/metalstack → metalstack}/api/v2/size_imageconstraint_pb.js +0 -0
  143. /package/{js/metalstack → metalstack}/api/v2/size_reservation_pb.js +0 -0
  144. /package/{js/metalstack → metalstack}/api/v2/tenant_pb.js +0 -0
  145. /package/{js/metalstack → metalstack}/api/v2/user_pb.js +0 -0
  146. /package/{js/metalstack → metalstack}/api/v2/version_pb.js +0 -0
  147. /package/{js/metalstack → metalstack}/api/v2/vpn_pb.js +0 -0
  148. /package/{js/metalstack → metalstack}/infra/v2/boot_pb.js +0 -0
  149. /package/{js/metalstack → metalstack}/infra/v2/component_pb.js +0 -0
  150. /package/{js/metalstack → metalstack}/infra/v2/event_pb.js +0 -0
  151. /package/{js/metalstack → metalstack}/infra/v2/switch_pb.js +0 -0
@@ -6,148 +6,154 @@ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
6
6
  /**
7
7
  * Describes the file metalstack/api/v2/predefined_rules.proto.
8
8
  */
9
- export const file_metalstack_api_v2_predefined_rules = /*@__PURE__*/ fileDesc("CihtZXRhbHN0YWNrL2FwaS92Mi9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52Mjq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOp0BCgd0cmltbWVkEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL7mlSYgASgIQmXCSGIKYAoOc3RyaW5nLnRyaW1tZWQSK3ZhbHVlIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaIXRoaXMudHJpbSgpLnNpemUoKSA9PSB0aGlzLnNpemUoKVIHdHJpbW1lZDqZAQoHaXNfdXNlchIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi/5pUmIAEoCEJiwkhfCl0KDnN0cmluZy5pc191c2VyEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCA1MTIgY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSA1MTJSBmlzVXNlcjqfAQoJaXNfb3B0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMDmlSYgASgIQmTCSGEKXwoQc3RyaW5nLmlzX29wdGlvbhIjbXVzdCBiZSB3aXRoaW4gMSBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDEgJiYgdGhpcy5zaXplKCkgPD0gMTI4Ughpc09wdGlvbjqYAQoGaXNfa2V5EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMHmlSYgASgIQmPCSGAKXgoNc3RyaW5nLmlzX2tleRIkbXVzdCBiZSB3aXRoaW4gMSBhbmQgODE5MiBjaGFyYWN0ZXJzGid0aGlzLnNpemUoKSA+PSAxICYmIHRoaXMuc2l6ZSgpIDw9IDgxOTJSBWlzS2V5OrABCg9pc190ZW5hbnRfbG9naW4SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYwuaVJiABKAhCasJIZwplChZzdHJpbmcuaXNfdGVuYW50X2xvZ2luEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSDWlzVGVuYW50TG9naW467wEKHGlzX3RlbmFudF9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYw+aVJiABKAhCjwHCSIsBCogBCiNzdHJpbmcuaXNfdGVuYW50X3N1YmplY3RfcGVybWlzc2lvbhIqbXVzdCBiZSAnKicgb3Igd2l0aGluIDIgYW5kIDEyOCBjaGFyYWN0ZXJzGjV0aGlzID09ICcqJyB8fCB0aGlzLnNpemUoKSA+PSAyICYmIHRoaXMuc2l6ZSgpIDw9IDEyOFIZaXNUZW5hbnRTdWJqZWN0UGVybWlzc2lvbjqUAgodaXNfcHJvamVjdF9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYxOaVJiABKAhCsgHCSK4BCqsBCiRzdHJpbmcuaXNfcHJvamVjdF9zdWJqZWN0X3Blcm1pc3Npb24SFW11c3QgYmUgJyonIG9yIGEgdXVpZBpsdGhpcyA9PSAnKicgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpUhppc1Byb2plY3RTdWJqZWN0UGVybWlzc2lvbjqUAgodaXNfbWFjaGluZV9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYxeaVJiABKAhCsgHCSK4BCqsBCiRzdHJpbmcuaXNfbWFjaGluZV9zdWJqZWN0X3Blcm1pc3Npb24SFW11c3QgYmUgJyonIG9yIGEgdXVpZBpsdGhpcyA9PSAnKicgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpUhppc01hY2hpbmVTdWJqZWN0UGVybWlzc2lvbjqPAQoIcHJlZml4ZXMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjHtJYmIAEoCEJTwkhQCk4KEXJlcGVhdGVkLnByZWZpeGVzEhxnaXZlbiBwcmVmaXhlcyBtdXN0IGJlIHZhbGlkGht0aGlzLmFsbChtLCBtLmlzSXBQcmVmaXgoKSlSCHByZWZpeGVzOnUKA2lwcxIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMi0liYgASgIQkPCSEAKPgoMcmVwZWF0ZWQuaXBzEhdnaXZlbiBpcHMgbXVzdCBiZSB2YWxpZBoVdGhpcy5hbGwobSwgbS5pc0lwKCkpUgNpcHM65gEKEWFyZV9ob3N0X2FuZF9wb3J0EhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYybSWJiABKAhCmgHCSJYBCpMBChpyZXBlYXRlZC5hcmVfaG9zdF9hbmRfcG9ydBJQZ2l2ZW4gZW50cmllcyBtdXN0IGFsbCBiZSBpbiB0aGUgZm9ybSBvZiA8aXAgfCBob3N0Pjo8cG9ydD4gYnV0IHBvcnQgaXMgb3B0aW9uYWwaI3RoaXMuYWxsKG0sIG0uaXNIb3N0QW5kUG9ydChmYWxzZSkpUg5hcmVIb3N0QW5kUG9ydDq6AQoLYWxsX3RyaW1tZWQSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjKtJYmIAEoCEJ5wkh2CnQKFHJlcGVhdGVkLmFsbF90cmltbWVkEjJnaXZlbiB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZRoodGhpcy5hbGwobSwgbS50cmltKCkuc2l6ZSgpID09IG0uc2l6ZSgpKVIKYWxsVHJpbW1lZDqEAgoXa2V5c19hbmRfdmFsdWVzX3RyaW1tZWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY14KXJiABKAhCsQHCSK0BCqoBChttYXAua2V5c19hbmRfdmFsdWVzX3RyaW1tZWQSNWtleXMgYW5kIHZhbHVlcyBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlGlR0aGlzLmFsbChrLCBrLnRyaW0oKS5zaXplKCkgPT0gay5zaXplKCkpICYmIHRoaXMuYWxsKHYsIHYudHJpbSgpLnNpemUoKSA9PSB2LnNpemUoKSlSFGtleXNBbmRWYWx1ZXNUcmltbWVkOqsBCgxrZXlzX3RyaW1tZWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY2IKXJiABKAhCbcJIagpoChBtYXAua2V5c190cmltbWVkEiprZXlzIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaKHRoaXMuYWxsKGssIGsudHJpbSgpLnNpemUoKSA9PSBrLnNpemUoKSlSC2tleXNUcmltbWVkOpICChhwcm9qZWN0X3JvbGVzX2tleXNfdmFsaWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY2YKXJiABKAhCvQHCSLkBCrYBChdwcm9qZWN0X3JvbGVzLmtleS52YWxpZBImc3ViamVjdCBtdXN0IGJlIGEgJyonLCBvciBhIHZhbGlkIFVVSUQac3RoaXMuYWxsKGssIGsgPT0gJyonIHx8IGsubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKSlSFXByb2plY3RSb2xlc0tleXNWYWxpZDroAQoXdGVuYW50X3JvbGVzX2tleXNfdmFsaWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY2oKXJiABKAhClQHCSJEBCo4BChZ0ZW5hbnRfcm9sZXMua2V5LnZhbGlkEjNzdWJqZWN0IG11c3QgYmUgJyonIG9yIGJldHdlZW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaP3RoaXMuYWxsKGssIGsgPT0gJyonIHx8IHRoaXMuc2l6ZSgpID49IDIgfHwgdGhpcy5zaXplKCkgPD0xMjggKVIUdGVuYW50Um9sZXNLZXlzVmFsaWQ6ngIKGG1hY2hpbmVfcm9sZXNfa2V5c192YWxpZBIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlcxjbgpcmIAEoCELJAcJIxQEKwgEKF21hY2hpbmVfcm9sZXMua2V5LnZhbGlkEjJzdWJqZWN0IG11c3QgYmUgZW1wdHkgc3RyaW5nLCAnKicsIG9yIGEgdmFsaWQgVVVJRBpzdGhpcy5hbGwoaywgayA9PSAnKicgfHwgay5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpKVIVbWFjaGluZVJvbGVzS2V5c1ZhbGlkQsoBChVjb20ubWV0YWxzdGFjay5hcGkudjJCFFByZWRlZmluZWRSdWxlc1Byb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMg", [file_buf_validate_validate]);
9
+ export const file_metalstack_api_v2_predefined_rules = /*@__PURE__*/ fileDesc("CihtZXRhbHN0YWNrL2FwaS92Mi9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52Mjq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOp0BCgd0cmltbWVkEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL7mlSYgASgIQmXCSGIKYAoOc3RyaW5nLnRyaW1tZWQSK3ZhbHVlIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaIXRoaXMudHJpbSgpLnNpemUoKSA9PSB0aGlzLnNpemUoKVIHdHJpbW1lZDqZAQoHaXNfdXNlchIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi/5pUmIAEoCEJiwkhfCl0KDnN0cmluZy5pc191c2VyEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCA1MTIgY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSA1MTJSBmlzVXNlcjqfAQoJaXNfb3B0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMDmlSYgASgIQmTCSGEKXwoQc3RyaW5nLmlzX29wdGlvbhIjbXVzdCBiZSB3aXRoaW4gMSBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDEgJiYgdGhpcy5zaXplKCkgPD0gMTI4Ughpc09wdGlvbjqYAQoGaXNfa2V5EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMHmlSYgASgIQmPCSGAKXgoNc3RyaW5nLmlzX2tleRIkbXVzdCBiZSB3aXRoaW4gMSBhbmQgODE5MiBjaGFyYWN0ZXJzGid0aGlzLnNpemUoKSA+PSAxICYmIHRoaXMuc2l6ZSgpIDw9IDgxOTJSBWlzS2V5OrABCg9pc190ZW5hbnRfbG9naW4SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYwuaVJiABKAhCasJIZwplChZzdHJpbmcuaXNfdGVuYW50X2xvZ2luEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSDWlzVGVuYW50TG9naW467wEKHGlzX3RlbmFudF9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYw+aVJiABKAhCjwHCSIsBCogBCiNzdHJpbmcuaXNfdGVuYW50X3N1YmplY3RfcGVybWlzc2lvbhIqbXVzdCBiZSAnKicgb3Igd2l0aGluIDIgYW5kIDEyOCBjaGFyYWN0ZXJzGjV0aGlzID09ICcqJyB8fCB0aGlzLnNpemUoKSA+PSAyICYmIHRoaXMuc2l6ZSgpIDw9IDEyOFIZaXNUZW5hbnRTdWJqZWN0UGVybWlzc2lvbjqUAgodaXNfcHJvamVjdF9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYxOaVJiABKAhCsgHCSK4BCqsBCiRzdHJpbmcuaXNfcHJvamVjdF9zdWJqZWN0X3Blcm1pc3Npb24SFW11c3QgYmUgJyonIG9yIGEgdXVpZBpsdGhpcyA9PSAnKicgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpUhppc1Byb2plY3RTdWJqZWN0UGVybWlzc2lvbjqUAgodaXNfbWFjaGluZV9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYxeaVJiABKAhCsgHCSK4BCqsBCiRzdHJpbmcuaXNfbWFjaGluZV9zdWJqZWN0X3Blcm1pc3Npb24SFW11c3QgYmUgJyonIG9yIGEgdXVpZBpsdGhpcyA9PSAnKicgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpUhppc01hY2hpbmVTdWJqZWN0UGVybWlzc2lvbjqvAQoJaXNfYmFzZTY0EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMbmlSYgASgIQnTCSHEKbwoQc3RyaW5nLmlzX2Jhc2U2NBIbc3RyaW5nIG11c3QgYmUgdmFsaWQgYmFzZTY0Gj50aGlzLnNpemUoKSAlIDQgPT0gMCAmJiB0aGlzLm1hdGNoZXMoJ15bQS1aYS16MC05Ky9dKj17MCwyfSQnKVIIaXNCYXNlNjQ6jwEKCHByZWZpeGVzEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYx7SWJiABKAhCU8JIUApOChFyZXBlYXRlZC5wcmVmaXhlcxIcZ2l2ZW4gcHJlZml4ZXMgbXVzdCBiZSB2YWxpZBobdGhpcy5hbGwobSwgbS5pc0lwUHJlZml4KCkpUghwcmVmaXhlczp1CgNpcHMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjItJYmIAEoCEJDwkhACj4KDHJlcGVhdGVkLmlwcxIXZ2l2ZW4gaXBzIG11c3QgYmUgdmFsaWQaFXRoaXMuYWxsKG0sIG0uaXNJcCgpKVIDaXBzOuYBChFhcmVfaG9zdF9hbmRfcG9ydBIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMm0liYgASgIQpoBwkiWAQqTAQoacmVwZWF0ZWQuYXJlX2hvc3RfYW5kX3BvcnQSUGdpdmVuIGVudHJpZXMgbXVzdCBhbGwgYmUgaW4gdGhlIGZvcm0gb2YgPGlwIHwgaG9zdD46PHBvcnQ+IGJ1dCBwb3J0IGlzIG9wdGlvbmFsGiN0aGlzLmFsbChtLCBtLmlzSG9zdEFuZFBvcnQoZmFsc2UpKVIOYXJlSG9zdEFuZFBvcnQ6ugEKC2FsbF90cmltbWVkEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYyrSWJiABKAhCecJIdgp0ChRyZXBlYXRlZC5hbGxfdHJpbW1lZBIyZ2l2ZW4gdmFsdWVzIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaKHRoaXMuYWxsKG0sIG0udHJpbSgpLnNpemUoKSA9PSBtLnNpemUoKSlSCmFsbFRyaW1tZWQ6hAIKF2tleXNfYW5kX3ZhbHVlc190cmltbWVkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNeClyYgASgIQrEBwkitAQqqAQobbWFwLmtleXNfYW5kX3ZhbHVlc190cmltbWVkEjVrZXlzIGFuZCB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZRpUdGhpcy5hbGwoaywgay50cmltKCkuc2l6ZSgpID09IGsuc2l6ZSgpKSAmJiB0aGlzLmFsbCh2LCB2LnRyaW0oKS5zaXplKCkgPT0gdi5zaXplKCkpUhRrZXlzQW5kVmFsdWVzVHJpbW1lZDqrAQoMa2V5c190cmltbWVkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNiClyYgASgIQm3CSGoKaAoQbWFwLmtleXNfdHJpbW1lZBIqa2V5cyBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlGih0aGlzLmFsbChrLCBrLnRyaW0oKS5zaXplKCkgPT0gay5zaXplKCkpUgtrZXlzVHJpbW1lZDqSAgoYcHJvamVjdF9yb2xlc19rZXlzX3ZhbGlkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNmClyYgASgIQr0Bwki5AQq2AQoXcHJvamVjdF9yb2xlcy5rZXkudmFsaWQSJnN1YmplY3QgbXVzdCBiZSBhICcqJywgb3IgYSB2YWxpZCBVVUlEGnN0aGlzLmFsbChrLCBrID09ICcqJyB8fCBrLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykpUhVwcm9qZWN0Um9sZXNLZXlzVmFsaWQ66AEKF3RlbmFudF9yb2xlc19rZXlzX3ZhbGlkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNqClyYgASgIQpUBwkiRAQqOAQoWdGVuYW50X3JvbGVzLmtleS52YWxpZBIzc3ViamVjdCBtdXN0IGJlICcqJyBvciBiZXR3ZWVuIDIgYW5kIDEyOCBjaGFyYWN0ZXJzGj90aGlzLmFsbChrLCBrID09ICcqJyB8fCB0aGlzLnNpemUoKSA+PSAyIHx8IHRoaXMuc2l6ZSgpIDw9MTI4IClSFHRlbmFudFJvbGVzS2V5c1ZhbGlkOp4CChhtYWNoaW5lX3JvbGVzX2tleXNfdmFsaWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY24KXJiABKAhCyQHCSMUBCsIBChdtYWNoaW5lX3JvbGVzLmtleS52YWxpZBIyc3ViamVjdCBtdXN0IGJlIGVtcHR5IHN0cmluZywgJyonLCBvciBhIHZhbGlkIFVVSUQac3RoaXMuYWxsKGssIGsgPT0gJyonIHx8IGsubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKSlSFW1hY2hpbmVSb2xlc0tleXNWYWxpZELKAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQhRQcmVkZWZpbmVkUnVsZXNQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjI", [file_buf_validate_validate]);
10
10
  /**
11
- * Macaddress returns true if the given string is a valid macaddress
11
+ * Macaddress returns true if the given string is a valid macaddress.
12
12
  *
13
13
  * @generated from extension: optional bool macaddress = 80048951;
14
14
  */
15
15
  export const macaddress = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 0);
16
16
  /**
17
- * IsName returns true if name field satisfies our requirements
17
+ * IsName returns true if name field satisfies our requirements.
18
18
  *
19
19
  * @generated from extension: optional bool is_name = 80048952;
20
20
  */
21
21
  export const is_name = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 1);
22
22
  /**
23
- * IsDescription returns true if description field satisfies our requirements
23
+ * IsDescription returns true if description field satisfies our requirements.
24
24
  *
25
25
  * @generated from extension: optional bool is_description = 80048953;
26
26
  */
27
27
  export const is_description = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 2);
28
28
  /**
29
- * IsPartition returns true if partition field satisfies our requirements
29
+ * IsPartition returns true if partition field satisfies our requirements.
30
30
  *
31
31
  * @generated from extension: optional bool is_partition = 80048954;
32
32
  */
33
33
  export const is_partition = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 3);
34
34
  /**
35
- * IsPrefix validates if the given string is a valid prefix
35
+ * IsPrefix validates if the given string is a valid prefix.
36
36
  *
37
37
  * @generated from extension: optional bool is_prefix = 80048955;
38
38
  */
39
39
  export const is_prefix = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 4);
40
40
  /**
41
- * IsUri validates if the given string is a valid URI
41
+ * IsUri validates if the given string is a valid URI.
42
42
  *
43
43
  * @generated from extension: optional bool is_uri = 80048956;
44
44
  */
45
45
  export const is_uri = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 5);
46
46
  /**
47
- * IsIpOrHostname validates that the given string is either a ip or a hostname
47
+ * IsIpOrHostname validates that the given string is either a ip or a hostname.
48
48
  *
49
49
  * @generated from extension: optional bool is_ip_or_hostname = 80048957;
50
50
  */
51
51
  export const is_ip_or_hostname = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 6);
52
52
  /**
53
- * Trimmed enforces the string to be trimmed, e.g. no whitespaces at the begin and end
53
+ * Trimmed enforces the string to be trimmed, e.g. no whitespaces at the begin and end.
54
54
  *
55
55
  * @generated from extension: optional bool trimmed = 80048958;
56
56
  */
57
57
  export const trimmed = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 7);
58
58
  /**
59
- * IsUser returns true if name field satisfies our requirements
59
+ * IsUser returns true if name field satisfies our requirements.
60
60
  *
61
61
  * @generated from extension: optional bool is_user = 80048959;
62
62
  */
63
63
  export const is_user = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 8);
64
64
  /**
65
- * IsOption returns true if name field satisfies our requirements
65
+ * IsOption returns true if name field satisfies our requirements.
66
66
  *
67
67
  * @generated from extension: optional bool is_option = 80048960;
68
68
  */
69
69
  export const is_option = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 9);
70
70
  /**
71
- * IsKey returns true if name field satisfies our requirements
71
+ * IsKey returns true if name field satisfies our requirements.
72
72
  *
73
73
  * @generated from extension: optional bool is_key = 80048961;
74
74
  */
75
75
  export const is_key = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 10);
76
76
  /**
77
- * IsTenantLogin returns true if name field satisfies our requirements
77
+ * IsTenantLogin returns true if name field satisfies our requirements.
78
78
  *
79
79
  * @generated from extension: optional bool is_tenant_login = 80048962;
80
80
  */
81
81
  export const is_tenant_login = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 11);
82
82
  /**
83
- * IsTenantSubjectPermission returns true if name field satisfies our requirements
83
+ * IsTenantSubjectPermission returns true if name field satisfies our requirements.
84
84
  *
85
85
  * @generated from extension: optional bool is_tenant_subject_permission = 80048963;
86
86
  */
87
87
  export const is_tenant_subject_permission = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 12);
88
88
  /**
89
- * IsProjectSubjectPermission returns true if name field satisfies our requirements
89
+ * IsProjectSubjectPermission returns true if name field satisfies our requirements.
90
90
  *
91
91
  * @generated from extension: optional bool is_project_subject_permission = 80048964;
92
92
  */
93
93
  export const is_project_subject_permission = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 13);
94
94
  /**
95
- * IsMachineSubjectPermission returns true if name field satisfies our requirements
95
+ * IsMachineSubjectPermission returns true if name field satisfies our requirements.
96
96
  *
97
97
  * @generated from extension: optional bool is_machine_subject_permission = 80048965;
98
98
  */
99
99
  export const is_machine_subject_permission = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 14);
100
100
  /**
101
- * Prefixes validates if a slice of prefixes in string form are valid
101
+ * IsBase64 ensures the given string is base64 encoded
102
+ *
103
+ * @generated from extension: optional bool is_base64 = 80048966;
104
+ */
105
+ export const is_base64 = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 15);
106
+ /**
107
+ * Prefixes validates if a slice of prefixes in string form are valid.
102
108
  *
103
109
  * @generated from extension: optional bool prefixes = 80058951;
104
110
  */
105
- export const prefixes = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 15);
111
+ export const prefixes = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 16);
106
112
  /**
107
- * Ips validates if a slice of ips in string form are valid
113
+ * Ips validates if a slice of ips in string form are valid.
108
114
  *
109
115
  * @generated from extension: optional bool ips = 80058952;
110
116
  */
111
- export const ips = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 16);
117
+ export const ips = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 17);
112
118
  /**
113
- * AreHostAndPort validates if a slice of strings are all in the form of <ip | host>:<port>
119
+ * AreHostAndPort validates if a slice of strings are all in the form of <ip | host>:<port>.
114
120
  *
115
121
  * @generated from extension: optional bool are_host_and_port = 80058953;
116
122
  */
117
- export const are_host_and_port = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 17);
123
+ export const are_host_and_port = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 18);
118
124
  /**
119
- * All Trimmed enforces all strings to be trimmed, e.g. no whitespaces at the begin and end
125
+ * All Trimmed enforces all strings to be trimmed, e.g. no whitespaces at the begin and end.
120
126
  *
121
127
  * @generated from extension: optional bool all_trimmed = 80058954;
122
128
  */
123
- export const all_trimmed = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 18);
129
+ export const all_trimmed = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 19);
124
130
  /**
125
- * Keys and Values trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end
131
+ * Keys and Values trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end.
126
132
  *
127
133
  * @generated from extension: optional bool keys_and_values_trimmed = 80068951;
128
134
  */
129
- export const keys_and_values_trimmed = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 19);
135
+ export const keys_and_values_trimmed = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 20);
130
136
  /**
131
- * Keys trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end
137
+ * Keys trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end.
132
138
  *
133
139
  * @generated from extension: optional bool keys_trimmed = 80068952;
134
140
  */
135
- export const keys_trimmed = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 20);
141
+ export const keys_trimmed = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 21);
136
142
  /**
137
- * ProjectRolesKeysValid ensures that project roles keys met our requirements
143
+ * ProjectRolesKeysValid ensures that project roles keys met our requirements.
138
144
  *
139
145
  * @generated from extension: optional bool project_roles_keys_valid = 80068953;
140
146
  */
141
- export const project_roles_keys_valid = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 21);
147
+ export const project_roles_keys_valid = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 22);
142
148
  /**
143
- * TenantRolesKeysValid ensures that tenant roles keys met our requirements
149
+ * TenantRolesKeysValid ensures that tenant roles keys met our requirements.
144
150
  *
145
151
  * @generated from extension: optional bool tenant_roles_keys_valid = 80068954;
146
152
  */
147
- export const tenant_roles_keys_valid = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 22);
153
+ export const tenant_roles_keys_valid = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 23);
148
154
  /**
149
- * MachineRolesKeysValid ensures that machine roles keys met our requirements
155
+ * MachineRolesKeysValid ensures that machine roles keys met our requirements.
150
156
  *
151
157
  * @generated from extension: optional bool machine_roles_keys_valid = 80068955;
152
158
  */
153
- export const machine_roles_keys_valid = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 23);
159
+ export const machine_roles_keys_valid = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 24);
@@ -11,10 +11,10 @@ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
11
11
  * Describes the file metalstack/api/v2/predefined_rules.proto.
12
12
  */
13
13
  export const file_metalstack_api_v2_predefined_rules: GenFile = /*@__PURE__*/
14
- fileDesc("CihtZXRhbHN0YWNrL2FwaS92Mi9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52Mjq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOp0BCgd0cmltbWVkEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL7mlSYgASgIQmXCSGIKYAoOc3RyaW5nLnRyaW1tZWQSK3ZhbHVlIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaIXRoaXMudHJpbSgpLnNpemUoKSA9PSB0aGlzLnNpemUoKVIHdHJpbW1lZDqZAQoHaXNfdXNlchIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi/5pUmIAEoCEJiwkhfCl0KDnN0cmluZy5pc191c2VyEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCA1MTIgY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSA1MTJSBmlzVXNlcjqfAQoJaXNfb3B0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMDmlSYgASgIQmTCSGEKXwoQc3RyaW5nLmlzX29wdGlvbhIjbXVzdCBiZSB3aXRoaW4gMSBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDEgJiYgdGhpcy5zaXplKCkgPD0gMTI4Ughpc09wdGlvbjqYAQoGaXNfa2V5EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMHmlSYgASgIQmPCSGAKXgoNc3RyaW5nLmlzX2tleRIkbXVzdCBiZSB3aXRoaW4gMSBhbmQgODE5MiBjaGFyYWN0ZXJzGid0aGlzLnNpemUoKSA+PSAxICYmIHRoaXMuc2l6ZSgpIDw9IDgxOTJSBWlzS2V5OrABCg9pc190ZW5hbnRfbG9naW4SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYwuaVJiABKAhCasJIZwplChZzdHJpbmcuaXNfdGVuYW50X2xvZ2luEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSDWlzVGVuYW50TG9naW467wEKHGlzX3RlbmFudF9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYw+aVJiABKAhCjwHCSIsBCogBCiNzdHJpbmcuaXNfdGVuYW50X3N1YmplY3RfcGVybWlzc2lvbhIqbXVzdCBiZSAnKicgb3Igd2l0aGluIDIgYW5kIDEyOCBjaGFyYWN0ZXJzGjV0aGlzID09ICcqJyB8fCB0aGlzLnNpemUoKSA+PSAyICYmIHRoaXMuc2l6ZSgpIDw9IDEyOFIZaXNUZW5hbnRTdWJqZWN0UGVybWlzc2lvbjqUAgodaXNfcHJvamVjdF9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYxOaVJiABKAhCsgHCSK4BCqsBCiRzdHJpbmcuaXNfcHJvamVjdF9zdWJqZWN0X3Blcm1pc3Npb24SFW11c3QgYmUgJyonIG9yIGEgdXVpZBpsdGhpcyA9PSAnKicgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpUhppc1Byb2plY3RTdWJqZWN0UGVybWlzc2lvbjqUAgodaXNfbWFjaGluZV9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYxeaVJiABKAhCsgHCSK4BCqsBCiRzdHJpbmcuaXNfbWFjaGluZV9zdWJqZWN0X3Blcm1pc3Npb24SFW11c3QgYmUgJyonIG9yIGEgdXVpZBpsdGhpcyA9PSAnKicgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpUhppc01hY2hpbmVTdWJqZWN0UGVybWlzc2lvbjqPAQoIcHJlZml4ZXMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjHtJYmIAEoCEJTwkhQCk4KEXJlcGVhdGVkLnByZWZpeGVzEhxnaXZlbiBwcmVmaXhlcyBtdXN0IGJlIHZhbGlkGht0aGlzLmFsbChtLCBtLmlzSXBQcmVmaXgoKSlSCHByZWZpeGVzOnUKA2lwcxIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMi0liYgASgIQkPCSEAKPgoMcmVwZWF0ZWQuaXBzEhdnaXZlbiBpcHMgbXVzdCBiZSB2YWxpZBoVdGhpcy5hbGwobSwgbS5pc0lwKCkpUgNpcHM65gEKEWFyZV9ob3N0X2FuZF9wb3J0EhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYybSWJiABKAhCmgHCSJYBCpMBChpyZXBlYXRlZC5hcmVfaG9zdF9hbmRfcG9ydBJQZ2l2ZW4gZW50cmllcyBtdXN0IGFsbCBiZSBpbiB0aGUgZm9ybSBvZiA8aXAgfCBob3N0Pjo8cG9ydD4gYnV0IHBvcnQgaXMgb3B0aW9uYWwaI3RoaXMuYWxsKG0sIG0uaXNIb3N0QW5kUG9ydChmYWxzZSkpUg5hcmVIb3N0QW5kUG9ydDq6AQoLYWxsX3RyaW1tZWQSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjKtJYmIAEoCEJ5wkh2CnQKFHJlcGVhdGVkLmFsbF90cmltbWVkEjJnaXZlbiB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZRoodGhpcy5hbGwobSwgbS50cmltKCkuc2l6ZSgpID09IG0uc2l6ZSgpKVIKYWxsVHJpbW1lZDqEAgoXa2V5c19hbmRfdmFsdWVzX3RyaW1tZWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY14KXJiABKAhCsQHCSK0BCqoBChttYXAua2V5c19hbmRfdmFsdWVzX3RyaW1tZWQSNWtleXMgYW5kIHZhbHVlcyBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlGlR0aGlzLmFsbChrLCBrLnRyaW0oKS5zaXplKCkgPT0gay5zaXplKCkpICYmIHRoaXMuYWxsKHYsIHYudHJpbSgpLnNpemUoKSA9PSB2LnNpemUoKSlSFGtleXNBbmRWYWx1ZXNUcmltbWVkOqsBCgxrZXlzX3RyaW1tZWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY2IKXJiABKAhCbcJIagpoChBtYXAua2V5c190cmltbWVkEiprZXlzIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaKHRoaXMuYWxsKGssIGsudHJpbSgpLnNpemUoKSA9PSBrLnNpemUoKSlSC2tleXNUcmltbWVkOpICChhwcm9qZWN0X3JvbGVzX2tleXNfdmFsaWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY2YKXJiABKAhCvQHCSLkBCrYBChdwcm9qZWN0X3JvbGVzLmtleS52YWxpZBImc3ViamVjdCBtdXN0IGJlIGEgJyonLCBvciBhIHZhbGlkIFVVSUQac3RoaXMuYWxsKGssIGsgPT0gJyonIHx8IGsubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKSlSFXByb2plY3RSb2xlc0tleXNWYWxpZDroAQoXdGVuYW50X3JvbGVzX2tleXNfdmFsaWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY2oKXJiABKAhClQHCSJEBCo4BChZ0ZW5hbnRfcm9sZXMua2V5LnZhbGlkEjNzdWJqZWN0IG11c3QgYmUgJyonIG9yIGJldHdlZW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaP3RoaXMuYWxsKGssIGsgPT0gJyonIHx8IHRoaXMuc2l6ZSgpID49IDIgfHwgdGhpcy5zaXplKCkgPD0xMjggKVIUdGVuYW50Um9sZXNLZXlzVmFsaWQ6ngIKGG1hY2hpbmVfcm9sZXNfa2V5c192YWxpZBIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlcxjbgpcmIAEoCELJAcJIxQEKwgEKF21hY2hpbmVfcm9sZXMua2V5LnZhbGlkEjJzdWJqZWN0IG11c3QgYmUgZW1wdHkgc3RyaW5nLCAnKicsIG9yIGEgdmFsaWQgVVVJRBpzdGhpcy5hbGwoaywgayA9PSAnKicgfHwgay5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpKVIVbWFjaGluZVJvbGVzS2V5c1ZhbGlkQsoBChVjb20ubWV0YWxzdGFjay5hcGkudjJCFFByZWRlZmluZWRSdWxlc1Byb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMg", [file_buf_validate_validate]);
14
+ fileDesc("CihtZXRhbHN0YWNrL2FwaS92Mi9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52Mjq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOp0BCgd0cmltbWVkEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGL7mlSYgASgIQmXCSGIKYAoOc3RyaW5nLnRyaW1tZWQSK3ZhbHVlIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaIXRoaXMudHJpbSgpLnNpemUoKSA9PSB0aGlzLnNpemUoKVIHdHJpbW1lZDqZAQoHaXNfdXNlchIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi/5pUmIAEoCEJiwkhfCl0KDnN0cmluZy5pc191c2VyEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCA1MTIgY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSA1MTJSBmlzVXNlcjqfAQoJaXNfb3B0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMDmlSYgASgIQmTCSGEKXwoQc3RyaW5nLmlzX29wdGlvbhIjbXVzdCBiZSB3aXRoaW4gMSBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDEgJiYgdGhpcy5zaXplKCkgPD0gMTI4Ughpc09wdGlvbjqYAQoGaXNfa2V5EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMHmlSYgASgIQmPCSGAKXgoNc3RyaW5nLmlzX2tleRIkbXVzdCBiZSB3aXRoaW4gMSBhbmQgODE5MiBjaGFyYWN0ZXJzGid0aGlzLnNpemUoKSA+PSAxICYmIHRoaXMuc2l6ZSgpIDw9IDgxOTJSBWlzS2V5OrABCg9pc190ZW5hbnRfbG9naW4SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYwuaVJiABKAhCasJIZwplChZzdHJpbmcuaXNfdGVuYW50X2xvZ2luEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSDWlzVGVuYW50TG9naW467wEKHGlzX3RlbmFudF9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYw+aVJiABKAhCjwHCSIsBCogBCiNzdHJpbmcuaXNfdGVuYW50X3N1YmplY3RfcGVybWlzc2lvbhIqbXVzdCBiZSAnKicgb3Igd2l0aGluIDIgYW5kIDEyOCBjaGFyYWN0ZXJzGjV0aGlzID09ICcqJyB8fCB0aGlzLnNpemUoKSA+PSAyICYmIHRoaXMuc2l6ZSgpIDw9IDEyOFIZaXNUZW5hbnRTdWJqZWN0UGVybWlzc2lvbjqUAgodaXNfcHJvamVjdF9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYxOaVJiABKAhCsgHCSK4BCqsBCiRzdHJpbmcuaXNfcHJvamVjdF9zdWJqZWN0X3Blcm1pc3Npb24SFW11c3QgYmUgJyonIG9yIGEgdXVpZBpsdGhpcyA9PSAnKicgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpUhppc1Byb2plY3RTdWJqZWN0UGVybWlzc2lvbjqUAgodaXNfbWFjaGluZV9zdWJqZWN0X3Blcm1pc3Npb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYxeaVJiABKAhCsgHCSK4BCqsBCiRzdHJpbmcuaXNfbWFjaGluZV9zdWJqZWN0X3Blcm1pc3Npb24SFW11c3QgYmUgJyonIG9yIGEgdXVpZBpsdGhpcyA9PSAnKicgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpUhppc01hY2hpbmVTdWJqZWN0UGVybWlzc2lvbjqvAQoJaXNfYmFzZTY0EhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGMbmlSYgASgIQnTCSHEKbwoQc3RyaW5nLmlzX2Jhc2U2NBIbc3RyaW5nIG11c3QgYmUgdmFsaWQgYmFzZTY0Gj50aGlzLnNpemUoKSAlIDQgPT0gMCAmJiB0aGlzLm1hdGNoZXMoJ15bQS1aYS16MC05Ky9dKj17MCwyfSQnKVIIaXNCYXNlNjQ6jwEKCHByZWZpeGVzEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYx7SWJiABKAhCU8JIUApOChFyZXBlYXRlZC5wcmVmaXhlcxIcZ2l2ZW4gcHJlZml4ZXMgbXVzdCBiZSB2YWxpZBobdGhpcy5hbGwobSwgbS5pc0lwUHJlZml4KCkpUghwcmVmaXhlczp1CgNpcHMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxjItJYmIAEoCEJDwkhACj4KDHJlcGVhdGVkLmlwcxIXZ2l2ZW4gaXBzIG11c3QgYmUgdmFsaWQaFXRoaXMuYWxsKG0sIG0uaXNJcCgpKVIDaXBzOuYBChFhcmVfaG9zdF9hbmRfcG9ydBIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMm0liYgASgIQpoBwkiWAQqTAQoacmVwZWF0ZWQuYXJlX2hvc3RfYW5kX3BvcnQSUGdpdmVuIGVudHJpZXMgbXVzdCBhbGwgYmUgaW4gdGhlIGZvcm0gb2YgPGlwIHwgaG9zdD46PHBvcnQ+IGJ1dCBwb3J0IGlzIG9wdGlvbmFsGiN0aGlzLmFsbChtLCBtLmlzSG9zdEFuZFBvcnQoZmFsc2UpKVIOYXJlSG9zdEFuZFBvcnQ6ugEKC2FsbF90cmltbWVkEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYyrSWJiABKAhCecJIdgp0ChRyZXBlYXRlZC5hbGxfdHJpbW1lZBIyZ2l2ZW4gdmFsdWVzIG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UaKHRoaXMuYWxsKG0sIG0udHJpbSgpLnNpemUoKSA9PSBtLnNpemUoKSlSCmFsbFRyaW1tZWQ6hAIKF2tleXNfYW5kX3ZhbHVlc190cmltbWVkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNeClyYgASgIQrEBwkitAQqqAQobbWFwLmtleXNfYW5kX3ZhbHVlc190cmltbWVkEjVrZXlzIGFuZCB2YWx1ZXMgbXVzdCBub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZRpUdGhpcy5hbGwoaywgay50cmltKCkuc2l6ZSgpID09IGsuc2l6ZSgpKSAmJiB0aGlzLmFsbCh2LCB2LnRyaW0oKS5zaXplKCkgPT0gdi5zaXplKCkpUhRrZXlzQW5kVmFsdWVzVHJpbW1lZDqrAQoMa2V5c190cmltbWVkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNiClyYgASgIQm3CSGoKaAoQbWFwLmtleXNfdHJpbW1lZBIqa2V5cyBtdXN0IG5vdCBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlGih0aGlzLmFsbChrLCBrLnRyaW0oKS5zaXplKCkgPT0gay5zaXplKCkpUgtrZXlzVHJpbW1lZDqSAgoYcHJvamVjdF9yb2xlc19rZXlzX3ZhbGlkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNmClyYgASgIQr0Bwki5AQq2AQoXcHJvamVjdF9yb2xlcy5rZXkudmFsaWQSJnN1YmplY3QgbXVzdCBiZSBhICcqJywgb3IgYSB2YWxpZCBVVUlEGnN0aGlzLmFsbChrLCBrID09ICcqJyB8fCBrLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykpUhVwcm9qZWN0Um9sZXNLZXlzVmFsaWQ66AEKF3RlbmFudF9yb2xlc19rZXlzX3ZhbGlkEhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzGNqClyYgASgIQpUBwkiRAQqOAQoWdGVuYW50X3JvbGVzLmtleS52YWxpZBIzc3ViamVjdCBtdXN0IGJlICcqJyBvciBiZXR3ZWVuIDIgYW5kIDEyOCBjaGFyYWN0ZXJzGj90aGlzLmFsbChrLCBrID09ICcqJyB8fCB0aGlzLnNpemUoKSA+PSAyIHx8IHRoaXMuc2l6ZSgpIDw9MTI4IClSFHRlbmFudFJvbGVzS2V5c1ZhbGlkOp4CChhtYWNoaW5lX3JvbGVzX2tleXNfdmFsaWQSFi5idWYudmFsaWRhdGUuTWFwUnVsZXMY24KXJiABKAhCyQHCSMUBCsIBChdtYWNoaW5lX3JvbGVzLmtleS52YWxpZBIyc3ViamVjdCBtdXN0IGJlIGVtcHR5IHN0cmluZywgJyonLCBvciBhIHZhbGlkIFVVSUQac3RoaXMuYWxsKGssIGsgPT0gJyonIHx8IGsubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKSlSFW1hY2hpbmVSb2xlc0tleXNWYWxpZELKAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQhRQcmVkZWZpbmVkUnVsZXNQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjI", [file_buf_validate_validate]);
15
15
 
16
16
  /**
17
- * Macaddress returns true if the given string is a valid macaddress
17
+ * Macaddress returns true if the given string is a valid macaddress.
18
18
  *
19
19
  * @generated from extension: optional bool macaddress = 80048951;
20
20
  */
@@ -22,7 +22,7 @@ export const macaddress: GenExtension<StringRules, boolean> = /*@__PURE__*/
22
22
  extDesc(file_metalstack_api_v2_predefined_rules, 0);
23
23
 
24
24
  /**
25
- * IsName returns true if name field satisfies our requirements
25
+ * IsName returns true if name field satisfies our requirements.
26
26
  *
27
27
  * @generated from extension: optional bool is_name = 80048952;
28
28
  */
@@ -30,7 +30,7 @@ export const is_name: GenExtension<StringRules, boolean> = /*@__PURE__*/
30
30
  extDesc(file_metalstack_api_v2_predefined_rules, 1);
31
31
 
32
32
  /**
33
- * IsDescription returns true if description field satisfies our requirements
33
+ * IsDescription returns true if description field satisfies our requirements.
34
34
  *
35
35
  * @generated from extension: optional bool is_description = 80048953;
36
36
  */
@@ -38,7 +38,7 @@ export const is_description: GenExtension<StringRules, boolean> = /*@__PURE__*/
38
38
  extDesc(file_metalstack_api_v2_predefined_rules, 2);
39
39
 
40
40
  /**
41
- * IsPartition returns true if partition field satisfies our requirements
41
+ * IsPartition returns true if partition field satisfies our requirements.
42
42
  *
43
43
  * @generated from extension: optional bool is_partition = 80048954;
44
44
  */
@@ -46,7 +46,7 @@ export const is_partition: GenExtension<StringRules, boolean> = /*@__PURE__*/
46
46
  extDesc(file_metalstack_api_v2_predefined_rules, 3);
47
47
 
48
48
  /**
49
- * IsPrefix validates if the given string is a valid prefix
49
+ * IsPrefix validates if the given string is a valid prefix.
50
50
  *
51
51
  * @generated from extension: optional bool is_prefix = 80048955;
52
52
  */
@@ -54,7 +54,7 @@ export const is_prefix: GenExtension<StringRules, boolean> = /*@__PURE__*/
54
54
  extDesc(file_metalstack_api_v2_predefined_rules, 4);
55
55
 
56
56
  /**
57
- * IsUri validates if the given string is a valid URI
57
+ * IsUri validates if the given string is a valid URI.
58
58
  *
59
59
  * @generated from extension: optional bool is_uri = 80048956;
60
60
  */
@@ -62,7 +62,7 @@ export const is_uri: GenExtension<StringRules, boolean> = /*@__PURE__*/
62
62
  extDesc(file_metalstack_api_v2_predefined_rules, 5);
63
63
 
64
64
  /**
65
- * IsIpOrHostname validates that the given string is either a ip or a hostname
65
+ * IsIpOrHostname validates that the given string is either a ip or a hostname.
66
66
  *
67
67
  * @generated from extension: optional bool is_ip_or_hostname = 80048957;
68
68
  */
@@ -70,7 +70,7 @@ export const is_ip_or_hostname: GenExtension<StringRules, boolean> = /*@__PURE__
70
70
  extDesc(file_metalstack_api_v2_predefined_rules, 6);
71
71
 
72
72
  /**
73
- * Trimmed enforces the string to be trimmed, e.g. no whitespaces at the begin and end
73
+ * Trimmed enforces the string to be trimmed, e.g. no whitespaces at the begin and end.
74
74
  *
75
75
  * @generated from extension: optional bool trimmed = 80048958;
76
76
  */
@@ -78,7 +78,7 @@ export const trimmed: GenExtension<StringRules, boolean> = /*@__PURE__*/
78
78
  extDesc(file_metalstack_api_v2_predefined_rules, 7);
79
79
 
80
80
  /**
81
- * IsUser returns true if name field satisfies our requirements
81
+ * IsUser returns true if name field satisfies our requirements.
82
82
  *
83
83
  * @generated from extension: optional bool is_user = 80048959;
84
84
  */
@@ -86,7 +86,7 @@ export const is_user: GenExtension<StringRules, boolean> = /*@__PURE__*/
86
86
  extDesc(file_metalstack_api_v2_predefined_rules, 8);
87
87
 
88
88
  /**
89
- * IsOption returns true if name field satisfies our requirements
89
+ * IsOption returns true if name field satisfies our requirements.
90
90
  *
91
91
  * @generated from extension: optional bool is_option = 80048960;
92
92
  */
@@ -94,7 +94,7 @@ export const is_option: GenExtension<StringRules, boolean> = /*@__PURE__*/
94
94
  extDesc(file_metalstack_api_v2_predefined_rules, 9);
95
95
 
96
96
  /**
97
- * IsKey returns true if name field satisfies our requirements
97
+ * IsKey returns true if name field satisfies our requirements.
98
98
  *
99
99
  * @generated from extension: optional bool is_key = 80048961;
100
100
  */
@@ -102,7 +102,7 @@ export const is_key: GenExtension<StringRules, boolean> = /*@__PURE__*/
102
102
  extDesc(file_metalstack_api_v2_predefined_rules, 10);
103
103
 
104
104
  /**
105
- * IsTenantLogin returns true if name field satisfies our requirements
105
+ * IsTenantLogin returns true if name field satisfies our requirements.
106
106
  *
107
107
  * @generated from extension: optional bool is_tenant_login = 80048962;
108
108
  */
@@ -110,7 +110,7 @@ export const is_tenant_login: GenExtension<StringRules, boolean> = /*@__PURE__*/
110
110
  extDesc(file_metalstack_api_v2_predefined_rules, 11);
111
111
 
112
112
  /**
113
- * IsTenantSubjectPermission returns true if name field satisfies our requirements
113
+ * IsTenantSubjectPermission returns true if name field satisfies our requirements.
114
114
  *
115
115
  * @generated from extension: optional bool is_tenant_subject_permission = 80048963;
116
116
  */
@@ -118,7 +118,7 @@ export const is_tenant_subject_permission: GenExtension<StringRules, boolean> =
118
118
  extDesc(file_metalstack_api_v2_predefined_rules, 12);
119
119
 
120
120
  /**
121
- * IsProjectSubjectPermission returns true if name field satisfies our requirements
121
+ * IsProjectSubjectPermission returns true if name field satisfies our requirements.
122
122
  *
123
123
  * @generated from extension: optional bool is_project_subject_permission = 80048964;
124
124
  */
@@ -126,7 +126,7 @@ export const is_project_subject_permission: GenExtension<StringRules, boolean> =
126
126
  extDesc(file_metalstack_api_v2_predefined_rules, 13);
127
127
 
128
128
  /**
129
- * IsMachineSubjectPermission returns true if name field satisfies our requirements
129
+ * IsMachineSubjectPermission returns true if name field satisfies our requirements.
130
130
  *
131
131
  * @generated from extension: optional bool is_machine_subject_permission = 80048965;
132
132
  */
@@ -134,74 +134,82 @@ export const is_machine_subject_permission: GenExtension<StringRules, boolean> =
134
134
  extDesc(file_metalstack_api_v2_predefined_rules, 14);
135
135
 
136
136
  /**
137
- * Prefixes validates if a slice of prefixes in string form are valid
137
+ * IsBase64 ensures the given string is base64 encoded
138
+ *
139
+ * @generated from extension: optional bool is_base64 = 80048966;
140
+ */
141
+ export const is_base64: GenExtension<StringRules, boolean> = /*@__PURE__*/
142
+ extDesc(file_metalstack_api_v2_predefined_rules, 15);
143
+
144
+ /**
145
+ * Prefixes validates if a slice of prefixes in string form are valid.
138
146
  *
139
147
  * @generated from extension: optional bool prefixes = 80058951;
140
148
  */
141
149
  export const prefixes: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
142
- extDesc(file_metalstack_api_v2_predefined_rules, 15);
150
+ extDesc(file_metalstack_api_v2_predefined_rules, 16);
143
151
 
144
152
  /**
145
- * Ips validates if a slice of ips in string form are valid
153
+ * Ips validates if a slice of ips in string form are valid.
146
154
  *
147
155
  * @generated from extension: optional bool ips = 80058952;
148
156
  */
149
157
  export const ips: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
150
- extDesc(file_metalstack_api_v2_predefined_rules, 16);
158
+ extDesc(file_metalstack_api_v2_predefined_rules, 17);
151
159
 
152
160
  /**
153
- * AreHostAndPort validates if a slice of strings are all in the form of <ip | host>:<port>
161
+ * AreHostAndPort validates if a slice of strings are all in the form of <ip | host>:<port>.
154
162
  *
155
163
  * @generated from extension: optional bool are_host_and_port = 80058953;
156
164
  */
157
165
  export const are_host_and_port: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
158
- extDesc(file_metalstack_api_v2_predefined_rules, 17);
166
+ extDesc(file_metalstack_api_v2_predefined_rules, 18);
159
167
 
160
168
  /**
161
- * All Trimmed enforces all strings to be trimmed, e.g. no whitespaces at the begin and end
169
+ * All Trimmed enforces all strings to be trimmed, e.g. no whitespaces at the begin and end.
162
170
  *
163
171
  * @generated from extension: optional bool all_trimmed = 80058954;
164
172
  */
165
173
  export const all_trimmed: GenExtension<RepeatedRules, boolean> = /*@__PURE__*/
166
- extDesc(file_metalstack_api_v2_predefined_rules, 18);
174
+ extDesc(file_metalstack_api_v2_predefined_rules, 19);
167
175
 
168
176
  /**
169
- * Keys and Values trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end
177
+ * Keys and Values trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end.
170
178
  *
171
179
  * @generated from extension: optional bool keys_and_values_trimmed = 80068951;
172
180
  */
173
181
  export const keys_and_values_trimmed: GenExtension<MapRules, boolean> = /*@__PURE__*/
174
- extDesc(file_metalstack_api_v2_predefined_rules, 19);
182
+ extDesc(file_metalstack_api_v2_predefined_rules, 20);
175
183
 
176
184
  /**
177
- * Keys trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end
185
+ * Keys trimmed enforces all map keys and values to be trimmed, e.g. no whitespaces at the begin and end.
178
186
  *
179
187
  * @generated from extension: optional bool keys_trimmed = 80068952;
180
188
  */
181
189
  export const keys_trimmed: GenExtension<MapRules, boolean> = /*@__PURE__*/
182
- extDesc(file_metalstack_api_v2_predefined_rules, 20);
190
+ extDesc(file_metalstack_api_v2_predefined_rules, 21);
183
191
 
184
192
  /**
185
- * ProjectRolesKeysValid ensures that project roles keys met our requirements
193
+ * ProjectRolesKeysValid ensures that project roles keys met our requirements.
186
194
  *
187
195
  * @generated from extension: optional bool project_roles_keys_valid = 80068953;
188
196
  */
189
197
  export const project_roles_keys_valid: GenExtension<MapRules, boolean> = /*@__PURE__*/
190
- extDesc(file_metalstack_api_v2_predefined_rules, 21);
198
+ extDesc(file_metalstack_api_v2_predefined_rules, 22);
191
199
 
192
200
  /**
193
- * TenantRolesKeysValid ensures that tenant roles keys met our requirements
201
+ * TenantRolesKeysValid ensures that tenant roles keys met our requirements.
194
202
  *
195
203
  * @generated from extension: optional bool tenant_roles_keys_valid = 80068954;
196
204
  */
197
205
  export const tenant_roles_keys_valid: GenExtension<MapRules, boolean> = /*@__PURE__*/
198
- extDesc(file_metalstack_api_v2_predefined_rules, 22);
206
+ extDesc(file_metalstack_api_v2_predefined_rules, 23);
199
207
 
200
208
  /**
201
- * MachineRolesKeysValid ensures that machine roles keys met our requirements
209
+ * MachineRolesKeysValid ensures that machine roles keys met our requirements.
202
210
  *
203
211
  * @generated from extension: optional bool machine_roles_keys_valid = 80068955;
204
212
  */
205
213
  export const machine_roles_keys_valid: GenExtension<MapRules, boolean> = /*@__PURE__*/
206
- extDesc(file_metalstack_api_v2_predefined_rules, 23);
214
+ extDesc(file_metalstack_api_v2_predefined_rules, 24);
207
215