Appearance
13_School_API
本文档描述学校相关接口,接口实现见 app/api/schools.py。
概览
- 资源:
schools、school_admins、branding(Logo) - 权限(简要):
- 平台管理员(platform_admin):可创建/删除学校、管理学校管理员
- 学校管理员(school_admin):可更新本校信息、读取品牌信息、上传 Logo
- 登录用户:可通过
/branding/me获取自己所属学校的品牌信息
1. 学校管理
GET
/schools- 权限:学校管理员(仅本校)/平台管理员(全平台)
- 查询:
q?(名称模糊)、region?、page?、size? - 响应:
SchoolOut[]
POST
/schools(201)- 权限:平台管理员
- 入参:
SchoolCreate { name, region? } - 响应:
SchoolOut
PUT
/schools/{school_id}- 权限:学校管理员(本校)/平台管理员
- 入参:
SchoolUpdate { name?, region?, logo_url? } - 响应:
SchoolOut
DELETE
/schools/{school_id}(204)- 权限:平台管理员
GET
/schools/{school_id}/statistics- 权限:学校管理员(本校)/平台管理员
- 响应:
{ total_students, total_teachers, total_admins, total_classes }
2. 学校管理员管理
GET
/schools/{school_id}/admins- 权限:平台管理员
- 响应:
UserOut[](学校管理员列表)
POST
/schools/{school_id}/admins- 权限:平台管理员
- 入参:
SchoolAdminAssign { user_id, role="school_admin" } - 响应:
UserOut
DELETE
/schools/{school_id}/admins/{user_id}(204)- 权限:平台管理员
3. 学校品牌(Logo)
GET
/branding/me- 权限:登录用户
- 响应:
{ school_id, logo_url }
GET
/schools/{school_id}/branding- 权限:学校管理员(本校)/平台管理员
- 响应:
{ school_id, logo_url }
PUT
/schools/{school_id}/branding- 权限:学校管理员(本校)/平台管理员
- 入参:
{ logo_url } - 响应:
{ school_id, logo_url }
POST
/schools/{school_id}/branding/logo- 权限:学校管理员(本校)/平台管理员
- 说明:multipart 上传图片(支持
.png/.jpg/.jpeg/.webp/.gif/.bmp),服务器保存后直接写入schools.logo_url - 响应:
{ school_id, logo_url }
4. 数据模型(节选)
SchoolOut:id, name, region?, logo_url?, created_atSchoolCreate:name, region?SchoolUpdate:name?, region?, logo_url?UserOut: 学校管理员列表复用通用用户结构
5. 变更说明
- 原
09_User_Management_API.md中的学校相关接口已迁移至本文档;旧文档中保留了迁移提示。