---
title: "Replace a school's locked student features; every change is audit-logged"
method: PUT
path: "/school-feature-policy/schools/{schoolId}"
tags: ["school-feature-policy"]
---

# Replace a school's locked student features; every change is audit-logged

`PUT /school-feature-policy/schools/{schoolId}`

## Request

- Base URL: `https://api.focusbear.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.focusbear.io/school-feature-policy/schools/{schoolId}`
- Auth: HTTP bearer

## Path parameters

- `schoolId` string, required

## Request body

- UpdateSchoolFeaturePolicyDto
  - `locked_features` string[], required

## Response `200`

- SchoolFeaturePolicyView
  - `school_id` string, required
  - `available_features` string[], required
  - `recommended_locked_features` string[], required
  - `locked_features` string[], required
  - `is_saved` boolean, required: False until a school admin first saves; nothing is locked before then
  - `updated_at` string, nullable, required
  - `updated_by` string, nullable, required

---

[API](https://skmtc.dev/focusbear/apis/focusbear-api.md) - [All operations](https://skmtc.dev/focusbear/apis/focusbear-api/llms.txt) - [OpenAPI document](https://skmtc.dev/focusbear/apis/focusbear-api/revisions/3a83a3b9a811?raw)
