---
title: "PUT /program/updateProgram"
method: PUT
path: "/program/updateProgram"
tags: ["ProgramService"]
---

# PUT /program/updateProgram

`PUT /program/updateProgram`

Only supports programs with a single valve and fixed start times

## Request body

- UpdateProgramRequest — NOTE: This endpoint supports partial updates and only needs the id and the fields to update, not the entire model.
  - `id` string
  - `name` string
  - `color` string
  - `enabled` boolean
  - `startOn` Date
    - `year` integer
    - `month` integer
    - `day` integer
  - `endOn` Date
    - `year` integer
    - `month` integer
    - `day` integer
  - `dailyInterval` DailyIntervalCadence
    - `intervalDays` integer
  - `daysOfWeek` DaysOfWeekCadence
    - `daysOfWeek` string[]
  - `plannedRuns` PlannedRuns — Planned runs for the day
    - `runs` PlannedRunsPlannedRun[]
      - `startAt` Time
        - `hour` integer
        - `minute` integer
        - `second` integer
      - `durationSec` integer
  - `rainSkipEnabled` boolean

## Response `200`

OK

- UpdateProgramResponse
  - `program` Program — A program consists of planned runs for a day, as well as a cadence to repeat. A program has either a daily_interval cadence or a days_of_week cadence, but never both
    - `id` string
    - `name` string
    - `color` string
    - `enabled` boolean
    - `startOn` Date
      - `year` integer
      - `month` integer
      - `day` integer
    - `endOn` Date
      - `year` integer
      - `month` integer
      - `day` integer
    - `dailyInterval` DailyIntervalCadence
      - `intervalDays` integer
    - `daysOfWeek` DaysOfWeekCadence
      - `daysOfWeek` string[]
    - `plannedRuns` PlannedRuns — Planned runs for the day
      - `runs` PlannedRunsPlannedRun[]
        - `startAt` Time
          - `hour` integer
          - `minute` integer
          - `second` integer
        - `durationSec` integer
    - `assignments` Assignment[] — A list of valve IDs this program controls.
      - `entityId` string — Represents a (program, valve) relationship. This must be a valve ID.
    - `rainSkipEnabled` boolean

---

[API](https://skmtc.net/rach/apis/smart-hose-timer.md) · [All operations](https://skmtc.net/rach/apis/smart-hose-timer/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rach/smart-hose-timer/versions/990335185e30/schema)
