# Update Saved Search

`Update_Saved_Search` updates an existing GovTribe saved search and returns the updated saved-search resource as JSON text.

## Input Contract

`Update_Saved_Search` uses model binding plus field validation. `saved_search_id` is required and must resolve to an existing saved search visible to the caller, and update authorization requires the caller to be allowed to update that saved search. The editable fields are optional (`name`, `frequency`), which means callers can send one field or both in a single update call.

* `saved_search_id`: GovTribe ID of the saved search to update.
  * `type`: `string`
  * `required`: `yes`
  * `default`: `n/a`
* `name`: Updated saved-search display name.
  * `type`: `string`
  * `required`: `no`
  * `default`: `omit to keep current name`
  * `shape`: `min length 1, max length 100`
* `frequency`: Updated notification cadence.
  * `type`: `string enum`
  * `required`: `no`
  * `default`: `omit to keep current frequency`
  * `options`: `Daily`, `Weekly`, `Instant`, `Never`

## Output Contract

* Top-level keys:
  * `govtribe_id`
  * `govtribe_type`
  * `govtribe_url`
  * `name`
  * `frequency`
  * `q`
  * `filters`
  * `sorts`
  * `view_results_url`
  * `searches_govtribe_type`
  * `search_persistence_id`
  * `last_sent`
  * `created_at`
  * `updated_at`
  * `owner`
  * `creator`
* Row keys:
  * `n/a`
* Relationship retrieval map:
  * `creator`
    * `resource_type`: `user`
    * `tool`: `Search_Users`
    * `filter`: `user_ids`
    * `nested_keys`: `govtribe_id`, `govtribe_type`, `name`, `email`
  * `owner`
    * `resource_type`: `user`
    * `tool`: `Search_Users`
    * `filter`: `user_ids`
    * `nested_keys`: `govtribe_id`, `govtribe_type`, `name`, `email`

## Usage Patterns

Pattern A: Rename a saved search while keeping frequency unchanged. Tool: `Update_Saved_Search`

```json
{
  "saved_search_id": "<SAVED_SEARCH_ID>",
  "name": "Federal IDV Alerts - Expiring in 12 Months"
}
```
