> This is the Markdown version of the page. For the complete Lattice Developers documentation index, fetch https://developer.anduril.com/llms.txt. Append .md to any page URL for its clean Markdown. # Fixes to the Protobuf Specification We generally avoid breaking changes to the Lattice APIs and don't make them lightly. We recently discovered a discrepancy in the Protobuf type definitions resulting in some fields not being processed correctly and are fixing this. This will require clients using the `StreamTasksRequests.StatusFilter` field within the `TaskManager` API to make a code change when they decide to upgrade to the latest protocol specification. We recommend upgrading to the latest protocol specification to pull in the other fixes. The REST API is unchanged. ### Use `StreamTasksRequest.StatusFilter` to filter by status The `status_filter` field on `StreamTasksRequest` now takes a `StreamTasksRequest.StatusFilter` instead of a `QueryTasksRequest.StatusFilter`. The fields and enum values are the same, so you only need to change the type names: * `QueryTasksRequest.StatusFilter` is now `StreamTasksRequest.StatusFilter`. * `QueryTasksRequest.FilterType` is now `StreamTasksRequest.FilterType`. **`Go`** ```go title="Go" // Before request := &taskmanagerv1.StreamTasksRequest{ StatusFilter: &taskmanagerv1.QueryTasksRequest_StatusFilter{ Status: []taskmanagerv1.Status{taskmanagerv1.Status_STATUS_EXECUTING}, FilterType: taskmanagerv1.QueryTasksRequest_FILTER_TYPE_INCLUSIVE, }, } // After request := &taskmanagerv1.StreamTasksRequest{ StatusFilter: &taskmanagerv1.StreamTasksRequest_StatusFilter{ Status: []taskmanagerv1.Status{taskmanagerv1.Status_STATUS_EXECUTING}, FilterType: taskmanagerv1.StreamTasksRequest_FILTER_TYPE_INCLUSIVE, }, } ``` **`Rust`** ```rust title="Rust" // Before use anduril_lattice_sdk_community_neoeinstein_prost::anduril::taskmanager::v1::{ query_tasks_request, Status, StreamTasksRequest, }; let request = StreamTasksRequest { status_filter: Some(query_tasks_request::StatusFilter { status: vec![Status::Executing as i32], filter_type: query_tasks_request::FilterType::Inclusive as i32, }), ..Default::default() }; // After use anduril_lattice_sdk_community_neoeinstein_prost::anduril::taskmanager::v1::{ stream_tasks_request, Status, StreamTasksRequest, }; let request = StreamTasksRequest { status_filter: Some(stream_tasks_request::StatusFilter { status: vec![Status::Executing as i32], filter_type: stream_tasks_request::FilterType::Inclusive as i32, }), ..Default::default() }; ``` `QueryTasks` is not affected. Keep using `QueryTasksRequest.StatusFilter` when you query tasks. ### Fixes The following fixes need no source code changes. Upgrade your generated SDK to pick them up: * `CancelTaskRequest.delivery_constraints` is now applied when you cancel a task. * `Munition.quantity_units` is now published and read correctly. * `StreamTasksRequest.heartbeat_interval_ms` is now applied when you send requests as Protobuf JSON.