From 258684d8d351c8475f0ed67e5c32ff2fd86865f6 Mon Sep 17 00:00:00 2001 From: Zohar Zilberman Date: Fri, 29 May 2026 15:27:04 +0300 Subject: [PATCH] Bump platz-chart-ext to 0.7.1 chart-ext 0.7.x dropped its aggregate `openapi::OpenApi` struct during the utoipa 5 upgrade, so the old `openapi.merge(platz_chart_ext::openapi ::OpenApi::openapi())` no longer compiles. utoipa 5 auto-collects the chart-ext schemas reachable from endpoint response types; the four that aren't reachable (ChartExt, ChartMetadata, UiSchemaInputSingleType, UiSchemaInputType) are now registered explicitly on ApiV2 so the generated OpenAPI surface is unchanged from v0.7.0-beta.2. Co-Authored-By: Claude Opus 4.8 --- Cargo.lock | 247 +++++---------------------------------- Cargo.toml | 2 +- api/src/routes/v2/mod.rs | 14 ++- 3 files changed, 40 insertions(+), 223 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 62c99f8..ff09903 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1943,17 +1943,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -2272,7 +2261,6 @@ dependencies = [ "tokio", "tokio-rustls 0.26.4", "tower-service", - "webpki-roots", ] [[package]] @@ -2613,17 +2601,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "jsonlogic-rs" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e3d09da1a850cc4379c62f7127246688b5275ad7690aa9ceef746815297ea" -dependencies = [ - "phf 0.8.0", - "serde_json", - "thiserror 1.0.69", -] - [[package]] name = "jsonpath-rust" version = "1.0.4" @@ -2664,6 +2641,17 @@ dependencies = [ "zeroize", ] +[[package]] +name = "juspay_jsonlogic" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eeb5ea313a880c663adfd8dd6e018778c987cad06091621952a3ef640c58983" +dependencies = [ + "regex", + "serde_json", + "unicode-normalization", +] + [[package]] name = "k8s-openapi" version = "0.27.1" @@ -3017,7 +3005,7 @@ dependencies = [ "getrandom 0.4.2", "hmac-sha256", "mime", - "reqwest 0.13.3", + "reqwest", "serde", "serde_json", "thiserror 2.0.18", @@ -3134,67 +3122,23 @@ dependencies = [ "sha2 0.10.9", ] -[[package]] -name = "phf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" -dependencies = [ - "phf_macros", - "phf_shared 0.8.0", - "proc-macro-hack", -] - [[package]] name = "phf" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ - "phf_shared 0.13.1", + "phf_shared", "serde", ] -[[package]] -name = "phf_generator" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" -dependencies = [ - "phf_shared 0.8.0", - "rand 0.7.3", -] - -[[package]] -name = "phf_macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" -dependencies = [ - "phf_generator", - "phf_shared 0.8.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_shared" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher 0.3.11", -] - [[package]] name = "phf_shared" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" dependencies = [ - "siphasher 1.0.3", + "siphasher", ] [[package]] @@ -3259,7 +3203,7 @@ dependencies = [ "rustls 0.23.40", "serde", "serde_json", - "strum 0.28.0", + "strum", "thiserror 2.0.18", "tokio", "tokio-stream", @@ -3312,7 +3256,7 @@ dependencies = [ "platz-db", "platz-otel", "regex", - "reqwest 0.13.3", + "reqwest", "rustls 0.23.40", "serde", "serde_json", @@ -3325,18 +3269,18 @@ dependencies = [ [[package]] name = "platz-chart-ext" -version = "0.6.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93fa5b9f07373270749be037f9bd1b8c14eef478457fd786016f422e74b3101" +checksum = "bc63f6dace3904fa479fbffd7946ff0d93271fb0b15b0f8458ffa20edbfce34b" dependencies = [ "anyhow", - "jsonlogic-rs", - "reqwest 0.12.28", + "juspay_jsonlogic", + "reqwest", "rust_decimal", "serde", "serde_json", "serde_yaml", - "strum 0.27.2", + "strum", "thiserror 2.0.18", "tokio", "url", @@ -3367,7 +3311,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "strum 0.28.0", + "strum", "thiserror 2.0.18", "tokio", "tokio-postgres", @@ -3447,7 +3391,7 @@ dependencies = [ "platz-chart-ext", "platz-db", "platz-otel", - "reqwest 0.13.3", + "reqwest", "rustls 0.23.40", "tokio", "tracing", @@ -3555,12 +3499,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" version = "1.0.106" @@ -3682,27 +3620,13 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", -] - [[package]] name = "rand" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha 0.9.0", + "rand_chacha", "rand_core 0.9.5", ] @@ -3717,16 +3641,6 @@ dependencies = [ "rand_core 0.10.1", ] -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - [[package]] name = "rand_chacha" version = "0.9.0" @@ -3737,15 +3651,6 @@ dependencies = [ "rand_core 0.9.5", ] -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - [[package]] name = "rand_core" version = "0.6.4" @@ -3770,24 +3675,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "redox_syscall" version = "0.5.18" @@ -3852,44 +3739,6 @@ version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" -[[package]] -name = "reqwest" -version = "0.12.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" -dependencies = [ - "base64", - "bytes", - "futures-core", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.9.0", - "hyper-rustls 0.27.9", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls 0.23.40", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls 0.26.4", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", -] - [[package]] name = "reqwest" version = "0.13.3" @@ -3990,7 +3839,6 @@ dependencies = [ "aws-lc-rs", "log", "once_cell", - "ring", "rustls-pki-types", "rustls-webpki 0.103.13", "subtle", @@ -4430,12 +4278,6 @@ dependencies = [ "time", ] -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - [[package]] name = "siphasher" version = "1.0.3" @@ -4497,34 +4339,13 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros 0.27.2", -] - [[package]] name = "strum" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ - "strum_macros 0.28.0", -] - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.117", + "strum_macros", ] [[package]] @@ -4750,7 +4571,7 @@ dependencies = [ "log", "parking_lot", "percent-encoding", - "phf 0.13.1", + "phf", "pin-project-lite", "postgres-protocol", "postgres-types", @@ -5137,6 +4958,7 @@ dependencies = [ "quote", "regex", "syn 2.0.117", + "url", "uuid", ] @@ -5219,12 +5041,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -5386,15 +5202,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "webpki-roots" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "whoami" version = "2.1.2" diff --git a/Cargo.toml b/Cargo.toml index a8b04f4..64882bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ debug = true [workspace.dependencies.platz-chart-ext] features = ["utoipa"] -version = "0.6.2" +version = "0.7.1" [workspace.dependencies.prometheus] version = "0.14.0" diff --git a/api/src/routes/v2/mod.rs b/api/src/routes/v2/mod.rs index f98c253..388aba9 100644 --- a/api/src/routes/v2/mod.rs +++ b/api/src/routes/v2/mod.rs @@ -102,14 +102,24 @@ pub fn config(cfg: &mut web::ServiceConfig) { } #[derive(OpenApi)] -#[openapi(components(schemas(DbTable, DbTableOrDeploymentResource)))] +#[openapi(components(schemas( + DbTable, + DbTableOrDeploymentResource, + // chart-ext schemas that aren't reachable from any endpoint response + // type, so utoipa won't auto-collect them. chart-ext 0.7.x dropped its + // aggregate `openapi::OpenApi` (utoipa 5 upgrade), so register them here + // to keep them in the generated spec (and thus in the JS SDK). + platz_chart_ext::ChartExt, + platz_chart_ext::ChartMetadata, + platz_chart_ext::UiSchemaInputSingleType, + platz_chart_ext::UiSchemaInputType, +)))] pub(super) struct ApiV2; impl ApiV2 { pub fn openapi() -> utoipa::openapi::OpenApi { let mut openapi = ::openapi(); openapi.merge(auth::OpenApi::openapi()); - openapi.merge(platz_chart_ext::openapi::OpenApi::openapi()); openapi.merge(deployment_kinds::OpenApi::openapi()); openapi.merge(deployment_permissions::OpenApi::openapi()); openapi.merge(deployment_resource_types::OpenApi::openapi());