Commit Diff


commit - 68d918221826c5615baf78e1b2acb3579bae7121
commit + d944684a06594ea8d990811812d3c032ffc8d05c
blob - 450307cba41d678fd5dc8c231a18f64e1d9d26b3
blob + 33460cae6229af937a227be083fa490c839e56a3
--- shortcut_sdk.rs
+++ shortcut_sdk.rs
@@ -438,7 +438,15 @@ json_struct! {
         pub mention_ids: Vec<String>,
         pub member_mention_ids: Vec<String>,
         pub group_mention_ids: Vec<String>,
-        pub associated_groups: Vec<EpicAssociatedGroup>,
+        // Shortcut serializes the empty case as `null`, not `[]`.  Modeled
+        // as Option<Vec<_>> so:
+        //   - the decoder accepts null without allocating an empty Vec,
+        //   - the schema honestly distinguishes "absent" from "explicitly
+        //     empty",
+        //   - downstream code uses `.as_deref().unwrap_or(&[])` or matches
+        //     None for the no-association case.
+        // EpicSlim and Iteration{,Slim} follow the same convention.
+        pub associated_groups: Option<Vec<EpicAssociatedGroup>>,
         pub external_id: Option<String>,
         pub position: i64,
         pub stories_without_projects: i64,
@@ -486,7 +494,7 @@ json_struct! {
         pub mention_ids: Vec<String>,
         pub member_mention_ids: Vec<String>,
         pub group_mention_ids: Vec<String>,
-        pub associated_groups: Vec<EpicAssociatedGroup>,
+        pub associated_groups: Option<Vec<EpicAssociatedGroup>>,
         pub external_id: Option<String>,
         pub position: i64,
         pub stories_without_projects: i64,
@@ -1785,7 +1793,7 @@ json_struct! {
         pub mention_ids: Vec<String>,
         pub member_mention_ids: Vec<String>,
         pub group_mention_ids: Vec<String>,
-        pub associated_groups: Vec<IterationAssociatedGroup>,
+        pub associated_groups: Option<Vec<IterationAssociatedGroup>>,
         pub stats: IterationStats,
         pub created_at: String,
         pub updated_at: String,
@@ -1809,7 +1817,7 @@ json_struct! {
         pub mention_ids: Vec<String>,
         pub member_mention_ids: Vec<String>,
         pub group_mention_ids: Vec<String>,
-        pub associated_groups: Vec<IterationAssociatedGroup>,
+        pub associated_groups: Option<Vec<IterationAssociatedGroup>>,
         pub stats: IterationStats,
         pub created_at: String,
         pub updated_at: String,