unleash-server 7.5.1 → 7.6.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 (466) hide show
  1. package/dist/lib/addons/feature-event-formatter-md-events.d.ts.map +1 -1
  2. package/dist/lib/addons/feature-event-formatter-md-events.js +16 -1
  3. package/dist/lib/addons/feature-event-formatter-md-events.js.map +1 -1
  4. package/dist/lib/addons/slack-app-definition.d.ts.map +1 -1
  5. package/dist/lib/addons/slack-app-definition.js +4 -1
  6. package/dist/lib/addons/slack-app-definition.js.map +1 -1
  7. package/dist/lib/app.d.ts.map +1 -1
  8. package/dist/lib/app.js +11 -25
  9. package/dist/lib/app.js.map +1 -1
  10. package/dist/lib/create-config.d.ts.map +1 -1
  11. package/dist/lib/create-config.js +3 -0
  12. package/dist/lib/create-config.js.map +1 -1
  13. package/dist/lib/db/api-token-store.d.ts +4 -1
  14. package/dist/lib/db/api-token-store.d.ts.map +1 -1
  15. package/dist/lib/db/api-token-store.js +17 -3
  16. package/dist/lib/db/api-token-store.js.map +1 -1
  17. package/dist/lib/error/bad-gateway-error.d.ts +7 -0
  18. package/dist/lib/error/bad-gateway-error.d.ts.map +1 -0
  19. package/dist/lib/error/bad-gateway-error.js +9 -0
  20. package/dist/lib/error/bad-gateway-error.js.map +1 -0
  21. package/dist/lib/error/gateway-timeout-error.d.ts +7 -0
  22. package/dist/lib/error/gateway-timeout-error.d.ts.map +1 -0
  23. package/dist/lib/error/gateway-timeout-error.js +9 -0
  24. package/dist/lib/error/gateway-timeout-error.js.map +1 -0
  25. package/dist/lib/error/index.d.ts +3 -1
  26. package/dist/lib/error/index.d.ts.map +1 -1
  27. package/dist/lib/error/index.js +3 -1
  28. package/dist/lib/error/index.js.map +1 -1
  29. package/dist/lib/error/unleash-error.d.ts +1 -1
  30. package/dist/lib/error/unleash-error.d.ts.map +1 -1
  31. package/dist/lib/error/unleash-error.js +2 -0
  32. package/dist/lib/error/unleash-error.js.map +1 -1
  33. package/dist/lib/events/index.d.ts +4 -1
  34. package/dist/lib/events/index.d.ts.map +1 -1
  35. package/dist/lib/events/index.js +6 -0
  36. package/dist/lib/events/index.js.map +1 -1
  37. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.d.ts.map +1 -1
  38. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.js +5 -0
  39. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.js.map +1 -1
  40. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.d.ts +2 -0
  41. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.d.ts.map +1 -0
  42. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.js +53 -0
  43. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.js.map +1 -0
  44. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.d.ts.map +1 -1
  45. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.js +5 -0
  46. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.js.map +1 -1
  47. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.d.ts +2 -0
  48. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.d.ts.map +1 -0
  49. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.js +59 -0
  50. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.js.map +1 -0
  51. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts +9 -3
  52. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts.map +1 -1
  53. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js +165 -92
  54. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js.map +1 -1
  55. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js +475 -1
  56. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js.map +1 -1
  57. package/dist/lib/features/client-feature-toggles/delta/delta-cache.d.ts.map +1 -1
  58. package/dist/lib/features/client-feature-toggles/delta/delta-cache.js +3 -0
  59. package/dist/lib/features/client-feature-toggles/delta/delta-cache.js.map +1 -1
  60. package/dist/lib/features/client-feature-toggles/delta/delta-cache.test.js +15 -0
  61. package/dist/lib/features/client-feature-toggles/delta/delta-cache.test.js.map +1 -1
  62. package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts +3 -0
  63. package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts.map +1 -0
  64. package/dist/lib/features/client-feature-toggles/delta/visible-revision.js +16 -0
  65. package/dist/lib/features/client-feature-toggles/delta/visible-revision.js.map +1 -0
  66. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.d.ts +2 -0
  67. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.d.ts.map +1 -0
  68. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js +25 -0
  69. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js.map +1 -0
  70. package/dist/lib/features/context/context.d.ts +0 -1
  71. package/dist/lib/features/context/context.d.ts.map +1 -1
  72. package/dist/lib/features/context/context.js +7 -15
  73. package/dist/lib/features/context/context.js.map +1 -1
  74. package/dist/lib/features/edgetokens/edge-token-store.d.ts +2 -0
  75. package/dist/lib/features/edgetokens/edge-token-store.d.ts.map +1 -1
  76. package/dist/lib/features/edgetokens/edge-token-store.js +20 -0
  77. package/dist/lib/features/edgetokens/edge-token-store.js.map +1 -1
  78. package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts +2 -0
  79. package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts.map +1 -1
  80. package/dist/lib/features/edgetokens/fake-edge-token-store.js +6 -0
  81. package/dist/lib/features/edgetokens/fake-edge-token-store.js.map +1 -1
  82. package/dist/lib/features/events/event-store.d.ts +2 -4
  83. package/dist/lib/features/events/event-store.d.ts.map +1 -1
  84. package/dist/lib/features/events/event-store.js +1 -4
  85. package/dist/lib/features/events/event-store.js.map +1 -1
  86. package/dist/lib/features/feature-search/feature-search-controller.d.ts.map +1 -1
  87. package/dist/lib/features/feature-search/feature-search-controller.js +2 -1
  88. package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
  89. package/dist/lib/features/feature-search/feature-search-service.d.ts.map +1 -1
  90. package/dist/lib/features/feature-search/feature-search-service.js +5 -0
  91. package/dist/lib/features/feature-search/feature-search-service.js.map +1 -1
  92. package/dist/lib/features/feature-search/feature-search-store.d.ts.map +1 -1
  93. package/dist/lib/features/feature-search/feature-search-store.js +17 -1
  94. package/dist/lib/features/feature-search/feature-search-store.js.map +1 -1
  95. package/dist/lib/features/feature-search/feature.search.e2e.test.js +56 -1
  96. package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
  97. package/dist/lib/features/feature-toggle/configuration-revision-service.d.ts +1 -2
  98. package/dist/lib/features/feature-toggle/configuration-revision-service.d.ts.map +1 -1
  99. package/dist/lib/features/feature-toggle/configuration-revision-service.js +2 -10
  100. package/dist/lib/features/feature-toggle/configuration-revision-service.js.map +1 -1
  101. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.d.ts.map +1 -1
  102. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js +3 -2
  103. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js.map +1 -1
  104. package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts +1 -0
  105. package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts.map +1 -1
  106. package/dist/lib/features/frontend-api/frontend-api-service.d.ts.map +1 -1
  107. package/dist/lib/features/frontend-api/frontend-api-service.js +8 -0
  108. package/dist/lib/features/frontend-api/frontend-api-service.js.map +1 -1
  109. package/dist/lib/features/frontend-api/frontend-api.e2e.test.js +43 -0
  110. package/dist/lib/features/frontend-api/frontend-api.e2e.test.js.map +1 -1
  111. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.d.ts +3 -0
  112. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.d.ts.map +1 -0
  113. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.js +1071 -0
  114. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.js.map +1 -0
  115. package/dist/lib/features/index.d.ts +1 -0
  116. package/dist/lib/features/index.d.ts.map +1 -1
  117. package/dist/lib/features/index.js +1 -0
  118. package/dist/lib/features/index.js.map +1 -1
  119. package/dist/lib/features/instance-stats/instance-stats-service.d.ts.map +1 -1
  120. package/dist/lib/features/instance-stats/instance-stats-service.js +1 -3
  121. package/dist/lib/features/instance-stats/instance-stats-service.js.map +1 -1
  122. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js +12 -12
  123. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js.map +1 -1
  124. package/dist/lib/features/metrics/impact/metrics-translator.d.ts +5 -2
  125. package/dist/lib/features/metrics/impact/metrics-translator.d.ts.map +1 -1
  126. package/dist/lib/features/metrics/impact/metrics-translator.js +86 -102
  127. package/dist/lib/features/metrics/impact/metrics-translator.js.map +1 -1
  128. package/dist/lib/features/metrics/impact/metrics-translator.test.js +70 -112
  129. package/dist/lib/features/metrics/impact/metrics-translator.test.js.map +1 -1
  130. package/dist/lib/features/project/createProjectService.d.ts.map +1 -1
  131. package/dist/lib/features/project/createProjectService.js +6 -0
  132. package/dist/lib/features/project/createProjectService.js.map +1 -1
  133. package/dist/lib/features/project/project-service.d.ts +2 -1
  134. package/dist/lib/features/project/project-service.d.ts.map +1 -1
  135. package/dist/lib/features/project/project-service.js +3 -1
  136. package/dist/lib/features/project/project-service.js.map +1 -1
  137. package/dist/lib/features/project-environments/project-environments.e2e.test.js +37 -0
  138. package/dist/lib/features/project-environments/project-environments.e2e.test.js.map +1 -1
  139. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.d.ts.map +1 -1
  140. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js +2 -5
  141. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js.map +1 -1
  142. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js +2 -2
  143. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js.map +1 -1
  144. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts +2 -1
  145. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts.map +1 -1
  146. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js +20 -3
  147. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js.map +1 -1
  148. package/dist/lib/features/release-plans/release-plan-milestone-strategy.d.ts +2 -0
  149. package/dist/lib/features/release-plans/release-plan-milestone-strategy.d.ts.map +1 -1
  150. package/dist/lib/features/release-plans/release-plan-store.d.ts.map +1 -1
  151. package/dist/lib/features/release-plans/release-plan-store.js +2 -0
  152. package/dist/lib/features/release-plans/release-plan-store.js.map +1 -1
  153. package/dist/lib/features/release-plans/release-plan-template-store.d.ts.map +1 -1
  154. package/dist/lib/features/release-plans/release-plan-template-store.js +4 -3
  155. package/dist/lib/features/release-plans/release-plan-template-store.js.map +1 -1
  156. package/dist/lib/features/release-plans/release-plan-template-store.test.d.ts +2 -0
  157. package/dist/lib/features/release-plans/release-plan-template-store.test.d.ts.map +1 -0
  158. package/dist/lib/features/release-plans/release-plan-template-store.test.js +47 -0
  159. package/dist/lib/features/release-plans/release-plan-template-store.test.js.map +1 -0
  160. package/dist/lib/metric-events.d.ts +3 -2
  161. package/dist/lib/metric-events.d.ts.map +1 -1
  162. package/dist/lib/metric-events.js +2 -1
  163. package/dist/lib/metric-events.js.map +1 -1
  164. package/dist/lib/middleware/api-token-middleware.d.ts.map +1 -1
  165. package/dist/lib/middleware/api-token-middleware.js +1 -5
  166. package/dist/lib/middleware/api-token-middleware.js.map +1 -1
  167. package/dist/lib/middleware/api-token-middleware.test.js +35 -25
  168. package/dist/lib/middleware/api-token-middleware.test.js.map +1 -1
  169. package/dist/lib/middleware/backend-token-middleware.d.ts +5 -0
  170. package/dist/lib/middleware/backend-token-middleware.d.ts.map +1 -0
  171. package/dist/lib/middleware/backend-token-middleware.js +61 -0
  172. package/dist/lib/middleware/backend-token-middleware.js.map +1 -0
  173. package/dist/lib/middleware/backend-token-middleware.test.d.ts +2 -0
  174. package/dist/lib/middleware/backend-token-middleware.test.d.ts.map +1 -0
  175. package/dist/lib/middleware/backend-token-middleware.test.js +73 -0
  176. package/dist/lib/middleware/backend-token-middleware.test.js.map +1 -0
  177. package/dist/lib/middleware/conditional-middleware.d.ts +20 -0
  178. package/dist/lib/middleware/conditional-middleware.d.ts.map +1 -1
  179. package/dist/lib/middleware/conditional-middleware.js +26 -0
  180. package/dist/lib/middleware/conditional-middleware.js.map +1 -1
  181. package/dist/lib/middleware/conditional-middleware.test.d.ts +2 -0
  182. package/dist/lib/middleware/conditional-middleware.test.d.ts.map +1 -0
  183. package/dist/lib/middleware/conditional-middleware.test.js +31 -0
  184. package/dist/lib/middleware/conditional-middleware.test.js.map +1 -0
  185. package/dist/lib/middleware/frontend-token-middleware.d.ts +5 -0
  186. package/dist/lib/middleware/frontend-token-middleware.d.ts.map +1 -0
  187. package/dist/lib/middleware/frontend-token-middleware.js +61 -0
  188. package/dist/lib/middleware/frontend-token-middleware.js.map +1 -0
  189. package/dist/lib/middleware/user-token-client-api-logger-middleware.js +1 -1
  190. package/dist/lib/middleware/user-token-client-api-logger-middleware.js.map +1 -1
  191. package/dist/lib/openapi/spec/event-schema.d.ts +1 -1
  192. package/dist/lib/openapi/spec/event-search-response-schema.d.ts +1 -1
  193. package/dist/lib/openapi/spec/events-schema.d.ts +1 -1
  194. package/dist/lib/openapi/spec/export-result-schema.d.ts +1018 -100
  195. package/dist/lib/openapi/spec/export-result-schema.d.ts.map +1 -1
  196. package/dist/lib/openapi/spec/export-result-schema.js +4 -2
  197. package/dist/lib/openapi/spec/export-result-schema.js.map +1 -1
  198. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.d.ts +168 -0
  199. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.d.ts.map +1 -0
  200. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.js +66 -0
  201. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.js.map +1 -0
  202. package/dist/lib/openapi/spec/feature-environment-schema.d.ts +265 -7
  203. package/dist/lib/openapi/spec/feature-environment-schema.d.ts.map +1 -1
  204. package/dist/lib/openapi/spec/feature-environment-schema.js +13 -0
  205. package/dist/lib/openapi/spec/feature-environment-schema.js.map +1 -1
  206. package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
  207. package/dist/lib/openapi/spec/feature-schema.d.ts +475 -16
  208. package/dist/lib/openapi/spec/feature-schema.d.ts.map +1 -1
  209. package/dist/lib/openapi/spec/feature-schema.js +4 -2
  210. package/dist/lib/openapi/spec/feature-schema.js.map +1 -1
  211. package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts +688 -14
  212. package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts.map +1 -1
  213. package/dist/lib/openapi/spec/feature-search-environment-schema.js +8 -0
  214. package/dist/lib/openapi/spec/feature-search-environment-schema.js.map +1 -1
  215. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts +10 -1
  216. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts.map +1 -1
  217. package/dist/lib/openapi/spec/feature-search-query-parameters.js +10 -0
  218. package/dist/lib/openapi/spec/feature-search-query-parameters.js.map +1 -1
  219. package/dist/lib/openapi/spec/feature-search-response-schema.d.ts +8097 -155
  220. package/dist/lib/openapi/spec/feature-search-response-schema.d.ts.map +1 -1
  221. package/dist/lib/openapi/spec/feature-search-response-schema.js +22 -0
  222. package/dist/lib/openapi/spec/feature-search-response-schema.js.map +1 -1
  223. package/dist/lib/openapi/spec/health-overview-schema.d.ts +1336 -210
  224. package/dist/lib/openapi/spec/health-overview-schema.d.ts.map +1 -1
  225. package/dist/lib/openapi/spec/health-overview-schema.js +8 -0
  226. package/dist/lib/openapi/spec/health-overview-schema.js.map +1 -1
  227. package/dist/lib/openapi/spec/health-report-schema.d.ts +1336 -210
  228. package/dist/lib/openapi/spec/health-report-schema.d.ts.map +1 -1
  229. package/dist/lib/openapi/spec/import-toggles-schema.d.ts +2 -2
  230. package/dist/lib/openapi/spec/import-toggles-schema.d.ts.map +1 -1
  231. package/dist/lib/openapi/spec/import-toggles-schema.js +4 -2
  232. package/dist/lib/openapi/spec/import-toggles-schema.js.map +1 -1
  233. package/dist/lib/openapi/spec/index.d.ts +4 -2
  234. package/dist/lib/openapi/spec/index.d.ts.map +1 -1
  235. package/dist/lib/openapi/spec/index.js +4 -2
  236. package/dist/lib/openapi/spec/index.js.map +1 -1
  237. package/dist/lib/openapi/spec/integration-event-schema.d.ts +1 -1
  238. package/dist/lib/openapi/spec/integration-events-schema.d.ts +2 -2
  239. package/dist/lib/openapi/spec/metric-query-schema.d.ts +6 -0
  240. package/dist/lib/openapi/spec/metric-query-schema.d.ts.map +1 -1
  241. package/dist/lib/openapi/spec/metric-query-schema.js +6 -0
  242. package/dist/lib/openapi/spec/metric-query-schema.js.map +1 -1
  243. package/dist/lib/openapi/spec/profile-schema.d.ts +475 -16
  244. package/dist/lib/openapi/spec/profile-schema.d.ts.map +1 -1
  245. package/dist/lib/openapi/spec/project-overview-schema.d.ts +1336 -210
  246. package/dist/lib/openapi/spec/project-overview-schema.d.ts.map +1 -1
  247. package/dist/lib/openapi/spec/project-overview-schema.js +8 -0
  248. package/dist/lib/openapi/spec/project-overview-schema.js.map +1 -1
  249. package/dist/lib/openapi/spec/release-plan-milestone-schema.d.ts +1 -1
  250. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.d.ts +1 -1
  251. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.js +1 -1
  252. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.js.map +1 -1
  253. package/dist/lib/openapi/spec/{safeguard-schema.d.ts → release-plan-safeguard-schema.d.ts} +16 -4
  254. package/dist/lib/openapi/spec/release-plan-safeguard-schema.d.ts.map +1 -0
  255. package/dist/lib/openapi/spec/{safeguard-schema.js → release-plan-safeguard-schema.js} +3 -3
  256. package/dist/lib/openapi/spec/release-plan-safeguard-schema.js.map +1 -0
  257. package/dist/lib/openapi/spec/release-plan-schema.d.ts +23 -5
  258. package/dist/lib/openapi/spec/release-plan-schema.d.ts.map +1 -1
  259. package/dist/lib/openapi/spec/release-plan-schema.js +3 -3
  260. package/dist/lib/openapi/spec/release-plan-schema.js.map +1 -1
  261. package/dist/lib/openapi/spec/release-plan-template-schema.d.ts +2 -2
  262. package/dist/lib/openapi/spec/release-plan-templates-schema.d.ts +2897 -0
  263. package/dist/lib/openapi/spec/release-plan-templates-schema.d.ts.map +1 -0
  264. package/dist/lib/openapi/spec/release-plan-templates-schema.js +29 -0
  265. package/dist/lib/openapi/spec/release-plan-templates-schema.js.map +1 -0
  266. package/dist/lib/openapi/spec/release-plans-schema.d.ts +45 -9
  267. package/dist/lib/openapi/spec/release-plans-schema.d.ts.map +1 -1
  268. package/dist/lib/openapi/spec/release-plans-schema.js +2 -2
  269. package/dist/lib/openapi/spec/release-plans-schema.js.map +1 -1
  270. package/dist/lib/openapi/spec/search-features-schema.d.ts +13694 -5078
  271. package/dist/lib/openapi/spec/search-features-schema.d.ts.map +1 -1
  272. package/dist/lib/routes/admin-api/api-token.js +1 -1
  273. package/dist/lib/routes/admin-api/api-token.js.map +1 -1
  274. package/dist/lib/routes/admin-api/project/api-token.js +1 -1
  275. package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
  276. package/dist/lib/routes/logout.js +1 -1
  277. package/dist/lib/routes/logout.js.map +1 -1
  278. package/dist/lib/routes/logout.test.js +4 -4
  279. package/dist/lib/routes/logout.test.js.map +1 -1
  280. package/dist/lib/schema/api-token-schema.d.ts.map +1 -1
  281. package/dist/lib/schema/api-token-schema.js +1 -0
  282. package/dist/lib/schema/api-token-schema.js.map +1 -1
  283. package/dist/lib/server-impl.d.ts +5 -5
  284. package/dist/lib/server-impl.d.ts.map +1 -1
  285. package/dist/lib/server-impl.js +3 -3
  286. package/dist/lib/server-impl.js.map +1 -1
  287. package/dist/lib/services/api-token-service.d.ts +2 -2
  288. package/dist/lib/services/api-token-service.d.ts.map +1 -1
  289. package/dist/lib/services/api-token-service.js +5 -3
  290. package/dist/lib/services/api-token-service.js.map +1 -1
  291. package/dist/lib/services/api-token-service.test.js +5 -4
  292. package/dist/lib/services/api-token-service.test.js.map +1 -1
  293. package/dist/lib/services/edge-service.d.ts +1 -0
  294. package/dist/lib/services/edge-service.d.ts.map +1 -1
  295. package/dist/lib/services/edge-service.js +5 -2
  296. package/dist/lib/services/edge-service.js.map +1 -1
  297. package/dist/lib/services/user-service.d.ts.map +1 -1
  298. package/dist/lib/services/user-service.js +0 -4
  299. package/dist/lib/services/user-service.js.map +1 -1
  300. package/dist/lib/types/experimental.d.ts +1 -1
  301. package/dist/lib/types/experimental.d.ts.map +1 -1
  302. package/dist/lib/types/experimental.js +7 -8
  303. package/dist/lib/types/experimental.js.map +1 -1
  304. package/dist/lib/types/model.d.ts +2 -1
  305. package/dist/lib/types/model.d.ts.map +1 -1
  306. package/dist/lib/types/model.js.map +1 -1
  307. package/dist/lib/types/option.d.ts +2 -0
  308. package/dist/lib/types/option.d.ts.map +1 -1
  309. package/dist/lib/types/stores/api-token-store.d.ts +2 -1
  310. package/dist/lib/types/stores/api-token-store.d.ts.map +1 -1
  311. package/dist/lib/types/stores/edge-store.d.ts +2 -0
  312. package/dist/lib/types/stores/edge-store.d.ts.map +1 -1
  313. package/dist/lib/types/stores/event-store.d.ts +1 -1
  314. package/dist/lib/types/stores/event-store.d.ts.map +1 -1
  315. package/dist/lib/util/clone-db-config.d.ts +3 -0
  316. package/dist/lib/util/clone-db-config.d.ts.map +1 -0
  317. package/dist/lib/util/clone-db-config.js +18 -0
  318. package/dist/lib/util/clone-db-config.js.map +1 -0
  319. package/dist/lib/util/clone-db-config.test.d.ts +2 -0
  320. package/dist/lib/util/clone-db-config.test.d.ts.map +1 -0
  321. package/dist/lib/util/clone-db-config.test.js +40 -0
  322. package/dist/lib/util/clone-db-config.test.js.map +1 -0
  323. package/dist/lib/util/db-lock.d.ts.map +1 -1
  324. package/dist/lib/util/db-lock.js +2 -3
  325. package/dist/lib/util/db-lock.js.map +1 -1
  326. package/dist/lib/util/sortStrategies.d.ts +1 -1
  327. package/dist/lib/util/sortStrategies.d.ts.map +1 -1
  328. package/dist/lib/util/sortStrategies.js +6 -2
  329. package/dist/lib/util/sortStrategies.js.map +1 -1
  330. package/dist/lib/util/sortStrategies.test.js +21 -0
  331. package/dist/lib/util/sortStrategies.test.js.map +1 -1
  332. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.d.ts +3 -0
  333. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.d.ts.map +1 -0
  334. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.js +15 -0
  335. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.js.map +1 -0
  336. package/dist/migrations/20260310134100-split-safeguards-table.d.ts +3 -0
  337. package/dist/migrations/20260310134100-split-safeguards-table.d.ts.map +1 -0
  338. package/dist/migrations/20260310134100-split-safeguards-table.js +31 -0
  339. package/dist/migrations/20260310134100-split-safeguards-table.js.map +1 -0
  340. package/dist/migrations/20260311073041-migrate-safeguards-data.d.ts +3 -0
  341. package/dist/migrations/20260311073041-migrate-safeguards-data.d.ts.map +1 -0
  342. package/dist/migrations/20260311073041-migrate-safeguards-data.js +42 -0
  343. package/dist/migrations/20260311073041-migrate-safeguards-data.js.map +1 -0
  344. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.d.ts +3 -0
  345. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.d.ts.map +1 -0
  346. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.js +31 -0
  347. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.js.map +1 -0
  348. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.d.ts +3 -0
  349. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.d.ts.map +1 -0
  350. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.js +8 -0
  351. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.js.map +1 -0
  352. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.d.ts +3 -0
  353. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.d.ts.map +1 -0
  354. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.js +54 -0
  355. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.js.map +1 -0
  356. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.d.ts +3 -0
  357. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.d.ts.map +1 -0
  358. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.js +21 -0
  359. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.js.map +1 -0
  360. package/dist/migrations/20260318100000-safeguards-drop-project-column.d.ts +3 -0
  361. package/dist/migrations/20260318100000-safeguards-drop-project-column.d.ts.map +1 -0
  362. package/dist/migrations/20260318100000-safeguards-drop-project-column.js +14 -0
  363. package/dist/migrations/20260318100000-safeguards-drop-project-column.js.map +1 -0
  364. package/dist/migrations/20260406132537-user-access-requests.d.ts +3 -0
  365. package/dist/migrations/20260406132537-user-access-requests.d.ts.map +1 -0
  366. package/dist/migrations/20260406132537-user-access-requests.js +16 -0
  367. package/dist/migrations/20260406132537-user-access-requests.js.map +1 -0
  368. package/dist/migrations/20260406161629-user-access-requests-unique-email.d.ts +3 -0
  369. package/dist/migrations/20260406161629-user-access-requests-unique-email.d.ts.map +1 -0
  370. package/dist/migrations/20260406161629-user-access-requests-unique-email.js +14 -0
  371. package/dist/migrations/20260406161629-user-access-requests-unique-email.js.map +1 -0
  372. package/dist/migrator.d.ts.map +1 -1
  373. package/dist/migrator.js +4 -3
  374. package/dist/migrator.js.map +1 -1
  375. package/dist/server-dev.js +4 -7
  376. package/dist/server-dev.js.map +1 -1
  377. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +5 -5
  378. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
  379. package/dist/test/e2e/api/admin/api-token.e2e.test.js +3 -2
  380. package/dist/test/e2e/api/admin/api-token.e2e.test.js.map +1 -1
  381. package/dist/test/e2e/api/admin/conditional-middleware.e2e.test.js +106 -38
  382. package/dist/test/e2e/api/admin/conditional-middleware.e2e.test.js.map +1 -1
  383. package/dist/test/e2e/api/admin/context-api-include-query-params.e2e.test.js +1 -7
  384. package/dist/test/e2e/api/admin/context-api-include-query-params.e2e.test.js.map +1 -1
  385. package/dist/test/e2e/api/admin/project/api-token.e2e.test.js +2 -1
  386. package/dist/test/e2e/api/admin/project/api-token.e2e.test.js.map +1 -1
  387. package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js +5 -5
  388. package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js.map +1 -1
  389. package/dist/test/e2e/api/admin/project-context.e2e.test.js +1 -7
  390. package/dist/test/e2e/api/admin/project-context.e2e.test.js.map +1 -1
  391. package/dist/test/e2e/api/client/feature.token.access.e2e.test.js +34 -1
  392. package/dist/test/e2e/api/client/feature.token.access.e2e.test.js.map +1 -1
  393. package/dist/test/e2e/services/api-token-service.e2e.test.js +21 -6
  394. package/dist/test/e2e/services/api-token-service.e2e.test.js.map +1 -1
  395. package/dist/test/e2e/services/edge-service.e2e.test.js +4 -3
  396. package/dist/test/e2e/services/edge-service.e2e.test.js.map +1 -1
  397. package/dist/test/e2e/stores/api-token-store.e2e.test.js +15 -14
  398. package/dist/test/e2e/stores/api-token-store.e2e.test.js.map +1 -1
  399. package/dist/test/e2e/stores/event-store.e2e.test.js +8 -9
  400. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  401. package/dist/test/fixtures/fake-api-token-store.d.ts +2 -1
  402. package/dist/test/fixtures/fake-api-token-store.d.ts.map +1 -1
  403. package/dist/test/fixtures/fake-api-token-store.js +4 -1
  404. package/dist/test/fixtures/fake-api-token-store.js.map +1 -1
  405. package/dist/test/fixtures/fake-event-store.d.ts +1 -1
  406. package/dist/test/fixtures/fake-event-store.d.ts.map +1 -1
  407. package/dist/test/fixtures/fake-event-store.js +1 -1
  408. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  409. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts +2 -2
  410. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts.map +1 -1
  411. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js +3 -2
  412. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js.map +1 -1
  413. package/frontend/build/index.html +1 -1
  414. package/frontend/build/static/AdvancedPlayground-BTPrG6RW.js +3 -0
  415. package/frontend/build/static/BackendConnections-CRh8Vxoe.js +1 -0
  416. package/frontend/build/static/{CreateProject-DV-Ad8Sn.js → CreateProject-DEMalH1j.js} +1 -1
  417. package/frontend/build/static/EnterpriseEdge-Cp-pGMa0.js +6 -0
  418. package/frontend/build/static/FeatureMetricsChart-DQOE71LA.js +2 -0
  419. package/frontend/build/static/FeatureStaleDialog-B6BfnDiQ.js +689 -0
  420. package/frontend/build/static/{FeatureViewLazyExport-Bsw7-knb.js → FeatureViewLazyExport-BkNTNFqK.js} +4 -7
  421. package/frontend/build/static/FlagMetricsChart-zYDF9bet.js +2 -0
  422. package/frontend/build/static/FrontendNetworkTrafficUsage-CbxdFXH7.js +1 -0
  423. package/frontend/build/static/GridLayoutWrapper-Cq6Bzm36.js +3 -0
  424. package/frontend/build/static/ImpactMetricsPage-CFYXYXPb.js +1 -0
  425. package/frontend/build/static/LazyAdminExport-ByTh4iFa.js +38 -0
  426. package/frontend/build/static/LazyProjectExport-K12Xy3w9.js +46 -0
  427. package/frontend/build/static/{LifecycleChartComponent-cxR-TN3V.js → LifecycleChartComponent-DHvlFNd2.js} +3 -3
  428. package/frontend/build/static/LineChartComponent-BlhKm3cw.js +1 -0
  429. package/frontend/build/static/MarkCompletedDialogue-apmlFjVY.js +1 -0
  430. package/frontend/build/static/{NetworkOverview-DxaPXUzZ.js → NetworkOverview-BiLOuQ4c.js} +1 -1
  431. package/frontend/build/static/{NetworkPrometheusAPIWarning-ltyTlXFF.js → NetworkPrometheusAPIWarning-CYo3j2Tj.js} +1 -1
  432. package/frontend/build/static/{NetworkTraffic-Dhw4yIBs.js → NetworkTraffic-DONL5oIx.js} +1 -1
  433. package/frontend/build/static/NetworkTrafficUsage-DjQiYq0S.js +1 -0
  434. package/frontend/build/static/{PercentageDonut-JGNh2FVZ.js → PercentageDonut-CA9hYg3v.js} +1 -1
  435. package/frontend/build/static/{ReactJSONEditor-GHl7KvdS.js → ReactJSONEditor-9cJL1vJY.js} +31 -31
  436. package/frontend/build/static/{RoleCell-CjVCxBgl.js → RoleCell-ZzU5Oqy8.js} +1 -1
  437. package/frontend/build/static/Safeguard-DY1N4aPz.js +1 -0
  438. package/frontend/build/static/aggregateFeatureMetrics-D6bHft_C.js +1 -0
  439. package/frontend/build/static/{formatTickValue-BZb4ZIL9.js → formatTickValue-BcLsqREh.js} +2 -2
  440. package/frontend/build/static/{index-DcWBU_a4.js → index-B87DWXbl.js} +1 -1
  441. package/frontend/build/static/index-CoLhlfXP.js +565 -0
  442. package/frontend/build/static/loginBackground-CQx0IRYc.png +0 -0
  443. package/frontend/build/static/{networkTrafficUsageHighlightPlugin-BbfAyDiQ.js → networkTrafficUsageHighlightPlugin-CqEM-cK_.js} +1 -1
  444. package/frontend/build/static/passwordSuccess-fcvTEYOw.png +0 -0
  445. package/frontend/build/static/useApiTokens-ClWvohC9.js +1 -0
  446. package/frontend/package.json +50 -42
  447. package/package.json +11 -10
  448. package/dist/lib/openapi/spec/safeguard-schema.d.ts.map +0 -1
  449. package/dist/lib/openapi/spec/safeguard-schema.js.map +0 -1
  450. package/frontend/build/static/AdvancedPlayground-CF0hkpiE.js +0 -3
  451. package/frontend/build/static/BackendConnections-DhZczar-.js +0 -1
  452. package/frontend/build/static/EnterpriseEdge-D1To2ugP.js +0 -3
  453. package/frontend/build/static/FeatureMetricsChart-D8sRgx5P.js +0 -2
  454. package/frontend/build/static/FeatureStaleDialog-DOkhgvaj.js +0 -7
  455. package/frontend/build/static/FlagMetricsChart-CF_kEyQa.js +0 -2
  456. package/frontend/build/static/FrontendNetworkTrafficUsage-C8zJSvoc.js +0 -1
  457. package/frontend/build/static/GridLayoutWrapper-DpJcUbQB.js +0 -3
  458. package/frontend/build/static/ImpactMetricsPage-KLVv-tP4.js +0 -1
  459. package/frontend/build/static/LazyAdminExport-CWQiknO-.js +0 -38
  460. package/frontend/build/static/LazyProjectExport-DsMn4Yxm.js +0 -728
  461. package/frontend/build/static/LineChartComponent-_yZEp3dd.js +0 -1
  462. package/frontend/build/static/MarkCompletedDialogue-DFtLyDN0.js +0 -1
  463. package/frontend/build/static/NetworkTrafficUsage-deKWRhIS.js +0 -1
  464. package/frontend/build/static/aggregateFeatureMetrics-YEdZNNoV.js +0 -1
  465. package/frontend/build/static/index-DMSjiFEm.js +0 -583
  466. package/frontend/build/static/useApiTokens-DBB3NvXL.js +0 -1
@@ -1151,6 +1151,13 @@ export declare const projectOverviewSchema: {
1151
1151
  readonly $ref: "#/components/schemas/releasePlanSchema";
1152
1152
  };
1153
1153
  };
1154
+ readonly safeguards: {
1155
+ readonly type: "array";
1156
+ readonly description: "Safeguards for this feature environment";
1157
+ readonly items: {
1158
+ readonly $ref: "#/components/schemas/featureEnvironmentSafeguardSchema";
1159
+ };
1160
+ };
1154
1161
  readonly yes: {
1155
1162
  readonly type: "integer";
1156
1163
  readonly description: "How many times the feature evaluated to true (enabled)";
@@ -1609,7 +1616,7 @@ export declare const projectOverviewSchema: {
1609
1616
  readonly type: "array";
1610
1617
  readonly description: "An array of safeguards configured for this release plan.";
1611
1618
  readonly items: {
1612
- readonly $ref: "#/components/schemas/safeguardSchema";
1619
+ readonly $ref: "#/components/schemas/releasePlanSafeguardSchema";
1613
1620
  };
1614
1621
  };
1615
1622
  };
@@ -1694,7 +1701,7 @@ export declare const projectOverviewSchema: {
1694
1701
  readonly additionalProperties: false;
1695
1702
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
1696
1703
  readonly type: "object";
1697
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
1704
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
1698
1705
  readonly properties: {
1699
1706
  readonly id: {
1700
1707
  readonly type: "string";
@@ -2363,7 +2370,7 @@ export declare const projectOverviewSchema: {
2363
2370
  readonly additionalProperties: false;
2364
2371
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
2365
2372
  readonly type: "object";
2366
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
2373
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
2367
2374
  readonly properties: {
2368
2375
  readonly id: {
2369
2376
  readonly type: "string";
@@ -3024,8 +3031,8 @@ export declare const projectOverviewSchema: {
3024
3031
  };
3025
3032
  readonly components: {};
3026
3033
  };
3027
- readonly safeguardSchema: {
3028
- readonly $id: "#/components/schemas/safeguardSchema";
3034
+ readonly releasePlanSafeguardSchema: {
3035
+ readonly $id: "#/components/schemas/releasePlanSafeguardSchema";
3029
3036
  readonly type: "object";
3030
3037
  readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
3031
3038
  readonly description: "A safeguard configuration for a release plan.";
@@ -3094,6 +3101,12 @@ export declare const projectOverviewSchema: {
3094
3101
  readonly project: readonly ["default"];
3095
3102
  };
3096
3103
  };
3104
+ readonly source: {
3105
+ readonly type: "string";
3106
+ readonly enum: readonly ["internal", "external"];
3107
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
3108
+ readonly example: "internal";
3109
+ };
3097
3110
  readonly id: {
3098
3111
  readonly type: "string";
3099
3112
  readonly description: "The unique identifier for this impact metric";
@@ -3143,6 +3156,12 @@ export declare const projectOverviewSchema: {
3143
3156
  readonly project: readonly ["default"];
3144
3157
  };
3145
3158
  };
3159
+ readonly source: {
3160
+ readonly type: "string";
3161
+ readonly enum: readonly ["internal", "external"];
3162
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
3163
+ readonly example: "internal";
3164
+ };
3146
3165
  };
3147
3166
  readonly components: {};
3148
3167
  };
@@ -3208,6 +3227,12 @@ export declare const projectOverviewSchema: {
3208
3227
  readonly project: readonly ["default"];
3209
3228
  };
3210
3229
  };
3230
+ readonly source: {
3231
+ readonly type: "string";
3232
+ readonly enum: readonly ["internal", "external"];
3233
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
3234
+ readonly example: "internal";
3235
+ };
3211
3236
  };
3212
3237
  readonly components: {};
3213
3238
  };
@@ -3314,7 +3339,7 @@ export declare const projectOverviewSchema: {
3314
3339
  readonly additionalProperties: false;
3315
3340
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
3316
3341
  readonly type: "object";
3317
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
3342
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
3318
3343
  readonly properties: {
3319
3344
  readonly id: {
3320
3345
  readonly type: "string";
@@ -3983,7 +4008,7 @@ export declare const projectOverviewSchema: {
3983
4008
  readonly additionalProperties: false;
3984
4009
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
3985
4010
  readonly type: "object";
3986
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
4011
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
3987
4012
  readonly properties: {
3988
4013
  readonly id: {
3989
4014
  readonly type: "string";
@@ -4591,6 +4616,239 @@ export declare const projectOverviewSchema: {
4591
4616
  };
4592
4617
  readonly components: {};
4593
4618
  };
4619
+ readonly featureEnvironmentSafeguardSchema: {
4620
+ readonly $id: "#/components/schemas/featureEnvironmentSafeguardSchema";
4621
+ readonly type: "object";
4622
+ readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
4623
+ readonly description: "A safeguard configuration for a feature environment.";
4624
+ readonly additionalProperties: false;
4625
+ readonly properties: {
4626
+ readonly id: {
4627
+ readonly type: "string";
4628
+ readonly description: "The unique ULID identifier for this safeguard";
4629
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
4630
+ };
4631
+ readonly action: {
4632
+ readonly type: "object";
4633
+ readonly required: readonly ["type", "featureName", "environment", "project"];
4634
+ readonly additionalProperties: false;
4635
+ readonly description: "Disable a feature in an environment when triggered.";
4636
+ readonly properties: {
4637
+ readonly type: {
4638
+ readonly type: "string";
4639
+ readonly description: "The type of action to perform.";
4640
+ readonly example: "disableFeatureEnvironment";
4641
+ };
4642
+ readonly featureName: {
4643
+ readonly type: "string";
4644
+ readonly description: "The feature flag name this safeguard applies to.";
4645
+ };
4646
+ readonly environment: {
4647
+ readonly type: "string";
4648
+ readonly description: "The environment this safeguard applies to.";
4649
+ };
4650
+ readonly project: {
4651
+ readonly type: "string";
4652
+ readonly description: "The project this safeguard applies to.";
4653
+ };
4654
+ };
4655
+ };
4656
+ readonly triggerCondition: {
4657
+ readonly $ref: "#/components/schemas/safeguardTriggerConditionSchema";
4658
+ readonly description: "The condition that triggers the safeguard.";
4659
+ };
4660
+ readonly impactMetric: {
4661
+ readonly type: "object";
4662
+ readonly required: readonly ["id", "metricName", "timeRange", "aggregationMode", "labelSelectors"];
4663
+ readonly additionalProperties: false;
4664
+ readonly properties: {
4665
+ readonly metricName: {
4666
+ readonly type: "string";
4667
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
4668
+ readonly example: "unleash_counter_feature_toggle_usage_total";
4669
+ };
4670
+ readonly timeRange: {
4671
+ readonly type: "string";
4672
+ readonly enum: readonly ["hour", "day", "week", "month"];
4673
+ readonly description: "The time range for the metric data.";
4674
+ readonly example: "day";
4675
+ };
4676
+ readonly aggregationMode: {
4677
+ readonly type: "string";
4678
+ readonly description: "The aggregation mode for the metric data.";
4679
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
4680
+ readonly example: "rps";
4681
+ };
4682
+ readonly labelSelectors: {
4683
+ readonly type: "object";
4684
+ readonly additionalProperties: {
4685
+ readonly type: "array";
4686
+ readonly items: {
4687
+ readonly type: "string";
4688
+ };
4689
+ };
4690
+ readonly description: "The selected labels and their values for filtering the metric data.";
4691
+ readonly example: {
4692
+ readonly environment: readonly ["development"];
4693
+ readonly project: readonly ["default"];
4694
+ };
4695
+ };
4696
+ readonly source: {
4697
+ readonly type: "string";
4698
+ readonly enum: readonly ["internal", "external"];
4699
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
4700
+ readonly example: "internal";
4701
+ };
4702
+ readonly id: {
4703
+ readonly type: "string";
4704
+ readonly description: "The unique identifier for this impact metric";
4705
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
4706
+ };
4707
+ };
4708
+ readonly description: "The metric configuration used to evaluate the safeguard condition.";
4709
+ };
4710
+ };
4711
+ readonly components: {
4712
+ readonly schemas: {
4713
+ readonly metricQuerySchema: {
4714
+ readonly $id: "#/components/schemas/metricQuerySchema";
4715
+ readonly type: "object";
4716
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
4717
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
4718
+ readonly additionalProperties: false;
4719
+ readonly properties: {
4720
+ readonly metricName: {
4721
+ readonly type: "string";
4722
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
4723
+ readonly example: "unleash_counter_feature_toggle_usage_total";
4724
+ };
4725
+ readonly timeRange: {
4726
+ readonly type: "string";
4727
+ readonly enum: readonly ["hour", "day", "week", "month"];
4728
+ readonly description: "The time range for the metric data.";
4729
+ readonly example: "day";
4730
+ };
4731
+ readonly aggregationMode: {
4732
+ readonly type: "string";
4733
+ readonly description: "The aggregation mode for the metric data.";
4734
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
4735
+ readonly example: "rps";
4736
+ };
4737
+ readonly labelSelectors: {
4738
+ readonly type: "object";
4739
+ readonly additionalProperties: {
4740
+ readonly type: "array";
4741
+ readonly items: {
4742
+ readonly type: "string";
4743
+ };
4744
+ };
4745
+ readonly description: "The selected labels and their values for filtering the metric data.";
4746
+ readonly example: {
4747
+ readonly environment: readonly ["development"];
4748
+ readonly project: readonly ["default"];
4749
+ };
4750
+ };
4751
+ readonly source: {
4752
+ readonly type: "string";
4753
+ readonly enum: readonly ["internal", "external"];
4754
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
4755
+ readonly example: "internal";
4756
+ };
4757
+ };
4758
+ readonly components: {};
4759
+ };
4760
+ readonly safeguardTriggerConditionSchema: {
4761
+ readonly $id: "#/components/schemas/safeguardTriggerConditionSchema";
4762
+ readonly type: "object";
4763
+ readonly required: readonly ["operator", "threshold"];
4764
+ readonly additionalProperties: false;
4765
+ readonly description: "The condition that triggers the safeguard.";
4766
+ readonly properties: {
4767
+ readonly operator: {
4768
+ readonly type: "string";
4769
+ readonly enum: readonly [">", "<"];
4770
+ readonly description: "The comparison operator for the threshold check.";
4771
+ readonly example: ">";
4772
+ };
4773
+ readonly threshold: {
4774
+ readonly type: "number";
4775
+ readonly description: "The threshold value to compare against.";
4776
+ readonly example: 100;
4777
+ };
4778
+ };
4779
+ readonly components: {};
4780
+ };
4781
+ };
4782
+ };
4783
+ };
4784
+ readonly safeguardTriggerConditionSchema: {
4785
+ readonly $id: "#/components/schemas/safeguardTriggerConditionSchema";
4786
+ readonly type: "object";
4787
+ readonly required: readonly ["operator", "threshold"];
4788
+ readonly additionalProperties: false;
4789
+ readonly description: "The condition that triggers the safeguard.";
4790
+ readonly properties: {
4791
+ readonly operator: {
4792
+ readonly type: "string";
4793
+ readonly enum: readonly [">", "<"];
4794
+ readonly description: "The comparison operator for the threshold check.";
4795
+ readonly example: ">";
4796
+ };
4797
+ readonly threshold: {
4798
+ readonly type: "number";
4799
+ readonly description: "The threshold value to compare against.";
4800
+ readonly example: 100;
4801
+ };
4802
+ };
4803
+ readonly components: {};
4804
+ };
4805
+ readonly metricQuerySchema: {
4806
+ readonly $id: "#/components/schemas/metricQuerySchema";
4807
+ readonly type: "object";
4808
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
4809
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
4810
+ readonly additionalProperties: false;
4811
+ readonly properties: {
4812
+ readonly metricName: {
4813
+ readonly type: "string";
4814
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
4815
+ readonly example: "unleash_counter_feature_toggle_usage_total";
4816
+ };
4817
+ readonly timeRange: {
4818
+ readonly type: "string";
4819
+ readonly enum: readonly ["hour", "day", "week", "month"];
4820
+ readonly description: "The time range for the metric data.";
4821
+ readonly example: "day";
4822
+ };
4823
+ readonly aggregationMode: {
4824
+ readonly type: "string";
4825
+ readonly description: "The aggregation mode for the metric data.";
4826
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
4827
+ readonly example: "rps";
4828
+ };
4829
+ readonly labelSelectors: {
4830
+ readonly type: "object";
4831
+ readonly additionalProperties: {
4832
+ readonly type: "array";
4833
+ readonly items: {
4834
+ readonly type: "string";
4835
+ };
4836
+ };
4837
+ readonly description: "The selected labels and their values for filtering the metric data.";
4838
+ readonly example: {
4839
+ readonly environment: readonly ["development"];
4840
+ readonly project: readonly ["default"];
4841
+ };
4842
+ };
4843
+ readonly source: {
4844
+ readonly type: "string";
4845
+ readonly enum: readonly ["internal", "external"];
4846
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
4847
+ readonly example: "internal";
4848
+ };
4849
+ };
4850
+ readonly components: {};
4851
+ };
4594
4852
  };
4595
4853
  };
4596
4854
  };
@@ -5047,7 +5305,7 @@ export declare const projectOverviewSchema: {
5047
5305
  readonly type: "array";
5048
5306
  readonly description: "An array of safeguards configured for this release plan.";
5049
5307
  readonly items: {
5050
- readonly $ref: "#/components/schemas/safeguardSchema";
5308
+ readonly $ref: "#/components/schemas/releasePlanSafeguardSchema";
5051
5309
  };
5052
5310
  };
5053
5311
  };
@@ -5132,7 +5390,7 @@ export declare const projectOverviewSchema: {
5132
5390
  readonly additionalProperties: false;
5133
5391
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
5134
5392
  readonly type: "object";
5135
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
5393
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
5136
5394
  readonly properties: {
5137
5395
  readonly id: {
5138
5396
  readonly type: "string";
@@ -5801,7 +6059,7 @@ export declare const projectOverviewSchema: {
5801
6059
  readonly additionalProperties: false;
5802
6060
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
5803
6061
  readonly type: "object";
5804
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
6062
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
5805
6063
  readonly properties: {
5806
6064
  readonly id: {
5807
6065
  readonly type: "string";
@@ -6462,8 +6720,8 @@ export declare const projectOverviewSchema: {
6462
6720
  };
6463
6721
  readonly components: {};
6464
6722
  };
6465
- readonly safeguardSchema: {
6466
- readonly $id: "#/components/schemas/safeguardSchema";
6723
+ readonly releasePlanSafeguardSchema: {
6724
+ readonly $id: "#/components/schemas/releasePlanSafeguardSchema";
6467
6725
  readonly type: "object";
6468
6726
  readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
6469
6727
  readonly description: "A safeguard configuration for a release plan.";
@@ -6532,6 +6790,12 @@ export declare const projectOverviewSchema: {
6532
6790
  readonly project: readonly ["default"];
6533
6791
  };
6534
6792
  };
6793
+ readonly source: {
6794
+ readonly type: "string";
6795
+ readonly enum: readonly ["internal", "external"];
6796
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
6797
+ readonly example: "internal";
6798
+ };
6535
6799
  readonly id: {
6536
6800
  readonly type: "string";
6537
6801
  readonly description: "The unique identifier for this impact metric";
@@ -6581,6 +6845,12 @@ export declare const projectOverviewSchema: {
6581
6845
  readonly project: readonly ["default"];
6582
6846
  };
6583
6847
  };
6848
+ readonly source: {
6849
+ readonly type: "string";
6850
+ readonly enum: readonly ["internal", "external"];
6851
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
6852
+ readonly example: "internal";
6853
+ };
6584
6854
  };
6585
6855
  readonly components: {};
6586
6856
  };
@@ -6646,6 +6916,12 @@ export declare const projectOverviewSchema: {
6646
6916
  readonly project: readonly ["default"];
6647
6917
  };
6648
6918
  };
6919
+ readonly source: {
6920
+ readonly type: "string";
6921
+ readonly enum: readonly ["internal", "external"];
6922
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
6923
+ readonly example: "internal";
6924
+ };
6649
6925
  };
6650
6926
  readonly components: {};
6651
6927
  };
@@ -6752,7 +7028,7 @@ export declare const projectOverviewSchema: {
6752
7028
  readonly additionalProperties: false;
6753
7029
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
6754
7030
  readonly type: "object";
6755
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
7031
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
6756
7032
  readonly properties: {
6757
7033
  readonly id: {
6758
7034
  readonly type: "string";
@@ -7421,7 +7697,7 @@ export declare const projectOverviewSchema: {
7421
7697
  readonly additionalProperties: false;
7422
7698
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
7423
7699
  readonly type: "object";
7424
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
7700
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
7425
7701
  readonly properties: {
7426
7702
  readonly id: {
7427
7703
  readonly type: "string";
@@ -8029,8 +8305,8 @@ export declare const projectOverviewSchema: {
8029
8305
  };
8030
8306
  readonly components: {};
8031
8307
  };
8032
- readonly safeguardSchema: {
8033
- readonly $id: "#/components/schemas/safeguardSchema";
8308
+ readonly releasePlanSafeguardSchema: {
8309
+ readonly $id: "#/components/schemas/releasePlanSafeguardSchema";
8034
8310
  readonly type: "object";
8035
8311
  readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
8036
8312
  readonly description: "A safeguard configuration for a release plan.";
@@ -8099,6 +8375,12 @@ export declare const projectOverviewSchema: {
8099
8375
  readonly project: readonly ["default"];
8100
8376
  };
8101
8377
  };
8378
+ readonly source: {
8379
+ readonly type: "string";
8380
+ readonly enum: readonly ["internal", "external"];
8381
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
8382
+ readonly example: "internal";
8383
+ };
8102
8384
  readonly id: {
8103
8385
  readonly type: "string";
8104
8386
  readonly description: "The unique identifier for this impact metric";
@@ -8148,6 +8430,12 @@ export declare const projectOverviewSchema: {
8148
8430
  readonly project: readonly ["default"];
8149
8431
  };
8150
8432
  };
8433
+ readonly source: {
8434
+ readonly type: "string";
8435
+ readonly enum: readonly ["internal", "external"];
8436
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
8437
+ readonly example: "internal";
8438
+ };
8151
8439
  };
8152
8440
  readonly components: {};
8153
8441
  };
@@ -8175,33 +8463,198 @@ export declare const projectOverviewSchema: {
8175
8463
  };
8176
8464
  };
8177
8465
  };
8178
- readonly metricQuerySchema: {
8179
- readonly $id: "#/components/schemas/metricQuerySchema";
8466
+ readonly featureEnvironmentSafeguardSchema: {
8467
+ readonly $id: "#/components/schemas/featureEnvironmentSafeguardSchema";
8180
8468
  readonly type: "object";
8181
- readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
8182
- readonly description: "Common metric query configuration for selecting and filtering metric data.";
8469
+ readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
8470
+ readonly description: "A safeguard configuration for a feature environment.";
8183
8471
  readonly additionalProperties: false;
8184
8472
  readonly properties: {
8185
- readonly metricName: {
8186
- readonly type: "string";
8187
- readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
8188
- readonly example: "unleash_counter_feature_toggle_usage_total";
8189
- };
8190
- readonly timeRange: {
8191
- readonly type: "string";
8192
- readonly enum: readonly ["hour", "day", "week", "month"];
8193
- readonly description: "The time range for the metric data.";
8194
- readonly example: "day";
8195
- };
8196
- readonly aggregationMode: {
8473
+ readonly id: {
8197
8474
  readonly type: "string";
8198
- readonly description: "The aggregation mode for the metric data.";
8199
- readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
8200
- readonly example: "rps";
8475
+ readonly description: "The unique ULID identifier for this safeguard";
8476
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
8201
8477
  };
8202
- readonly labelSelectors: {
8478
+ readonly action: {
8203
8479
  readonly type: "object";
8204
- readonly additionalProperties: {
8480
+ readonly required: readonly ["type", "featureName", "environment", "project"];
8481
+ readonly additionalProperties: false;
8482
+ readonly description: "Disable a feature in an environment when triggered.";
8483
+ readonly properties: {
8484
+ readonly type: {
8485
+ readonly type: "string";
8486
+ readonly description: "The type of action to perform.";
8487
+ readonly example: "disableFeatureEnvironment";
8488
+ };
8489
+ readonly featureName: {
8490
+ readonly type: "string";
8491
+ readonly description: "The feature flag name this safeguard applies to.";
8492
+ };
8493
+ readonly environment: {
8494
+ readonly type: "string";
8495
+ readonly description: "The environment this safeguard applies to.";
8496
+ };
8497
+ readonly project: {
8498
+ readonly type: "string";
8499
+ readonly description: "The project this safeguard applies to.";
8500
+ };
8501
+ };
8502
+ };
8503
+ readonly triggerCondition: {
8504
+ readonly $ref: "#/components/schemas/safeguardTriggerConditionSchema";
8505
+ readonly description: "The condition that triggers the safeguard.";
8506
+ };
8507
+ readonly impactMetric: {
8508
+ readonly type: "object";
8509
+ readonly required: readonly ["id", "metricName", "timeRange", "aggregationMode", "labelSelectors"];
8510
+ readonly additionalProperties: false;
8511
+ readonly properties: {
8512
+ readonly metricName: {
8513
+ readonly type: "string";
8514
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
8515
+ readonly example: "unleash_counter_feature_toggle_usage_total";
8516
+ };
8517
+ readonly timeRange: {
8518
+ readonly type: "string";
8519
+ readonly enum: readonly ["hour", "day", "week", "month"];
8520
+ readonly description: "The time range for the metric data.";
8521
+ readonly example: "day";
8522
+ };
8523
+ readonly aggregationMode: {
8524
+ readonly type: "string";
8525
+ readonly description: "The aggregation mode for the metric data.";
8526
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
8527
+ readonly example: "rps";
8528
+ };
8529
+ readonly labelSelectors: {
8530
+ readonly type: "object";
8531
+ readonly additionalProperties: {
8532
+ readonly type: "array";
8533
+ readonly items: {
8534
+ readonly type: "string";
8535
+ };
8536
+ };
8537
+ readonly description: "The selected labels and their values for filtering the metric data.";
8538
+ readonly example: {
8539
+ readonly environment: readonly ["development"];
8540
+ readonly project: readonly ["default"];
8541
+ };
8542
+ };
8543
+ readonly source: {
8544
+ readonly type: "string";
8545
+ readonly enum: readonly ["internal", "external"];
8546
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
8547
+ readonly example: "internal";
8548
+ };
8549
+ readonly id: {
8550
+ readonly type: "string";
8551
+ readonly description: "The unique identifier for this impact metric";
8552
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
8553
+ };
8554
+ };
8555
+ readonly description: "The metric configuration used to evaluate the safeguard condition.";
8556
+ };
8557
+ };
8558
+ readonly components: {
8559
+ readonly schemas: {
8560
+ readonly metricQuerySchema: {
8561
+ readonly $id: "#/components/schemas/metricQuerySchema";
8562
+ readonly type: "object";
8563
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
8564
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
8565
+ readonly additionalProperties: false;
8566
+ readonly properties: {
8567
+ readonly metricName: {
8568
+ readonly type: "string";
8569
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
8570
+ readonly example: "unleash_counter_feature_toggle_usage_total";
8571
+ };
8572
+ readonly timeRange: {
8573
+ readonly type: "string";
8574
+ readonly enum: readonly ["hour", "day", "week", "month"];
8575
+ readonly description: "The time range for the metric data.";
8576
+ readonly example: "day";
8577
+ };
8578
+ readonly aggregationMode: {
8579
+ readonly type: "string";
8580
+ readonly description: "The aggregation mode for the metric data.";
8581
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
8582
+ readonly example: "rps";
8583
+ };
8584
+ readonly labelSelectors: {
8585
+ readonly type: "object";
8586
+ readonly additionalProperties: {
8587
+ readonly type: "array";
8588
+ readonly items: {
8589
+ readonly type: "string";
8590
+ };
8591
+ };
8592
+ readonly description: "The selected labels and their values for filtering the metric data.";
8593
+ readonly example: {
8594
+ readonly environment: readonly ["development"];
8595
+ readonly project: readonly ["default"];
8596
+ };
8597
+ };
8598
+ readonly source: {
8599
+ readonly type: "string";
8600
+ readonly enum: readonly ["internal", "external"];
8601
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
8602
+ readonly example: "internal";
8603
+ };
8604
+ };
8605
+ readonly components: {};
8606
+ };
8607
+ readonly safeguardTriggerConditionSchema: {
8608
+ readonly $id: "#/components/schemas/safeguardTriggerConditionSchema";
8609
+ readonly type: "object";
8610
+ readonly required: readonly ["operator", "threshold"];
8611
+ readonly additionalProperties: false;
8612
+ readonly description: "The condition that triggers the safeguard.";
8613
+ readonly properties: {
8614
+ readonly operator: {
8615
+ readonly type: "string";
8616
+ readonly enum: readonly [">", "<"];
8617
+ readonly description: "The comparison operator for the threshold check.";
8618
+ readonly example: ">";
8619
+ };
8620
+ readonly threshold: {
8621
+ readonly type: "number";
8622
+ readonly description: "The threshold value to compare against.";
8623
+ readonly example: 100;
8624
+ };
8625
+ };
8626
+ readonly components: {};
8627
+ };
8628
+ };
8629
+ };
8630
+ };
8631
+ readonly metricQuerySchema: {
8632
+ readonly $id: "#/components/schemas/metricQuerySchema";
8633
+ readonly type: "object";
8634
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
8635
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
8636
+ readonly additionalProperties: false;
8637
+ readonly properties: {
8638
+ readonly metricName: {
8639
+ readonly type: "string";
8640
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
8641
+ readonly example: "unleash_counter_feature_toggle_usage_total";
8642
+ };
8643
+ readonly timeRange: {
8644
+ readonly type: "string";
8645
+ readonly enum: readonly ["hour", "day", "week", "month"];
8646
+ readonly description: "The time range for the metric data.";
8647
+ readonly example: "day";
8648
+ };
8649
+ readonly aggregationMode: {
8650
+ readonly type: "string";
8651
+ readonly description: "The aggregation mode for the metric data.";
8652
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
8653
+ readonly example: "rps";
8654
+ };
8655
+ readonly labelSelectors: {
8656
+ readonly type: "object";
8657
+ readonly additionalProperties: {
8205
8658
  readonly type: "array";
8206
8659
  readonly items: {
8207
8660
  readonly type: "string";
@@ -8213,6 +8666,12 @@ export declare const projectOverviewSchema: {
8213
8666
  readonly project: readonly ["default"];
8214
8667
  };
8215
8668
  };
8669
+ readonly source: {
8670
+ readonly type: "string";
8671
+ readonly enum: readonly ["internal", "external"];
8672
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
8673
+ readonly example: "internal";
8674
+ };
8216
8675
  };
8217
8676
  readonly components: {};
8218
8677
  };
@@ -8339,6 +8798,13 @@ export declare const projectOverviewSchema: {
8339
8798
  readonly $ref: "#/components/schemas/releasePlanSchema";
8340
8799
  };
8341
8800
  };
8801
+ readonly safeguards: {
8802
+ readonly type: "array";
8803
+ readonly description: "Safeguards for this feature environment";
8804
+ readonly items: {
8805
+ readonly $ref: "#/components/schemas/featureEnvironmentSafeguardSchema";
8806
+ };
8807
+ };
8342
8808
  readonly yes: {
8343
8809
  readonly type: "integer";
8344
8810
  readonly description: "How many times the feature evaluated to true (enabled)";
@@ -8797,7 +9263,7 @@ export declare const projectOverviewSchema: {
8797
9263
  readonly type: "array";
8798
9264
  readonly description: "An array of safeguards configured for this release plan.";
8799
9265
  readonly items: {
8800
- readonly $ref: "#/components/schemas/safeguardSchema";
9266
+ readonly $ref: "#/components/schemas/releasePlanSafeguardSchema";
8801
9267
  };
8802
9268
  };
8803
9269
  };
@@ -8882,7 +9348,7 @@ export declare const projectOverviewSchema: {
8882
9348
  readonly additionalProperties: false;
8883
9349
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
8884
9350
  readonly type: "object";
8885
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
9351
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
8886
9352
  readonly properties: {
8887
9353
  readonly id: {
8888
9354
  readonly type: "string";
@@ -9551,7 +10017,7 @@ export declare const projectOverviewSchema: {
9551
10017
  readonly additionalProperties: false;
9552
10018
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
9553
10019
  readonly type: "object";
9554
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
10020
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
9555
10021
  readonly properties: {
9556
10022
  readonly id: {
9557
10023
  readonly type: "string";
@@ -10212,8 +10678,8 @@ export declare const projectOverviewSchema: {
10212
10678
  };
10213
10679
  readonly components: {};
10214
10680
  };
10215
- readonly safeguardSchema: {
10216
- readonly $id: "#/components/schemas/safeguardSchema";
10681
+ readonly releasePlanSafeguardSchema: {
10682
+ readonly $id: "#/components/schemas/releasePlanSafeguardSchema";
10217
10683
  readonly type: "object";
10218
10684
  readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
10219
10685
  readonly description: "A safeguard configuration for a release plan.";
@@ -10282,6 +10748,12 @@ export declare const projectOverviewSchema: {
10282
10748
  readonly project: readonly ["default"];
10283
10749
  };
10284
10750
  };
10751
+ readonly source: {
10752
+ readonly type: "string";
10753
+ readonly enum: readonly ["internal", "external"];
10754
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
10755
+ readonly example: "internal";
10756
+ };
10285
10757
  readonly id: {
10286
10758
  readonly type: "string";
10287
10759
  readonly description: "The unique identifier for this impact metric";
@@ -10331,6 +10803,12 @@ export declare const projectOverviewSchema: {
10331
10803
  readonly project: readonly ["default"];
10332
10804
  };
10333
10805
  };
10806
+ readonly source: {
10807
+ readonly type: "string";
10808
+ readonly enum: readonly ["internal", "external"];
10809
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
10810
+ readonly example: "internal";
10811
+ };
10334
10812
  };
10335
10813
  readonly components: {};
10336
10814
  };
@@ -10396,6 +10874,12 @@ export declare const projectOverviewSchema: {
10396
10874
  readonly project: readonly ["default"];
10397
10875
  };
10398
10876
  };
10877
+ readonly source: {
10878
+ readonly type: "string";
10879
+ readonly enum: readonly ["internal", "external"];
10880
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
10881
+ readonly example: "internal";
10882
+ };
10399
10883
  };
10400
10884
  readonly components: {};
10401
10885
  };
@@ -10502,7 +10986,7 @@ export declare const projectOverviewSchema: {
10502
10986
  readonly additionalProperties: false;
10503
10987
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
10504
10988
  readonly type: "object";
10505
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
10989
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
10506
10990
  readonly properties: {
10507
10991
  readonly id: {
10508
10992
  readonly type: "string";
@@ -11171,7 +11655,7 @@ export declare const projectOverviewSchema: {
11171
11655
  readonly additionalProperties: false;
11172
11656
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
11173
11657
  readonly type: "object";
11174
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
11658
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
11175
11659
  readonly properties: {
11176
11660
  readonly id: {
11177
11661
  readonly type: "string";
@@ -11779,88 +12263,321 @@ export declare const projectOverviewSchema: {
11779
12263
  };
11780
12264
  readonly components: {};
11781
12265
  };
11782
- };
11783
- };
11784
- };
11785
- readonly overrideSchema: {
11786
- readonly $id: "#/components/schemas/overrideSchema";
11787
- readonly type: "object";
11788
- readonly additionalProperties: false;
11789
- readonly required: readonly ["contextName", "values"];
11790
- readonly description: "An override for deciding which variant should be assigned to a user based on the context name";
11791
- readonly properties: {
11792
- readonly contextName: {
11793
- readonly description: "The name of the context field used to determine overrides";
11794
- readonly type: "string";
11795
- readonly example: "userId";
11796
- };
11797
- readonly values: {
11798
- readonly description: "Which values that should be overriden";
11799
- readonly type: "array";
11800
- readonly items: {
11801
- readonly type: "string";
11802
- };
11803
- readonly example: readonly ["red", "blue"];
11804
- };
11805
- };
11806
- readonly components: {};
11807
- };
11808
- readonly parametersSchema: {
11809
- readonly $id: "#/components/schemas/parametersSchema";
11810
- readonly type: "object";
11811
- readonly description: "A list of parameters for a strategy";
11812
- readonly additionalProperties: {
11813
- readonly type: "string";
11814
- };
11815
- readonly components: {};
11816
- };
11817
- readonly featureStrategySchema: {
11818
- readonly $id: "#/components/schemas/featureStrategySchema";
11819
- readonly description: "A single activation strategy configuration schema for a feature";
11820
- readonly type: "object";
11821
- readonly additionalProperties: false;
11822
- readonly required: readonly ["name"];
11823
- readonly properties: {
11824
- readonly id: {
11825
- readonly type: "string";
11826
- readonly description: "A uuid for the feature strategy";
11827
- readonly example: "6b5157cb-343a-41e7-bfa3-7b4ec3044840";
11828
- };
11829
- readonly name: {
11830
- readonly type: "string";
11831
- readonly description: "The name or type of strategy";
11832
- readonly example: "flexibleRollout";
11833
- };
11834
- readonly title: {
11835
- readonly type: "string";
11836
- readonly description: "A descriptive title for the strategy";
11837
- readonly example: "Gradual Rollout 25-Prod";
11838
- readonly nullable: true;
11839
- };
11840
- readonly disabled: {
11841
- readonly type: "boolean";
11842
- readonly description: "A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs";
11843
- readonly example: false;
11844
- readonly nullable: true;
11845
- };
11846
- readonly featureName: {
11847
- readonly type: "string";
11848
- readonly description: "The name or feature the strategy is attached to";
11849
- readonly example: "myAwesomeFeature";
11850
- };
11851
- readonly sortOrder: {
11852
- readonly type: "number";
11853
- readonly description: "The order of the strategy in the list";
11854
- readonly example: 9999;
11855
- };
11856
- readonly segments: {
11857
- readonly type: "array";
11858
- readonly description: "A list of segment ids attached to the strategy";
11859
- readonly example: readonly [1, 2];
11860
- readonly items: {
11861
- readonly type: "number";
11862
- };
11863
- };
12266
+ readonly featureEnvironmentSafeguardSchema: {
12267
+ readonly $id: "#/components/schemas/featureEnvironmentSafeguardSchema";
12268
+ readonly type: "object";
12269
+ readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
12270
+ readonly description: "A safeguard configuration for a feature environment.";
12271
+ readonly additionalProperties: false;
12272
+ readonly properties: {
12273
+ readonly id: {
12274
+ readonly type: "string";
12275
+ readonly description: "The unique ULID identifier for this safeguard";
12276
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
12277
+ };
12278
+ readonly action: {
12279
+ readonly type: "object";
12280
+ readonly required: readonly ["type", "featureName", "environment", "project"];
12281
+ readonly additionalProperties: false;
12282
+ readonly description: "Disable a feature in an environment when triggered.";
12283
+ readonly properties: {
12284
+ readonly type: {
12285
+ readonly type: "string";
12286
+ readonly description: "The type of action to perform.";
12287
+ readonly example: "disableFeatureEnvironment";
12288
+ };
12289
+ readonly featureName: {
12290
+ readonly type: "string";
12291
+ readonly description: "The feature flag name this safeguard applies to.";
12292
+ };
12293
+ readonly environment: {
12294
+ readonly type: "string";
12295
+ readonly description: "The environment this safeguard applies to.";
12296
+ };
12297
+ readonly project: {
12298
+ readonly type: "string";
12299
+ readonly description: "The project this safeguard applies to.";
12300
+ };
12301
+ };
12302
+ };
12303
+ readonly triggerCondition: {
12304
+ readonly $ref: "#/components/schemas/safeguardTriggerConditionSchema";
12305
+ readonly description: "The condition that triggers the safeguard.";
12306
+ };
12307
+ readonly impactMetric: {
12308
+ readonly type: "object";
12309
+ readonly required: readonly ["id", "metricName", "timeRange", "aggregationMode", "labelSelectors"];
12310
+ readonly additionalProperties: false;
12311
+ readonly properties: {
12312
+ readonly metricName: {
12313
+ readonly type: "string";
12314
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
12315
+ readonly example: "unleash_counter_feature_toggle_usage_total";
12316
+ };
12317
+ readonly timeRange: {
12318
+ readonly type: "string";
12319
+ readonly enum: readonly ["hour", "day", "week", "month"];
12320
+ readonly description: "The time range for the metric data.";
12321
+ readonly example: "day";
12322
+ };
12323
+ readonly aggregationMode: {
12324
+ readonly type: "string";
12325
+ readonly description: "The aggregation mode for the metric data.";
12326
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
12327
+ readonly example: "rps";
12328
+ };
12329
+ readonly labelSelectors: {
12330
+ readonly type: "object";
12331
+ readonly additionalProperties: {
12332
+ readonly type: "array";
12333
+ readonly items: {
12334
+ readonly type: "string";
12335
+ };
12336
+ };
12337
+ readonly description: "The selected labels and their values for filtering the metric data.";
12338
+ readonly example: {
12339
+ readonly environment: readonly ["development"];
12340
+ readonly project: readonly ["default"];
12341
+ };
12342
+ };
12343
+ readonly source: {
12344
+ readonly type: "string";
12345
+ readonly enum: readonly ["internal", "external"];
12346
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
12347
+ readonly example: "internal";
12348
+ };
12349
+ readonly id: {
12350
+ readonly type: "string";
12351
+ readonly description: "The unique identifier for this impact metric";
12352
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
12353
+ };
12354
+ };
12355
+ readonly description: "The metric configuration used to evaluate the safeguard condition.";
12356
+ };
12357
+ };
12358
+ readonly components: {
12359
+ readonly schemas: {
12360
+ readonly metricQuerySchema: {
12361
+ readonly $id: "#/components/schemas/metricQuerySchema";
12362
+ readonly type: "object";
12363
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
12364
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
12365
+ readonly additionalProperties: false;
12366
+ readonly properties: {
12367
+ readonly metricName: {
12368
+ readonly type: "string";
12369
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
12370
+ readonly example: "unleash_counter_feature_toggle_usage_total";
12371
+ };
12372
+ readonly timeRange: {
12373
+ readonly type: "string";
12374
+ readonly enum: readonly ["hour", "day", "week", "month"];
12375
+ readonly description: "The time range for the metric data.";
12376
+ readonly example: "day";
12377
+ };
12378
+ readonly aggregationMode: {
12379
+ readonly type: "string";
12380
+ readonly description: "The aggregation mode for the metric data.";
12381
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
12382
+ readonly example: "rps";
12383
+ };
12384
+ readonly labelSelectors: {
12385
+ readonly type: "object";
12386
+ readonly additionalProperties: {
12387
+ readonly type: "array";
12388
+ readonly items: {
12389
+ readonly type: "string";
12390
+ };
12391
+ };
12392
+ readonly description: "The selected labels and their values for filtering the metric data.";
12393
+ readonly example: {
12394
+ readonly environment: readonly ["development"];
12395
+ readonly project: readonly ["default"];
12396
+ };
12397
+ };
12398
+ readonly source: {
12399
+ readonly type: "string";
12400
+ readonly enum: readonly ["internal", "external"];
12401
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
12402
+ readonly example: "internal";
12403
+ };
12404
+ };
12405
+ readonly components: {};
12406
+ };
12407
+ readonly safeguardTriggerConditionSchema: {
12408
+ readonly $id: "#/components/schemas/safeguardTriggerConditionSchema";
12409
+ readonly type: "object";
12410
+ readonly required: readonly ["operator", "threshold"];
12411
+ readonly additionalProperties: false;
12412
+ readonly description: "The condition that triggers the safeguard.";
12413
+ readonly properties: {
12414
+ readonly operator: {
12415
+ readonly type: "string";
12416
+ readonly enum: readonly [">", "<"];
12417
+ readonly description: "The comparison operator for the threshold check.";
12418
+ readonly example: ">";
12419
+ };
12420
+ readonly threshold: {
12421
+ readonly type: "number";
12422
+ readonly description: "The threshold value to compare against.";
12423
+ readonly example: 100;
12424
+ };
12425
+ };
12426
+ readonly components: {};
12427
+ };
12428
+ };
12429
+ };
12430
+ };
12431
+ readonly safeguardTriggerConditionSchema: {
12432
+ readonly $id: "#/components/schemas/safeguardTriggerConditionSchema";
12433
+ readonly type: "object";
12434
+ readonly required: readonly ["operator", "threshold"];
12435
+ readonly additionalProperties: false;
12436
+ readonly description: "The condition that triggers the safeguard.";
12437
+ readonly properties: {
12438
+ readonly operator: {
12439
+ readonly type: "string";
12440
+ readonly enum: readonly [">", "<"];
12441
+ readonly description: "The comparison operator for the threshold check.";
12442
+ readonly example: ">";
12443
+ };
12444
+ readonly threshold: {
12445
+ readonly type: "number";
12446
+ readonly description: "The threshold value to compare against.";
12447
+ readonly example: 100;
12448
+ };
12449
+ };
12450
+ readonly components: {};
12451
+ };
12452
+ readonly metricQuerySchema: {
12453
+ readonly $id: "#/components/schemas/metricQuerySchema";
12454
+ readonly type: "object";
12455
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
12456
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
12457
+ readonly additionalProperties: false;
12458
+ readonly properties: {
12459
+ readonly metricName: {
12460
+ readonly type: "string";
12461
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
12462
+ readonly example: "unleash_counter_feature_toggle_usage_total";
12463
+ };
12464
+ readonly timeRange: {
12465
+ readonly type: "string";
12466
+ readonly enum: readonly ["hour", "day", "week", "month"];
12467
+ readonly description: "The time range for the metric data.";
12468
+ readonly example: "day";
12469
+ };
12470
+ readonly aggregationMode: {
12471
+ readonly type: "string";
12472
+ readonly description: "The aggregation mode for the metric data.";
12473
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
12474
+ readonly example: "rps";
12475
+ };
12476
+ readonly labelSelectors: {
12477
+ readonly type: "object";
12478
+ readonly additionalProperties: {
12479
+ readonly type: "array";
12480
+ readonly items: {
12481
+ readonly type: "string";
12482
+ };
12483
+ };
12484
+ readonly description: "The selected labels and their values for filtering the metric data.";
12485
+ readonly example: {
12486
+ readonly environment: readonly ["development"];
12487
+ readonly project: readonly ["default"];
12488
+ };
12489
+ };
12490
+ readonly source: {
12491
+ readonly type: "string";
12492
+ readonly enum: readonly ["internal", "external"];
12493
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
12494
+ readonly example: "internal";
12495
+ };
12496
+ };
12497
+ readonly components: {};
12498
+ };
12499
+ };
12500
+ };
12501
+ };
12502
+ readonly overrideSchema: {
12503
+ readonly $id: "#/components/schemas/overrideSchema";
12504
+ readonly type: "object";
12505
+ readonly additionalProperties: false;
12506
+ readonly required: readonly ["contextName", "values"];
12507
+ readonly description: "An override for deciding which variant should be assigned to a user based on the context name";
12508
+ readonly properties: {
12509
+ readonly contextName: {
12510
+ readonly description: "The name of the context field used to determine overrides";
12511
+ readonly type: "string";
12512
+ readonly example: "userId";
12513
+ };
12514
+ readonly values: {
12515
+ readonly description: "Which values that should be overriden";
12516
+ readonly type: "array";
12517
+ readonly items: {
12518
+ readonly type: "string";
12519
+ };
12520
+ readonly example: readonly ["red", "blue"];
12521
+ };
12522
+ };
12523
+ readonly components: {};
12524
+ };
12525
+ readonly parametersSchema: {
12526
+ readonly $id: "#/components/schemas/parametersSchema";
12527
+ readonly type: "object";
12528
+ readonly description: "A list of parameters for a strategy";
12529
+ readonly additionalProperties: {
12530
+ readonly type: "string";
12531
+ };
12532
+ readonly components: {};
12533
+ };
12534
+ readonly featureStrategySchema: {
12535
+ readonly $id: "#/components/schemas/featureStrategySchema";
12536
+ readonly description: "A single activation strategy configuration schema for a feature";
12537
+ readonly type: "object";
12538
+ readonly additionalProperties: false;
12539
+ readonly required: readonly ["name"];
12540
+ readonly properties: {
12541
+ readonly id: {
12542
+ readonly type: "string";
12543
+ readonly description: "A uuid for the feature strategy";
12544
+ readonly example: "6b5157cb-343a-41e7-bfa3-7b4ec3044840";
12545
+ };
12546
+ readonly name: {
12547
+ readonly type: "string";
12548
+ readonly description: "The name or type of strategy";
12549
+ readonly example: "flexibleRollout";
12550
+ };
12551
+ readonly title: {
12552
+ readonly type: "string";
12553
+ readonly description: "A descriptive title for the strategy";
12554
+ readonly example: "Gradual Rollout 25-Prod";
12555
+ readonly nullable: true;
12556
+ };
12557
+ readonly disabled: {
12558
+ readonly type: "boolean";
12559
+ readonly description: "A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs";
12560
+ readonly example: false;
12561
+ readonly nullable: true;
12562
+ };
12563
+ readonly featureName: {
12564
+ readonly type: "string";
12565
+ readonly description: "The name or feature the strategy is attached to";
12566
+ readonly example: "myAwesomeFeature";
12567
+ };
12568
+ readonly sortOrder: {
12569
+ readonly type: "number";
12570
+ readonly description: "The order of the strategy in the list";
12571
+ readonly example: 9999;
12572
+ };
12573
+ readonly segments: {
12574
+ readonly type: "array";
12575
+ readonly description: "A list of segment ids attached to the strategy";
12576
+ readonly example: readonly [1, 2];
12577
+ readonly items: {
12578
+ readonly type: "number";
12579
+ };
12580
+ };
11864
12581
  readonly constraints: {
11865
12582
  readonly type: "array";
11866
12583
  readonly description: "A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints";
@@ -12204,7 +12921,7 @@ export declare const projectOverviewSchema: {
12204
12921
  readonly type: "array";
12205
12922
  readonly description: "An array of safeguards configured for this release plan.";
12206
12923
  readonly items: {
12207
- readonly $ref: "#/components/schemas/safeguardSchema";
12924
+ readonly $ref: "#/components/schemas/releasePlanSafeguardSchema";
12208
12925
  };
12209
12926
  };
12210
12927
  };
@@ -12289,7 +13006,7 @@ export declare const projectOverviewSchema: {
12289
13006
  readonly additionalProperties: false;
12290
13007
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
12291
13008
  readonly type: "object";
12292
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
13009
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
12293
13010
  readonly properties: {
12294
13011
  readonly id: {
12295
13012
  readonly type: "string";
@@ -12958,7 +13675,7 @@ export declare const projectOverviewSchema: {
12958
13675
  readonly additionalProperties: false;
12959
13676
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
12960
13677
  readonly type: "object";
12961
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
13678
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
12962
13679
  readonly properties: {
12963
13680
  readonly id: {
12964
13681
  readonly type: "string";
@@ -13619,8 +14336,8 @@ export declare const projectOverviewSchema: {
13619
14336
  };
13620
14337
  readonly components: {};
13621
14338
  };
13622
- readonly safeguardSchema: {
13623
- readonly $id: "#/components/schemas/safeguardSchema";
14339
+ readonly releasePlanSafeguardSchema: {
14340
+ readonly $id: "#/components/schemas/releasePlanSafeguardSchema";
13624
14341
  readonly type: "object";
13625
14342
  readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
13626
14343
  readonly description: "A safeguard configuration for a release plan.";
@@ -13689,6 +14406,12 @@ export declare const projectOverviewSchema: {
13689
14406
  readonly project: readonly ["default"];
13690
14407
  };
13691
14408
  };
14409
+ readonly source: {
14410
+ readonly type: "string";
14411
+ readonly enum: readonly ["internal", "external"];
14412
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
14413
+ readonly example: "internal";
14414
+ };
13692
14415
  readonly id: {
13693
14416
  readonly type: "string";
13694
14417
  readonly description: "The unique identifier for this impact metric";
@@ -13738,6 +14461,12 @@ export declare const projectOverviewSchema: {
13738
14461
  readonly project: readonly ["default"];
13739
14462
  };
13740
14463
  };
14464
+ readonly source: {
14465
+ readonly type: "string";
14466
+ readonly enum: readonly ["internal", "external"];
14467
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
14468
+ readonly example: "internal";
14469
+ };
13741
14470
  };
13742
14471
  readonly components: {};
13743
14472
  };
@@ -13803,6 +14532,12 @@ export declare const projectOverviewSchema: {
13803
14532
  readonly project: readonly ["default"];
13804
14533
  };
13805
14534
  };
14535
+ readonly source: {
14536
+ readonly type: "string";
14537
+ readonly enum: readonly ["internal", "external"];
14538
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
14539
+ readonly example: "internal";
14540
+ };
13806
14541
  };
13807
14542
  readonly components: {};
13808
14543
  };
@@ -13909,7 +14644,7 @@ export declare const projectOverviewSchema: {
13909
14644
  readonly additionalProperties: false;
13910
14645
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
13911
14646
  readonly type: "object";
13912
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
14647
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
13913
14648
  readonly properties: {
13914
14649
  readonly id: {
13915
14650
  readonly type: "string";
@@ -14578,7 +15313,7 @@ export declare const projectOverviewSchema: {
14578
15313
  readonly additionalProperties: false;
14579
15314
  readonly description: "Schema representing the creation of a release plan milestone strategy.";
14580
15315
  readonly type: "object";
14581
- readonly required: readonly ["id", "milestoneId", "sortOrder", "strategyName"];
15316
+ readonly required: readonly ["id", "milestoneId", "sortOrder", "name", "strategyName"];
14582
15317
  readonly properties: {
14583
15318
  readonly id: {
14584
15319
  readonly type: "string";
@@ -14835,126 +15570,517 @@ export declare const projectOverviewSchema: {
14835
15570
  };
14836
15571
  };
14837
15572
  };
14838
- };
14839
- readonly parametersSchema: {
14840
- readonly $id: "#/components/schemas/parametersSchema";
14841
- readonly type: "object";
14842
- readonly description: "A list of parameters for a strategy";
14843
- readonly additionalProperties: {
15573
+ };
15574
+ readonly parametersSchema: {
15575
+ readonly $id: "#/components/schemas/parametersSchema";
15576
+ readonly type: "object";
15577
+ readonly description: "A list of parameters for a strategy";
15578
+ readonly additionalProperties: {
15579
+ readonly type: "string";
15580
+ };
15581
+ readonly components: {};
15582
+ };
15583
+ readonly constraintSchema: {
15584
+ readonly type: "object";
15585
+ readonly required: readonly ["contextName", "operator"];
15586
+ readonly description: "A strategy constraint. For more information, refer to [the strategy constraint reference documentation](https://docs.getunleash.io/concepts/activation-strategies#constraints)";
15587
+ readonly properties: {
15588
+ readonly contextName: {
15589
+ readonly description: "The name of the context field that this constraint should apply to.";
15590
+ readonly example: "appName";
15591
+ readonly type: "string";
15592
+ };
15593
+ readonly operator: {
15594
+ readonly description: "The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).";
15595
+ readonly type: "string";
15596
+ readonly enum: readonly ["NOT_IN", "IN", "STR_ENDS_WITH", "STR_STARTS_WITH", "STR_CONTAINS", "NUM_EQ", "NUM_GT", "NUM_GTE", "NUM_LT", "NUM_LTE", "DATE_AFTER", "DATE_BEFORE", "SEMVER_EQ", "SEMVER_GT", "SEMVER_LT", "REGEX"];
15597
+ readonly example: "IN";
15598
+ };
15599
+ readonly caseInsensitive: {
15600
+ readonly description: "Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).";
15601
+ readonly type: "boolean";
15602
+ readonly default: false;
15603
+ };
15604
+ readonly inverted: {
15605
+ readonly description: "Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.";
15606
+ readonly type: "boolean";
15607
+ readonly default: false;
15608
+ };
15609
+ readonly values: {
15610
+ readonly type: "array";
15611
+ readonly description: "The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.";
15612
+ readonly items: {
15613
+ readonly type: "string";
15614
+ };
15615
+ readonly example: readonly ["my-app", "my-other-app"];
15616
+ };
15617
+ readonly value: {
15618
+ readonly description: "The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.";
15619
+ readonly type: "string";
15620
+ readonly example: "my-app";
15621
+ };
15622
+ };
15623
+ readonly components: {};
15624
+ readonly $id: "#/components/schemas/constraintSchema";
15625
+ readonly additionalProperties: false;
15626
+ };
15627
+ readonly createStrategyVariantSchema: {
15628
+ readonly $id: "#/components/schemas/createStrategyVariantSchema";
15629
+ readonly type: "object";
15630
+ readonly description: "This is an experimental property. It may change or be removed as we work on it. Please don't depend on it yet. A strategy variant allows you to attach any data to strategies instead of only returning `true`/`false`. Strategy variants take precedence over feature variants.";
15631
+ readonly required: readonly ["name", "weight", "weightType", "stickiness"];
15632
+ readonly properties: {
15633
+ readonly name: {
15634
+ readonly type: "string";
15635
+ readonly description: "The variant name. Must be unique for this feature flag";
15636
+ readonly example: "blue_group";
15637
+ };
15638
+ readonly weight: {
15639
+ readonly type: "integer";
15640
+ readonly description: "The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information";
15641
+ readonly minimum: 0;
15642
+ readonly maximum: 1000;
15643
+ };
15644
+ readonly weightType: {
15645
+ readonly description: "Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).";
15646
+ readonly type: "string";
15647
+ readonly example: "fix";
15648
+ readonly enum: readonly ["variable", "fix"];
15649
+ };
15650
+ readonly stickiness: {
15651
+ readonly type: "string";
15652
+ readonly description: "The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time";
15653
+ readonly example: "custom.context.field";
15654
+ };
15655
+ readonly payload: {
15656
+ readonly type: "object";
15657
+ readonly required: readonly ["type", "value"];
15658
+ readonly description: "Extra data configured for this variant";
15659
+ readonly properties: {
15660
+ readonly type: {
15661
+ readonly description: "The type of the value. Commonly used types are string, number, json and csv.";
15662
+ readonly type: "string";
15663
+ readonly enum: readonly ["json", "csv", "string", "number"];
15664
+ };
15665
+ readonly value: {
15666
+ readonly description: "The actual value of payload";
15667
+ readonly type: "string";
15668
+ };
15669
+ };
15670
+ readonly example: {
15671
+ readonly type: "json";
15672
+ readonly value: "{\"color\": \"red\"}";
15673
+ };
15674
+ };
15675
+ };
15676
+ readonly components: {};
15677
+ };
15678
+ };
15679
+ };
15680
+ };
15681
+ readonly transitionConditionSchema: {
15682
+ readonly $id: "#/components/schemas/transitionConditionSchema";
15683
+ readonly type: "object";
15684
+ readonly additionalProperties: false;
15685
+ readonly required: readonly ["intervalMinutes"];
15686
+ readonly description: "A transition condition for milestone progression";
15687
+ readonly properties: {
15688
+ readonly intervalMinutes: {
15689
+ readonly type: "integer";
15690
+ readonly minimum: 1;
15691
+ readonly description: "The interval in minutes before transitioning";
15692
+ readonly example: 30;
15693
+ };
15694
+ };
15695
+ readonly components: {};
15696
+ };
15697
+ readonly releasePlanSafeguardSchema: {
15698
+ readonly $id: "#/components/schemas/releasePlanSafeguardSchema";
15699
+ readonly type: "object";
15700
+ readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
15701
+ readonly description: "A safeguard configuration for a release plan.";
15702
+ readonly additionalProperties: false;
15703
+ readonly properties: {
15704
+ readonly id: {
15705
+ readonly type: "string";
15706
+ readonly description: "The unique ULID identifier for this safeguard";
15707
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
15708
+ };
15709
+ readonly action: {
15710
+ readonly type: "object";
15711
+ readonly required: readonly ["type", "id"];
15712
+ readonly additionalProperties: false;
15713
+ readonly description: "The action to take when the safeguard is triggered.";
15714
+ readonly properties: {
15715
+ readonly type: {
15716
+ readonly type: "string";
15717
+ readonly description: "The type of action to perform.";
15718
+ readonly example: "pauseReleasePlanProgressions";
15719
+ };
15720
+ readonly id: {
15721
+ readonly type: "string";
15722
+ readonly description: "The ID of the release plan this safeguard applies to.";
15723
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW2";
15724
+ };
15725
+ };
15726
+ };
15727
+ readonly triggerCondition: {
15728
+ readonly $ref: "#/components/schemas/safeguardTriggerConditionSchema";
15729
+ readonly description: "The condition that triggers the safeguard.";
15730
+ };
15731
+ readonly impactMetric: {
15732
+ readonly type: "object";
15733
+ readonly required: readonly ["id", "metricName", "timeRange", "aggregationMode", "labelSelectors"];
15734
+ readonly additionalProperties: false;
15735
+ readonly properties: {
15736
+ readonly metricName: {
15737
+ readonly type: "string";
15738
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
15739
+ readonly example: "unleash_counter_feature_toggle_usage_total";
15740
+ };
15741
+ readonly timeRange: {
15742
+ readonly type: "string";
15743
+ readonly enum: readonly ["hour", "day", "week", "month"];
15744
+ readonly description: "The time range for the metric data.";
15745
+ readonly example: "day";
15746
+ };
15747
+ readonly aggregationMode: {
15748
+ readonly type: "string";
15749
+ readonly description: "The aggregation mode for the metric data.";
15750
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
15751
+ readonly example: "rps";
15752
+ };
15753
+ readonly labelSelectors: {
15754
+ readonly type: "object";
15755
+ readonly additionalProperties: {
15756
+ readonly type: "array";
15757
+ readonly items: {
15758
+ readonly type: "string";
15759
+ };
15760
+ };
15761
+ readonly description: "The selected labels and their values for filtering the metric data.";
15762
+ readonly example: {
15763
+ readonly environment: readonly ["development"];
15764
+ readonly project: readonly ["default"];
15765
+ };
15766
+ };
15767
+ readonly source: {
14844
15768
  readonly type: "string";
15769
+ readonly enum: readonly ["internal", "external"];
15770
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
15771
+ readonly example: "internal";
15772
+ };
15773
+ readonly id: {
15774
+ readonly type: "string";
15775
+ readonly description: "The unique identifier for this impact metric";
15776
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
14845
15777
  };
14846
- readonly components: {};
14847
15778
  };
14848
- readonly constraintSchema: {
15779
+ readonly description: "The metric configuration used to evaluate the safeguard condition.";
15780
+ };
15781
+ };
15782
+ readonly components: {
15783
+ readonly schemas: {
15784
+ readonly metricQuerySchema: {
15785
+ readonly $id: "#/components/schemas/metricQuerySchema";
14849
15786
  readonly type: "object";
14850
- readonly required: readonly ["contextName", "operator"];
14851
- readonly description: "A strategy constraint. For more information, refer to [the strategy constraint reference documentation](https://docs.getunleash.io/concepts/activation-strategies#constraints)";
15787
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
15788
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
15789
+ readonly additionalProperties: false;
14852
15790
  readonly properties: {
14853
- readonly contextName: {
14854
- readonly description: "The name of the context field that this constraint should apply to.";
14855
- readonly example: "appName";
15791
+ readonly metricName: {
14856
15792
  readonly type: "string";
15793
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
15794
+ readonly example: "unleash_counter_feature_toggle_usage_total";
14857
15795
  };
14858
- readonly operator: {
14859
- readonly description: "The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).";
15796
+ readonly timeRange: {
14860
15797
  readonly type: "string";
14861
- readonly enum: readonly ["NOT_IN", "IN", "STR_ENDS_WITH", "STR_STARTS_WITH", "STR_CONTAINS", "NUM_EQ", "NUM_GT", "NUM_GTE", "NUM_LT", "NUM_LTE", "DATE_AFTER", "DATE_BEFORE", "SEMVER_EQ", "SEMVER_GT", "SEMVER_LT", "REGEX"];
14862
- readonly example: "IN";
15798
+ readonly enum: readonly ["hour", "day", "week", "month"];
15799
+ readonly description: "The time range for the metric data.";
15800
+ readonly example: "day";
14863
15801
  };
14864
- readonly caseInsensitive: {
14865
- readonly description: "Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).";
14866
- readonly type: "boolean";
14867
- readonly default: false;
15802
+ readonly aggregationMode: {
15803
+ readonly type: "string";
15804
+ readonly description: "The aggregation mode for the metric data.";
15805
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
15806
+ readonly example: "rps";
14868
15807
  };
14869
- readonly inverted: {
14870
- readonly description: "Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.";
14871
- readonly type: "boolean";
14872
- readonly default: false;
15808
+ readonly labelSelectors: {
15809
+ readonly type: "object";
15810
+ readonly additionalProperties: {
15811
+ readonly type: "array";
15812
+ readonly items: {
15813
+ readonly type: "string";
15814
+ };
15815
+ };
15816
+ readonly description: "The selected labels and their values for filtering the metric data.";
15817
+ readonly example: {
15818
+ readonly environment: readonly ["development"];
15819
+ readonly project: readonly ["default"];
15820
+ };
14873
15821
  };
14874
- readonly values: {
15822
+ readonly source: {
15823
+ readonly type: "string";
15824
+ readonly enum: readonly ["internal", "external"];
15825
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
15826
+ readonly example: "internal";
15827
+ };
15828
+ };
15829
+ readonly components: {};
15830
+ };
15831
+ readonly safeguardTriggerConditionSchema: {
15832
+ readonly $id: "#/components/schemas/safeguardTriggerConditionSchema";
15833
+ readonly type: "object";
15834
+ readonly required: readonly ["operator", "threshold"];
15835
+ readonly additionalProperties: false;
15836
+ readonly description: "The condition that triggers the safeguard.";
15837
+ readonly properties: {
15838
+ readonly operator: {
15839
+ readonly type: "string";
15840
+ readonly enum: readonly [">", "<"];
15841
+ readonly description: "The comparison operator for the threshold check.";
15842
+ readonly example: ">";
15843
+ };
15844
+ readonly threshold: {
15845
+ readonly type: "number";
15846
+ readonly description: "The threshold value to compare against.";
15847
+ readonly example: 100;
15848
+ };
15849
+ };
15850
+ readonly components: {};
15851
+ };
15852
+ };
15853
+ };
15854
+ };
15855
+ readonly featureEnvironmentSafeguardSchema: {
15856
+ readonly $id: "#/components/schemas/featureEnvironmentSafeguardSchema";
15857
+ readonly type: "object";
15858
+ readonly required: readonly ["id", "action", "triggerCondition", "impactMetric"];
15859
+ readonly description: "A safeguard configuration for a feature environment.";
15860
+ readonly additionalProperties: false;
15861
+ readonly properties: {
15862
+ readonly id: {
15863
+ readonly type: "string";
15864
+ readonly description: "The unique ULID identifier for this safeguard";
15865
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
15866
+ };
15867
+ readonly action: {
15868
+ readonly type: "object";
15869
+ readonly required: readonly ["type", "featureName", "environment", "project"];
15870
+ readonly additionalProperties: false;
15871
+ readonly description: "Disable a feature in an environment when triggered.";
15872
+ readonly properties: {
15873
+ readonly type: {
15874
+ readonly type: "string";
15875
+ readonly description: "The type of action to perform.";
15876
+ readonly example: "disableFeatureEnvironment";
15877
+ };
15878
+ readonly featureName: {
15879
+ readonly type: "string";
15880
+ readonly description: "The feature flag name this safeguard applies to.";
15881
+ };
15882
+ readonly environment: {
15883
+ readonly type: "string";
15884
+ readonly description: "The environment this safeguard applies to.";
15885
+ };
15886
+ readonly project: {
15887
+ readonly type: "string";
15888
+ readonly description: "The project this safeguard applies to.";
15889
+ };
15890
+ };
15891
+ };
15892
+ readonly triggerCondition: {
15893
+ readonly $ref: "#/components/schemas/safeguardTriggerConditionSchema";
15894
+ readonly description: "The condition that triggers the safeguard.";
15895
+ };
15896
+ readonly impactMetric: {
15897
+ readonly type: "object";
15898
+ readonly required: readonly ["id", "metricName", "timeRange", "aggregationMode", "labelSelectors"];
15899
+ readonly additionalProperties: false;
15900
+ readonly properties: {
15901
+ readonly metricName: {
15902
+ readonly type: "string";
15903
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
15904
+ readonly example: "unleash_counter_feature_toggle_usage_total";
15905
+ };
15906
+ readonly timeRange: {
15907
+ readonly type: "string";
15908
+ readonly enum: readonly ["hour", "day", "week", "month"];
15909
+ readonly description: "The time range for the metric data.";
15910
+ readonly example: "day";
15911
+ };
15912
+ readonly aggregationMode: {
15913
+ readonly type: "string";
15914
+ readonly description: "The aggregation mode for the metric data.";
15915
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
15916
+ readonly example: "rps";
15917
+ };
15918
+ readonly labelSelectors: {
15919
+ readonly type: "object";
15920
+ readonly additionalProperties: {
14875
15921
  readonly type: "array";
14876
- readonly description: "The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.";
14877
15922
  readonly items: {
14878
15923
  readonly type: "string";
14879
15924
  };
14880
- readonly example: readonly ["my-app", "my-other-app"];
14881
15925
  };
14882
- readonly value: {
14883
- readonly description: "The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.";
14884
- readonly type: "string";
14885
- readonly example: "my-app";
15926
+ readonly description: "The selected labels and their values for filtering the metric data.";
15927
+ readonly example: {
15928
+ readonly environment: readonly ["development"];
15929
+ readonly project: readonly ["default"];
14886
15930
  };
14887
15931
  };
14888
- readonly components: {};
14889
- readonly $id: "#/components/schemas/constraintSchema";
14890
- readonly additionalProperties: false;
15932
+ readonly source: {
15933
+ readonly type: "string";
15934
+ readonly enum: readonly ["internal", "external"];
15935
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
15936
+ readonly example: "internal";
15937
+ };
15938
+ readonly id: {
15939
+ readonly type: "string";
15940
+ readonly description: "The unique identifier for this impact metric";
15941
+ readonly example: "01JB9GGTGQYEQ9D40R17T3YVW1";
15942
+ };
14891
15943
  };
14892
- readonly createStrategyVariantSchema: {
14893
- readonly $id: "#/components/schemas/createStrategyVariantSchema";
15944
+ readonly description: "The metric configuration used to evaluate the safeguard condition.";
15945
+ };
15946
+ };
15947
+ readonly components: {
15948
+ readonly schemas: {
15949
+ readonly metricQuerySchema: {
15950
+ readonly $id: "#/components/schemas/metricQuerySchema";
14894
15951
  readonly type: "object";
14895
- readonly description: "This is an experimental property. It may change or be removed as we work on it. Please don't depend on it yet. A strategy variant allows you to attach any data to strategies instead of only returning `true`/`false`. Strategy variants take precedence over feature variants.";
14896
- readonly required: readonly ["name", "weight", "weightType", "stickiness"];
15952
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
15953
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
15954
+ readonly additionalProperties: false;
14897
15955
  readonly properties: {
14898
- readonly name: {
15956
+ readonly metricName: {
14899
15957
  readonly type: "string";
14900
- readonly description: "The variant name. Must be unique for this feature flag";
14901
- readonly example: "blue_group";
14902
- };
14903
- readonly weight: {
14904
- readonly type: "integer";
14905
- readonly description: "The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information";
14906
- readonly minimum: 0;
14907
- readonly maximum: 1000;
15958
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
15959
+ readonly example: "unleash_counter_feature_toggle_usage_total";
14908
15960
  };
14909
- readonly weightType: {
14910
- readonly description: "Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).";
15961
+ readonly timeRange: {
14911
15962
  readonly type: "string";
14912
- readonly example: "fix";
14913
- readonly enum: readonly ["variable", "fix"];
15963
+ readonly enum: readonly ["hour", "day", "week", "month"];
15964
+ readonly description: "The time range for the metric data.";
15965
+ readonly example: "day";
14914
15966
  };
14915
- readonly stickiness: {
15967
+ readonly aggregationMode: {
14916
15968
  readonly type: "string";
14917
- readonly description: "The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time";
14918
- readonly example: "custom.context.field";
15969
+ readonly description: "The aggregation mode for the metric data.";
15970
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
15971
+ readonly example: "rps";
14919
15972
  };
14920
- readonly payload: {
15973
+ readonly labelSelectors: {
14921
15974
  readonly type: "object";
14922
- readonly required: readonly ["type", "value"];
14923
- readonly description: "Extra data configured for this variant";
14924
- readonly properties: {
14925
- readonly type: {
14926
- readonly description: "The type of the value. Commonly used types are string, number, json and csv.";
14927
- readonly type: "string";
14928
- readonly enum: readonly ["json", "csv", "string", "number"];
14929
- };
14930
- readonly value: {
14931
- readonly description: "The actual value of payload";
15975
+ readonly additionalProperties: {
15976
+ readonly type: "array";
15977
+ readonly items: {
14932
15978
  readonly type: "string";
14933
15979
  };
14934
15980
  };
15981
+ readonly description: "The selected labels and their values for filtering the metric data.";
14935
15982
  readonly example: {
14936
- readonly type: "json";
14937
- readonly value: "{\"color\": \"red\"}";
15983
+ readonly environment: readonly ["development"];
15984
+ readonly project: readonly ["default"];
14938
15985
  };
14939
15986
  };
15987
+ readonly source: {
15988
+ readonly type: "string";
15989
+ readonly enum: readonly ["internal", "external"];
15990
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
15991
+ readonly example: "internal";
15992
+ };
15993
+ };
15994
+ readonly components: {};
15995
+ };
15996
+ readonly safeguardTriggerConditionSchema: {
15997
+ readonly $id: "#/components/schemas/safeguardTriggerConditionSchema";
15998
+ readonly type: "object";
15999
+ readonly required: readonly ["operator", "threshold"];
16000
+ readonly additionalProperties: false;
16001
+ readonly description: "The condition that triggers the safeguard.";
16002
+ readonly properties: {
16003
+ readonly operator: {
16004
+ readonly type: "string";
16005
+ readonly enum: readonly [">", "<"];
16006
+ readonly description: "The comparison operator for the threshold check.";
16007
+ readonly example: ">";
16008
+ };
16009
+ readonly threshold: {
16010
+ readonly type: "number";
16011
+ readonly description: "The threshold value to compare against.";
16012
+ readonly example: 100;
16013
+ };
14940
16014
  };
14941
16015
  readonly components: {};
14942
16016
  };
14943
16017
  };
14944
16018
  };
14945
16019
  };
14946
- readonly transitionConditionSchema: {
14947
- readonly $id: "#/components/schemas/transitionConditionSchema";
16020
+ readonly metricQuerySchema: {
16021
+ readonly $id: "#/components/schemas/metricQuerySchema";
14948
16022
  readonly type: "object";
16023
+ readonly required: readonly ["metricName", "timeRange", "aggregationMode", "labelSelectors"];
16024
+ readonly description: "Common metric query configuration for selecting and filtering metric data.";
14949
16025
  readonly additionalProperties: false;
14950
- readonly required: readonly ["intervalMinutes"];
14951
- readonly description: "A transition condition for milestone progression";
14952
16026
  readonly properties: {
14953
- readonly intervalMinutes: {
14954
- readonly type: "integer";
14955
- readonly minimum: 1;
14956
- readonly description: "The interval in minutes before transitioning";
14957
- readonly example: 30;
16027
+ readonly metricName: {
16028
+ readonly type: "string";
16029
+ readonly description: "The Prometheus metric series to query. It includes both unleash prefix and metric type and display name";
16030
+ readonly example: "unleash_counter_feature_toggle_usage_total";
16031
+ };
16032
+ readonly timeRange: {
16033
+ readonly type: "string";
16034
+ readonly enum: readonly ["hour", "day", "week", "month"];
16035
+ readonly description: "The time range for the metric data.";
16036
+ readonly example: "day";
16037
+ };
16038
+ readonly aggregationMode: {
16039
+ readonly type: "string";
16040
+ readonly description: "The aggregation mode for the metric data.";
16041
+ readonly enum: readonly ["rps", "count", "avg", "sum", "p95", "p99", "p50"];
16042
+ readonly example: "rps";
16043
+ };
16044
+ readonly labelSelectors: {
16045
+ readonly type: "object";
16046
+ readonly additionalProperties: {
16047
+ readonly type: "array";
16048
+ readonly items: {
16049
+ readonly type: "string";
16050
+ };
16051
+ };
16052
+ readonly description: "The selected labels and their values for filtering the metric data.";
16053
+ readonly example: {
16054
+ readonly environment: readonly ["development"];
16055
+ readonly project: readonly ["default"];
16056
+ };
16057
+ };
16058
+ readonly source: {
16059
+ readonly type: "string";
16060
+ readonly enum: readonly ["internal", "external"];
16061
+ readonly description: "The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.";
16062
+ readonly example: "internal";
16063
+ };
16064
+ };
16065
+ readonly components: {};
16066
+ };
16067
+ readonly safeguardTriggerConditionSchema: {
16068
+ readonly $id: "#/components/schemas/safeguardTriggerConditionSchema";
16069
+ readonly type: "object";
16070
+ readonly required: readonly ["operator", "threshold"];
16071
+ readonly additionalProperties: false;
16072
+ readonly description: "The condition that triggers the safeguard.";
16073
+ readonly properties: {
16074
+ readonly operator: {
16075
+ readonly type: "string";
16076
+ readonly enum: readonly [">", "<"];
16077
+ readonly description: "The comparison operator for the threshold check.";
16078
+ readonly example: ">";
16079
+ };
16080
+ readonly threshold: {
16081
+ readonly type: "number";
16082
+ readonly description: "The threshold value to compare against.";
16083
+ readonly example: 100;
14958
16084
  };
14959
16085
  };
14960
16086
  readonly components: {};