diff --git a/README.md b/README.md index c373989..e159980 100644 --- a/README.md +++ b/README.md @@ -28,70 +28,66 @@ make build ```bash # Set server (default: https://life-ustc.tiankaima.dev) -life-ustc --server http://localhost:3000 auth login +life-ustc --server http://localhost:3000 account login # Or set default server life-ustc config set-server http://localhost:3000 # Authenticate -life-ustc auth login -life-ustc auth status -life-ustc me +life-ustc account login +life-ustc account session +life-ustc account profile +life-ustc account locale zh-cn # Personal workflows -life-ustc todo --pending -life-ustc todo create --title "Write report" --priority high -life-ustc todo done -life-ustc todo done -life-ustc homework --pending -life-ustc homework create --title "Problem Set 1" -life-ustc homework create -life-ustc homework done -life-ustc homework done -life-ustc upload file ./report.pdf -life-ustc upload download -o report.pdf -life-ustc calendar get -life-ustc calendar set -life-ustc calendar import-codes +life-ustc workspace overview +life-ustc workspace todo --pending +life-ustc workspace todo create --title "Write report" --priority high +life-ustc workspace todo complete +life-ustc workspace homework --pending +life-ustc workspace homework complete +life-ustc workspace schedule +life-ustc workspace exam +life-ustc workspace subscription list +life-ustc workspace subscription set +life-ustc workspace subscription import +life-ustc workspace calendar events +life-ustc workspace calendar feed +life-ustc workspace bus-preferences get +life-ustc workspace upload create ./report.pdf +life-ustc workspace upload download -o report.pdf # Browse (no auth required unless noted) # In a terminal, bare course/section/teacher list commands open an interactive TUI. -life-ustc course -life-ustc course list --search "数学分析" -life-ustc course --no-interactive --limit 20 -life-ustc course view -life-ustc section list --semester-id -life-ustc section -life-ustc teacher list --search "张" -life-ustc teacher -life-ustc semester list -life-ustc semester current -life-ustc bus query --from east --to west -life-ustc metadata +life-ustc catalog course +life-ustc catalog course list --search "数学分析" +life-ustc catalog course --no-interactive --limit 20 +life-ustc catalog course get +life-ustc catalog section list --semester-id +life-ustc catalog teacher list --search "张" +life-ustc catalog semester current +life-ustc catalog bus timetable --from east --to west +life-ustc catalog metadata # Official USTC sources -life-ustc school semesters -life-ustc school semesters --graduate -life-ustc school curriculum --semester-id -life-ustc school curriculum --graduate -life-ustc school exam -life-ustc school score -life-ustc school homework -life-ustc school sync --dry-run -life-ustc school sync --graduate --dry-run -life-ustc school sync +life-ustc workspace school semesters +life-ustc workspace school semesters --graduate +life-ustc workspace school curriculum --semester-id +life-ustc workspace school exam +life-ustc workspace school score +life-ustc workspace school homework +life-ustc workspace school sync --dry-run # Community features -life-ustc comment list --target-type section --target-id -life-ustc comment create --target-type section --target-id --body "Great class!" -life-ustc comment delete -life-ustc description get --target-type course --target-id -life-ustc description set --target-type course --target-id --content "Good for freshmen." +life-ustc community comment list --target-type section --target-id +life-ustc community comment create --target-type section --target-id --body "Great class!" +life-ustc community description get --target-type course --target-id +life-ustc community section-homework create --title "Problem Set 1" # Raw API access -life-ustc api semesters/current -life-ustc api todos -F title='Write report' -F priority=high -life-ustc api sections --jq '.data[].code' +life-ustc api catalog/semesters/current +life-ustc api workspace/todos -F title='Write report' -F priority=high +life-ustc api catalog/sections --jq '.data[].code' # Admin life-ustc admin user list @@ -101,19 +97,20 @@ life-ustc admin suspension create --user-id --reason "spam" ## Command Model -- `me` is identity and account status. -- Personal resources live at the top level: `todo`, `homework`, `calendar`, `upload`. -- Browseable campus resources also live at the top level: `course`, `section`, `teacher`, `semester`, `schedule`, `bus`. -- `school` groups official USTC integrations: `semesters`, `curriculum`, `exam`, `score`, `homework`, and `sync`. -- Generic cross-resource workflows are available via `comment`, `description`, and `api`. +- `catalog` contains public campus facts such as courses, sections, teachers, schedules, and buses. +- `workspace` contains the current user's todos, homework state, schedules, exams, subscriptions, files, and official-school imports. +- `community` contains shared comments, descriptions, and section homework entities. +- `account` contains profile, login, session, token, and locale operations. +- `admin` contains platform governance commands. +- `config`, `completion`, and `api` remain top-level CLI plumbing rather than product domains. - Commands that benefit from guided input open their own TUI by default in an interactive terminal when no list/filter flags are provided, such as `course`, `section`, and `teacher`; use `--no-interactive` to force plain table output. ## Official USTC Sources -- `life-ustc school semesters` reads undergraduate semesters from `catalog.ustc.edu.cn`, or graduate semesters from the official `yjs1.ustc.edu.cn` graduate apps with `--graduate`. -- `life-ustc school curriculum`, `exam`, and `score` sign in directly from Go without a browser backend. Undergraduate data comes from `jw.ustc.edu.cn`; graduate data comes from the official `yjs1.ustc.edu.cn` graduate apps with `--graduate`. -- `life-ustc school homework` reads Blackboard calendar/homework data from `www.bb.ustc.edu.cn`, or graduate homework from the official `yjs1.ustc.edu.cn` graduate apps with `--graduate`. -- `life-ustc school sync` reads lesson codes from the active school system, matches them to Life@USTC sections, and updates your Life@USTC calendar subscriptions. The sync is one-way to Life@USTC only; it does not write back to USTC systems. Use `--dry-run` to preview matches without updating subscriptions. +- `life-ustc workspace school semesters` reads undergraduate semesters from `catalog.ustc.edu.cn`, or graduate semesters from the official `yjs1.ustc.edu.cn` graduate apps with `--graduate`. +- `life-ustc workspace school curriculum`, `exam`, and `score` sign in directly from Go without a browser backend. +- `life-ustc workspace school homework` reads Blackboard or graduate homework data. +- `life-ustc workspace school sync` matches school-system lessons to Life@USTC sections and updates workspace subscriptions. Authenticated `school` commands accept `--username`, `--password`, `--totp`, `--undergraduate`, `--graduate`, and sync commands also accept `--all-programs`. If omitted, the CLI falls back to the configured school program list, then program-specific credentials, then undergraduate. Persist defaults with `life-ustc config set-school-programs undergraduate,graduate`. @@ -128,8 +125,8 @@ All commands support `--format json` or `--json` for machine-readable output: ```bash life-ustc --json semester list -life-ustc --json course view 12345 -life-ustc section list --jq '.data[].code' +life-ustc --json catalog course get 12345 +life-ustc catalog section list --jq '.data[].code' ``` ## Shell Integration @@ -159,17 +156,17 @@ life-ustc completion -s fish Use `life-ustc api` for unsupported or newly added endpoints. ```bash -# GET /api/metadata -life-ustc api metadata +# GET /api/catalog/metadata +life-ustc api catalog/metadata -# POST /api/todos with JSON body inferred from fields -life-ustc api todos -F title='Write report' -F priority=high +# POST /api/workspace/todos with JSON body inferred from fields +life-ustc api workspace/todos -F title='Write report' -F priority=high # POST exact request body from a file -life-ustc api -X POST todos --input ./todo.json +life-ustc api -X POST workspace/todos --input ./todo.json # Include response headers -life-ustc api -i metadata +life-ustc api -i catalog/metadata ``` ## Configuration diff --git a/api/openapi.json b/api/openapi.json index ba0399c..237f932 100644 --- a/api/openapi.json +++ b/api/openapi.json @@ -269,21 +269,19 @@ } } }, - "/api/bus": { + "/api/account": { "get": { - "operationId": "queryBus", - "summary": "Query shuttle buses", + "operationId": "getMe", + "summary": "Get current user", "tags": [ - "Bus" + "Me" ], - "parameters": [ + "security": [ { - "in": "query", - "name": "versionKey", - "schema": { - "type": "string", - "minLength": 1 - } + "bearerAuth": [] + }, + { + "sessionCookie": [] } ], "responses": { @@ -292,12 +290,12 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/busQueryResponseSchema" + "$ref": "#/components/schemas/meResponseSchema" } } } }, - "400": { + "401": { "description": "Error response", "content": { "application/json": { @@ -310,43 +308,46 @@ } } }, - "/api/calendar-subscriptions": { - "post": { - "operationId": "setCalendarSubscription", - "summary": "Replace section subscriptions", + "/api/health": { + "get": { + "operationId": "listHealth", + "summary": "Check process liveness", "tags": [ - "Calendar" - ], - "security": [ - { - "bearerAuth": [] - }, - { - "sessionCookie": [] - } + "Api" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/calendarSubscriptionCreateRequestSchema" + "responses": { + "200": { + "description": "Text response", + "content": { + "text/plain": { + "schema": { + "type": "string" + } } } } - }, + } + } + }, + "/api/mcp": { + "get": { + "operationId": "listMcp", + "summary": "Standalone GET streams are disabled for the stateless MCP transport", + "tags": [ + "Api" + ], "responses": { - "200": { - "description": "Successful response", + "403": { + "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/calendarSubscriptionCreateResponseSchema" + "$ref": "#/components/schemas/openApiErrorSchema" } } } }, - "400": { + "405": { "description": "Error response", "content": { "application/json": { @@ -355,6 +356,23 @@ } } } + } + } + }, + "post": { + "operationId": "createMcp", + "summary": "Send an MCP Streamable HTTP JSON-RPC message", + "tags": [ + "Api" + ], + "security": [ + { + "mcpBearerAuth": [] + } + ], + "responses": { + "200": { + "description": "Response 200" }, "401": { "description": "Error response", @@ -366,6 +384,19 @@ } } }, + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "413": { + "description": "Response 413" + }, "429": { "description": "Error response", "headers": { @@ -406,42 +437,32 @@ } } }, - "patch": { - "operationId": "appendCalendarSubscriptionSections", - "summary": "Append section subscriptions", + "delete": { + "operationId": "delete-api-mcp", + "summary": "Close an MCP Streamable HTTP transport session", "tags": [ - "Calendar" + "Api" ], "security": [ { - "bearerAuth": [] - }, - { - "sessionCookie": [] + "mcpBearerAuth": [] } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/calendarSubscriptionAppendRequestSchema" - } - } - } - }, "responses": { "200": { - "description": "Successful response", + "description": "Response 200" + }, + "401": { + "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/calendarSubscriptionAppendResponseSchema" + "$ref": "#/components/schemas/openApiErrorSchema" } } } }, - "400": { + "403": { "description": "Error response", "content": { "application/json": { @@ -450,8 +471,20 @@ } } } + } + } + }, + "options": { + "operationId": "options-api-mcp", + "summary": "Return MCP transport CORS preflight headers", + "tags": [ + "Api" + ], + "responses": { + "204": { + "description": "Response 204" }, - "401": { + "403": { "description": "Error response", "content": { "application/json": { @@ -460,47 +493,61 @@ } } } - }, - "404": { - "description": "Error response", + } + } + } + }, + "/api/openapi": { + "get": { + "operationId": "getOpenApiSpec", + "summary": "Get OpenAPI document", + "tags": [ + "OpenAPI" + ], + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/openApiDocumentResponseSchema" } } } - }, - "429": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } + } + } + } + }, + "/api/account/preferences": { + "post": { + "operationId": "setLocale", + "summary": "Update user locale cookie", + "tags": [ + "Locale" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/localeUpdateRequestSchema" } - }, + } + } + }, + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/successResponseSchema" } } } }, - "503": { + "400": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -510,38 +557,40 @@ } } } - }, - "delete": { - "operationId": "delete-api-calendar-subscriptions", - "summary": "Remove section subscriptions", + } + }, + "/api/account/profile": { + "get": { + "operationId": "get-api-account-profile", + "summary": "Get public user profile", "tags": [ - "Calendar" + "Me" ], - "security": [ + "parameters": [ { - "bearerAuth": [] + "in": "query", + "name": "username", + "schema": { + "type": "string", + "minLength": 1 + } }, { - "sessionCookie": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/calendarSubscriptionRemoveRequestSchema" - } + "in": "query", + "name": "userId", + "schema": { + "type": "string", + "minLength": 1 } } - }, + ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/calendarSubscriptionRemoveResponseSchema" + "$ref": "#/components/schemas/publicUserProfileResponseSchema" } } } @@ -556,7 +605,7 @@ } } }, - "401": { + "404": { "description": "Error response", "content": { "application/json": { @@ -565,28 +614,83 @@ } } } + } + } + } + }, + "/api/admin/comments": { + "get": { + "operationId": "listAdminComments", + "summary": "List moderation comments", + "tags": [ + "Admin" + ], + "security": [ + { + "sessionCookie": [] + } + ], + "x-auth-role": "admin", + "parameters": [ + { + "in": "query", + "name": "status", + "schema": { + "type": "string", + "enum": [ + "all", + "active", + "softbanned", + "deleted", + "suspended" + ] + } }, - "404": { - "description": "Error response", + { + "in": "query", + "name": "page", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 200 + }, + "description": "Number of items per page." + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 200 + }, + "deprecated": true, + "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + } + ], + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/adminCommentsResponseSchema" } } } }, - "429": { + "400": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -595,17 +699,8 @@ } } }, - "503": { + "401": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -617,13 +712,19 @@ } } }, - "/api/comments": { + "/api/admin/descriptions": { "get": { - "operationId": "listComments", - "summary": "List comments", + "operationId": "listAdminDescriptions", + "summary": "List descriptions", "tags": [ - "Comments" + "Admin" + ], + "security": [ + { + "sessionCookie": [] + } ], + "x-auth-role": "admin", "parameters": [ { "in": "query", @@ -631,33 +732,36 @@ "schema": { "type": "string", "enum": [ + "all", "section", "course", "teacher", - "section-teacher", "homework" ] - }, - "required": true + } }, { "in": "query", - "name": "targetId", + "name": "hasContent", "schema": { - "type": "string" + "type": "string", + "enum": [ + "all", + "withContent", + "empty" + ] } }, { "in": "query", - "name": "sectionId", + "name": "search", "schema": { - "type": "integer", - "format": "int64" + "type": "string" } }, { "in": "query", - "name": "sectionJwId", + "name": "page", "schema": { "type": "integer", "format": "int64" @@ -665,34 +769,93 @@ }, { "in": "query", - "name": "courseJwId", + "name": "pageSize", "schema": { "type": "integer", - "format": "int64" - } + "format": "int64", + "minimum": 1, + "maximum": 200 + }, + "description": "Number of items per page." }, { "in": "query", - "name": "teacherId", + "name": "limit", "schema": { "type": "integer", - "format": "int64" + "format": "int64", + "minimum": 1, + "maximum": 200 + }, + "deprecated": true, + "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/adminDescriptionsResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } } }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + } + } + } + }, + "/api/admin/homeworks": { + "get": { + "operationId": "listAdminHomeworks", + "summary": "List moderation homeworks", + "tags": [ + "Admin" + ], + "security": [ + { + "sessionCookie": [] + } + ], + "x-auth-role": "admin", + "parameters": [ { "in": "query", - "name": "homeworkId", + "name": "status", "schema": { "type": "string", - "minLength": 1 + "enum": [ + "all", + "active", + "deleted" + ] } }, { "in": "query", - "name": "sectionTeacherId", + "name": "search", "schema": { - "type": "integer", - "format": "int64" + "type": "string" } }, { @@ -710,7 +873,7 @@ "type": "integer", "format": "int64", "minimum": 1, - "maximum": 100 + "maximum": 200 }, "description": "Number of items per page." }, @@ -721,7 +884,7 @@ "type": "integer", "format": "int64", "minimum": 1, - "maximum": 100 + "maximum": 200 }, "deprecated": true, "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." @@ -733,7 +896,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/commentsListResponseSchema" + "$ref": "#/components/schemas/adminHomeworksResponseSchema" } } } @@ -748,7 +911,7 @@ } } }, - "404": { + "401": { "description": "Error response", "content": { "application/json": { @@ -759,51 +922,33 @@ } } } - }, - "post": { - "operationId": "createComment", - "summary": "Create one comment", + } + }, + "/api/admin/suspensions": { + "get": { + "operationId": "listAdminSuspensions", + "summary": "List suspensions", "tags": [ - "Comments" + "Admin" ], "security": [ - { - "bearerAuth": [] - }, { "sessionCookie": [] } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/commentCreateRequestSchema" - } - } - } - }, + "x-auth-role": "admin", "responses": { - "201": { + "200": { "description": "Successful response", - "headers": { - "Location": { - "description": "Relative URL of the created resource", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/idResponseSchema" + "$ref": "#/components/schemas/adminSuspensionsResponseSchema" } } } }, - "400": { + "401": { "description": "Error response", "content": { "application/json": { @@ -812,13 +957,66 @@ } } } - }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + } + } + }, + "post": { + "operationId": "createAdminSuspension", + "summary": "Create suspension for one user", + "tags": [ + "Admin" + ], + "security": [ + { + "sessionCookie": [] + } + ], + "x-auth-role": "admin", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/adminCreateSuspensionRequestSchema" + } + } + } + }, + "responses": { + "201": { + "description": "Successful response", + "headers": { + "Location": { + "description": "Relative URL of the created resource", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/adminSuspensionResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -884,7 +1082,135 @@ } } }, - "/api/courses": { + "/api/admin/users": { + "get": { + "operationId": "listAdminUsers", + "summary": "List users", + "tags": [ + "Admin" + ], + "security": [ + { + "sessionCookie": [] + } + ], + "x-auth-role": "admin", + "parameters": [ + { + "in": "query", + "name": "search", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "page", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "description": "Number of items per page." + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "deprecated": true, + "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/adminUsersResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + } + } + } + }, + "/api/catalog/bus": { + "get": { + "operationId": "queryBus", + "summary": "Query shuttle buses", + "tags": [ + "Bus" + ], + "parameters": [ + { + "in": "query", + "name": "versionKey", + "schema": { + "type": "string", + "minLength": 1 + } + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/busQueryResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + } + } + } + }, + "/api/catalog/courses": { "get": { "operationId": "listCourses", "summary": "List courses", @@ -990,34 +1316,52 @@ } } }, - "/api/descriptions": { + "/api/catalog/metadata": { "get": { - "operationId": "getDescription", - "summary": "Get description history", + "operationId": "getMetadata", + "summary": "Get metadata", "tags": [ - "Descriptions" + "Metadata" + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/metadataResponseSchema" + } + } + } + } + } + } + }, + "/api/catalog/schedules": { + "get": { + "operationId": "listSchedules", + "summary": "List schedules", + "tags": [ + "Schedules" ], "parameters": [ { "in": "query", - "name": "targetType", + "name": "locale", "schema": { "type": "string", "enum": [ - "section", - "course", - "teacher", - "homework" + "en-us", + "zh-cn" ] - }, - "required": true + } }, { "in": "query", - "name": "targetId", + "name": "sectionId", "schema": { - "type": "string", - "minLength": 1 + "type": "integer", + "format": "int64" } }, { @@ -1030,10 +1374,10 @@ }, { "in": "query", - "name": "courseJwId", + "name": "sectionCode", "schema": { - "type": "integer", - "format": "int64" + "type": "string", + "minLength": 1 } }, { @@ -1046,151 +1390,101 @@ }, { "in": "query", - "name": "homeworkId", + "name": "teacherCode", "schema": { "type": "string", "minLength": 1 } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/descriptionsResponseSchema" - } - } - } }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } + { + "in": "query", + "name": "roomId", + "schema": { + "type": "integer", + "format": "int64" } }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - }, - "post": { - "operationId": "upsertDescription", - "summary": "Upsert description", - "tags": [ - "Descriptions" - ], - "security": [ { - "bearerAuth": [] + "in": "query", + "name": "roomJwId", + "schema": { + "type": "integer", + "format": "int64" + } }, { - "sessionCookie": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/descriptionUpsertRequestSchema" - } - } - } - }, - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/descriptionUpsertResponseSchema" - } - } + "in": "query", + "name": "weekday", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 7 } }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } + { + "in": "query", + "name": "dateFrom", + "schema": { + "type": "string", + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" } }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } + { + "in": "query", + "name": "dateTo", + "schema": { + "type": "string", + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" } }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } + { + "in": "query", + "name": "page", + "schema": { + "type": "integer", + "format": "int64" } }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } + { + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "description": "Number of items per page." }, - "429": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 }, + "deprecated": true, + "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + } + ], + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/paginatedScheduleResponseSchema" } } } }, - "503": { + "400": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -1202,38 +1496,28 @@ } } }, - "/api/health": { - "get": { - "operationId": "listHealth", - "summary": "Check process liveness", - "tags": [ - "Api" - ], - "responses": { - "200": { - "description": "Text response", - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - } - } - } - } - }, - "/api/homeworks": { + "/api/catalog/sections": { "get": { - "operationId": "listHomeworks", - "summary": "List homeworks", + "operationId": "listSections", + "summary": "List sections", "tags": [ - "Homeworks" + "Sections" ], "parameters": [ { "in": "query", - "name": "sectionId", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] + } + }, + { + "in": "query", + "name": "courseId", "schema": { "type": "integer", "format": "int64" @@ -1241,15 +1525,15 @@ }, { "in": "query", - "name": "sectionIds", + "name": "courseJwId", "schema": { - "type": "string", - "minLength": 1 + "type": "integer", + "format": "int64" } }, { "in": "query", - "name": "sectionJwId", + "name": "semesterId", "schema": { "type": "integer", "format": "int64" @@ -1257,40 +1541,111 @@ }, { "in": "query", - "name": "includeDeleted", + "name": "semesterJwId", "schema": { - "type": "string", - "enum": [ - "true", - "false" - ] + "type": "integer", + "format": "int64" } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/homeworksListResponseSchema" - } - } + }, + { + "in": "query", + "name": "campusId", + "schema": { + "type": "integer", + "format": "int64" } }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } + { + "in": "query", + "name": "departmentId", + "schema": { + "type": "integer", + "format": "int64" } }, - "404": { - "description": "Error response", - "content": { + { + "in": "query", + "name": "teacherId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "teacherCode", + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "in": "query", + "name": "search", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "ids", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "jwIds", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "page", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "description": "Number of items per page." + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "deprecated": true, + "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/paginatedSectionResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/openApiErrorSchema" @@ -1299,46 +1654,55 @@ } } } - }, - "post": { - "operationId": "createHomework", - "summary": "Create one homework", + } + }, + "/api/catalog/semesters": { + "get": { + "operationId": "listSemesters", + "summary": "List semesters", "tags": [ - "Homeworks" + "Semesters" ], - "security": [ + "parameters": [ { - "bearerAuth": [] + "in": "query", + "name": "page", + "schema": { + "type": "integer", + "format": "int64" + } }, { - "sessionCookie": [] + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "description": "Number of items per page." + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "deprecated": true, + "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/homeworkCreateRequestSchema" - } - } - } - }, "responses": { - "201": { + "200": { "description": "Successful response", - "headers": { - "Location": { - "description": "Relative URL of the created resource", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/homeworkCreateResponseSchema" + "$ref": "#/components/schemas/paginatedSemesterResponseSchema" } } } @@ -1352,18 +1716,88 @@ } } } + } + } + } + }, + "/api/catalog/teachers": { + "get": { + "operationId": "listTeachers", + "summary": "List teachers", + "tags": [ + "Teachers" + ], + "parameters": [ + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] + } }, - "401": { - "description": "Error response", + { + "in": "query", + "name": "departmentId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "search", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "page", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "description": "Number of items per page." + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "deprecated": true, + "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + } + ], + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/paginatedTeacherResponseSchema" } } } }, - "403": { + "400": { "description": "Error response", "content": { "application/json": { @@ -1372,28 +1806,133 @@ } } } + } + } + } + }, + "/api/community/comments": { + "get": { + "operationId": "listComments", + "summary": "List comments", + "tags": [ + "Comments" + ], + "parameters": [ + { + "in": "query", + "name": "targetType", + "schema": { + "type": "string", + "enum": [ + "section", + "course", + "teacher", + "section-teacher", + "homework" + ] + }, + "required": true }, - "404": { - "description": "Error response", + { + "in": "query", + "name": "targetId", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "sectionId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "sectionJwId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "courseJwId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "teacherId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "homeworkId", + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "in": "query", + "name": "sectionTeacherId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "page", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "description": "Number of items per page." + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 100 + }, + "deprecated": true, + "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + } + ], + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/commentsListResponseSchema" } } } }, - "429": { + "400": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -1402,17 +1941,8 @@ } } }, - "503": { + "404": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -1422,58 +1952,51 @@ } } } - } - }, - "/api/locale": { + }, "post": { - "operationId": "setLocale", - "summary": "Update user locale cookie", + "operationId": "createComment", + "summary": "Create one comment", "tags": [ - "Locale" + "Comments" + ], + "security": [ + { + "bearerAuth": [] + }, + { + "sessionCookie": [] + } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/localeUpdateRequestSchema" + "$ref": "#/components/schemas/commentCreateRequestSchema" } } } }, "responses": { - "200": { + "201": { "description": "Successful response", - "content": { - "application/json": { + "headers": { + "Location": { + "description": "Relative URL of the created resource", "schema": { - "$ref": "#/components/schemas/successResponseSchema" + "type": "string" } } - } - }, - "400": { - "description": "Error response", + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/idResponseSchema" } } } - } - } - } - }, - "/api/mcp": { - "get": { - "operationId": "listMcp", - "summary": "Standalone GET streams are disabled for the stateless MCP transport", - "tags": [ - "Api" - ], - "responses": { - "403": { + }, + "400": { "description": "Error response", "content": { "application/json": { @@ -1483,7 +2006,7 @@ } } }, - "405": { + "401": { "description": "Error response", "content": { "application/json": { @@ -1492,25 +2015,8 @@ } } } - } - } - }, - "post": { - "operationId": "createMcp", - "summary": "Send an MCP Streamable HTTP JSON-RPC message", - "tags": [ - "Api" - ], - "security": [ - { - "mcpBearerAuth": [] - } - ], - "responses": { - "200": { - "description": "Response 200" }, - "401": { + "403": { "description": "Error response", "content": { "application/json": { @@ -1520,7 +2026,7 @@ } } }, - "403": { + "404": { "description": "Error response", "content": { "application/json": { @@ -1530,9 +2036,6 @@ } } }, - "413": { - "description": "Response 413" - }, "429": { "description": "Error response", "headers": { @@ -1572,33 +2075,83 @@ } } } - }, - "delete": { - "operationId": "delete-api-mcp", - "summary": "Close an MCP Streamable HTTP transport session", + } + }, + "/api/community/descriptions": { + "get": { + "operationId": "getDescription", + "summary": "Get description history", "tags": [ - "Api" + "Descriptions" ], - "security": [ + "parameters": [ { - "mcpBearerAuth": [] + "in": "query", + "name": "targetType", + "schema": { + "type": "string", + "enum": [ + "section", + "course", + "teacher", + "homework" + ] + }, + "required": true + }, + { + "in": "query", + "name": "targetId", + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "in": "query", + "name": "sectionJwId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "courseJwId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "teacherId", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "in": "query", + "name": "homeworkId", + "schema": { + "type": "string", + "minLength": 1 + } } ], "responses": { "200": { - "description": "Response 200" - }, - "401": { - "description": "Error response", + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/descriptionsResponseSchema" } } } }, - "403": { + "400": { "description": "Error response", "content": { "application/json": { @@ -1607,20 +2160,8 @@ } } } - } - } - }, - "options": { - "operationId": "options-api-mcp", - "summary": "Return MCP transport CORS preflight headers", - "tags": [ - "Api" - ], - "responses": { - "204": { - "description": "Response 204" }, - "403": { + "404": { "description": "Error response", "content": { "application/json": { @@ -1631,14 +2172,12 @@ } } } - } - }, - "/api/me": { - "get": { - "operationId": "getMe", - "summary": "Get current user", + }, + "post": { + "operationId": "upsertDescription", + "summary": "Upsert description", "tags": [ - "Me" + "Descriptions" ], "security": [ { @@ -1648,13 +2187,33 @@ "sessionCookie": [] } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/descriptionUpsertRequestSchema" + } + } + } + }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/meResponseSchema" + "$ref": "#/components/schemas/descriptionUpsertResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -1668,45 +2227,61 @@ } } } - } - } - } - }, - "/api/metadata": { - "get": { - "operationId": "getMetadata", - "summary": "Get metadata", - "tags": [ - "Metadata" - ], - "responses": { - "200": { - "description": "Successful response", + }, + "403": { + "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/metadataResponseSchema" + "$ref": "#/components/schemas/openApiErrorSchema" } } } - } - } - } - }, - "/api/openapi": { - "get": { - "operationId": "getOpenApiSpec", - "summary": "Get OpenAPI document", - "tags": [ - "OpenAPI" - ], - "responses": { - "200": { - "description": "Successful response", + }, + "404": { + "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiDocumentResponseSchema" + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "429": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -1714,25 +2289,14 @@ } } }, - "/api/schedules": { + "/api/community/homeworks": { "get": { - "operationId": "listSchedules", - "summary": "List schedules", + "operationId": "listHomeworks", + "summary": "List homeworks", "tags": [ - "Schedules" + "Homeworks" ], "parameters": [ - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } - }, { "in": "query", "name": "sectionId", @@ -1743,31 +2307,7 @@ }, { "in": "query", - "name": "sectionJwId", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "sectionCode", - "schema": { - "type": "string", - "minLength": 1 - } - }, - { - "in": "query", - "name": "teacherId", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "teacherCode", + "name": "sectionIds", "schema": { "type": "string", "minLength": 1 @@ -1775,15 +2315,7 @@ }, { "in": "query", - "name": "roomId", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "roomJwId", + "name": "sectionJwId", "schema": { "type": "integer", "format": "int64" @@ -1791,62 +2323,14 @@ }, { "in": "query", - "name": "weekday", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 7 - } - }, - { - "in": "query", - "name": "dateFrom", - "schema": { - "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" - } - }, - { - "in": "query", - "name": "dateTo", + "name": "includeDeleted", "schema": { "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" - } - }, - { - "in": "query", - "name": "page", - "schema": { - "type": "integer", - "format": "int64" + "enum": [ + "true", + "false" + ] } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 - }, - "description": "Number of items per page." - }, - { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 - }, - "deprecated": true, - "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." } ], "responses": { @@ -1855,7 +2339,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/paginatedScheduleResponseSchema" + "$ref": "#/components/schemas/homeworksListResponseSchema" } } } @@ -1869,159 +2353,132 @@ } } } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } } } - } - }, - "/api/sections": { - "get": { - "operationId": "listSections", - "summary": "List sections", + }, + "post": { + "operationId": "createHomework", + "summary": "Create one homework", "tags": [ - "Sections" + "Homeworks" ], - "parameters": [ - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } - }, - { - "in": "query", - "name": "courseId", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "courseJwId", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "semesterId", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "semesterJwId", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "campusId", - "schema": { - "type": "integer", - "format": "int64" - } - }, + "security": [ { - "in": "query", - "name": "departmentId", - "schema": { - "type": "integer", - "format": "int64" - } + "bearerAuth": [] }, { - "in": "query", - "name": "teacherId", - "schema": { - "type": "integer", - "format": "int64" + "sessionCookie": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/homeworkCreateRequestSchema" + } } - }, - { - "in": "query", - "name": "teacherCode", - "schema": { - "type": "string", - "minLength": 1 + } + }, + "responses": { + "201": { + "description": "Successful response", + "headers": { + "Location": { + "description": "Relative URL of the created resource", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/homeworkCreateResponseSchema" + } + } } }, - { - "in": "query", - "name": "search", - "schema": { - "type": "string" + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } } }, - { - "in": "query", - "name": "ids", - "schema": { - "type": "string" + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } } }, - { - "in": "query", - "name": "jwIds", - "schema": { - "type": "string" + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } } }, - { - "in": "query", - "name": "page", - "schema": { - "type": "integer", - "format": "int64" + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } } }, - { - "in": "query", - "name": "pageSize", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 - }, - "description": "Number of items per page." - }, - { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 + "429": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } }, - "deprecated": true, - "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." - } - ], - "responses": { - "200": { - "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/paginatedSectionResponseSchema" + "$ref": "#/components/schemas/openApiErrorSchema" } } } }, - "400": { + "503": { "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, "content": { "application/json": { "schema": { @@ -2033,44 +2490,19 @@ } } }, - "/api/semesters": { + "/api/workspace/bus-preferences": { "get": { - "operationId": "listSemesters", - "summary": "List semesters", + "operationId": "getBusPreferences", + "summary": "Get bus preferences", "tags": [ - "Semesters" + "Bus" ], - "parameters": [ - { - "in": "query", - "name": "page", - "schema": { - "type": "integer", - "format": "int64" - } - }, + "security": [ { - "in": "query", - "name": "pageSize", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 - }, - "description": "Number of items per page." + "bearerAuth": [] }, { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 - }, - "deprecated": true, - "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + "sessionCookie": [] } ], "responses": { @@ -2079,12 +2511,12 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/paginatedSemesterResponseSchema" + "$ref": "#/components/schemas/busPreferenceResponseSchema" } } } }, - "400": { + "401": { "description": "Error response", "content": { "application/json": { @@ -2095,60 +2527,176 @@ } } } - } - }, - "/api/teachers": { - "get": { - "operationId": "listTeachers", - "summary": "List teachers", - "tags": [ - "Teachers" - ], - "parameters": [ + }, + "post": { + "operationId": "setBusPreferences", + "summary": "Update bus preferences", + "tags": [ + "Bus" + ], + "security": [ { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } + "bearerAuth": [] }, { - "in": "query", - "name": "departmentId", - "schema": { - "type": "integer", - "format": "int64" + "sessionCookie": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/busPreferenceRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/busPreferenceResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "429": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } } + } + } + } + }, + "/api/workspace/homeworks": { + "get": { + "operationId": "getSubscribedHomeworks", + "summary": "List subscribed homeworks", + "tags": [ + "Homeworks" + ], + "security": [ + { + "bearerAuth": [] }, { - "in": "query", - "name": "search", - "schema": { - "type": "string" + "sessionCookie": [] + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/subscribedHomeworksResponseSchema" + } + } + } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } } + } + } + } + }, + "/api/workspace/overview": { + "get": { + "operationId": "get-api-me-overview", + "summary": "Get a compact current-user overview for lightweight clients", + "tags": [ + "Dashboard" + ], + "security": [ + { + "bearerAuth": [] }, + { + "sessionCookie": [] + } + ], + "parameters": [ { "in": "query", - "name": "page", + "name": "atTime", "schema": { - "type": "integer", - "format": "int64" + "type": "string", + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" } }, { "in": "query", - "name": "pageSize", + "name": "homeworkWindowDays", "schema": { "type": "integer", "format": "int64", "minimum": 1, - "maximum": 100 - }, - "description": "Number of items per page." + "maximum": 90 + } }, { "in": "query", @@ -2157,10 +2705,19 @@ "type": "integer", "format": "int64", "minimum": 1, - "maximum": 100 - }, - "deprecated": true, - "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + "maximum": 50 + } + }, + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] + } } ], "responses": { @@ -2169,7 +2726,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/paginatedTeacherResponseSchema" + "$ref": "#/components/schemas/compactOverviewResponseSchema" } } } @@ -2183,16 +2740,26 @@ } } } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } } } } }, - "/api/todos": { + "/api/workspace/schedules": { "get": { - "operationId": "listTodos", - "summary": "List todos", + "operationId": "get-api-me-subscriptions-schedules", + "summary": "List schedules across the current user's subscribed sections", "tags": [ - "Todos" + "Schedules" ], "security": [ { @@ -2205,30 +2772,16 @@ "parameters": [ { "in": "query", - "name": "completed", - "schema": { - "type": "string", - "enum": [ - "true", - "false" - ] - } - }, - { - "in": "query", - "name": "priority", + "name": "dateFrom", "schema": { "type": "string", - "enum": [ - "low", - "medium", - "high" - ] + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" } }, { "in": "query", - "name": "dueBefore", + "name": "dateTo", "schema": { "type": "string", "minLength": 1, @@ -2237,11 +2790,12 @@ }, { "in": "query", - "name": "dueAfter", + "name": "weekday", "schema": { - "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 7 } }, { @@ -2251,7 +2805,18 @@ "type": "integer", "format": "int64", "minimum": 1, - "maximum": 200 + "maximum": 300 + } + }, + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] } } ], @@ -2261,7 +2826,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/todosListResponseSchema" + "$ref": "#/components/schemas/subscribedSchedulesResponseSchema" } } } @@ -2287,12 +2852,14 @@ } } } - }, + } + }, + "/api/workspace/subscriptions": { "post": { - "operationId": "createTodo", - "summary": "Create a todo", + "operationId": "setCalendarSubscription", + "summary": "Replace section subscriptions", "tags": [ - "Todos" + "Calendar" ], "security": [ { @@ -2307,26 +2874,18 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/todoCreateRequestSchema" + "$ref": "#/components/schemas/calendarSubscriptionCreateRequestSchema" } } } }, "responses": { - "201": { + "200": { "description": "Successful response", - "headers": { - "Location": { - "description": "Relative URL of the created resource", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/idResponseSchema" + "$ref": "#/components/schemas/calendarSubscriptionCreateResponseSchema" } } } @@ -2390,14 +2949,12 @@ } } } - } - }, - "/api/uploads": { - "get": { - "operationId": "listUploads", - "summary": "List uploads", + }, + "patch": { + "operationId": "appendCalendarSubscriptionSections", + "summary": "Append section subscriptions", "tags": [ - "Uploads" + "Calendar" ], "security": [ { @@ -2407,46 +2964,23 @@ "sessionCookie": [] } ], - "parameters": [ - { - "in": "query", - "name": "page", - "schema": { - "type": "integer", - "format": "int64" + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendarSubscriptionAppendRequestSchema" + } } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 - }, - "description": "Number of items per page." - }, - { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 - }, - "deprecated": true, - "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." } - ], + }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/uploadsListResponseSchema" + "$ref": "#/components/schemas/calendarSubscriptionAppendResponseSchema" } } } @@ -2470,14 +3004,62 @@ } } } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "429": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } } } }, - "post": { - "operationId": "createUpload", - "summary": "Create a signed upload URL", + "delete": { + "operationId": "delete-api-workspace-subscriptions", + "summary": "Remove section subscriptions", "tags": [ - "Uploads" + "Calendar" ], "security": [ { @@ -2492,7 +3074,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/uploadCreateRequestSchema" + "$ref": "#/components/schemas/calendarSubscriptionRemoveRequestSchema" } } } @@ -2503,7 +3085,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/uploadCreateResponseSchema" + "$ref": "#/components/schemas/calendarSubscriptionRemoveResponseSchema" } } } @@ -2528,17 +3110,7 @@ } } }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "413": { + "404": { "description": "Error response", "content": { "application/json": { @@ -2589,52 +3161,62 @@ } } }, - "/api/admin/comments": { + "/api/workspace/todos": { "get": { - "operationId": "listAdminComments", - "summary": "List moderation comments", + "operationId": "listTodos", + "summary": "List todos", "tags": [ - "Admin" + "Todos" ], "security": [ + { + "bearerAuth": [] + }, { "sessionCookie": [] } ], - "x-auth-role": "admin", "parameters": [ { "in": "query", - "name": "status", + "name": "completed", "schema": { "type": "string", "enum": [ - "all", - "active", - "softbanned", - "deleted", - "suspended" + "true", + "false" ] } }, { "in": "query", - "name": "page", + "name": "priority", "schema": { - "type": "integer", - "format": "int64" + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] } }, { "in": "query", - "name": "pageSize", + "name": "dueBefore", "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 200 - }, - "description": "Number of items per page." + "type": "string", + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" + } + }, + { + "in": "query", + "name": "dueAfter", + "schema": { + "type": "string", + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" + } }, { "in": "query", @@ -2644,9 +3226,7 @@ "format": "int64", "minimum": 1, "maximum": 200 - }, - "deprecated": true, - "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + } } ], "responses": { @@ -2655,7 +3235,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminCommentsResponseSchema" + "$ref": "#/components/schemas/todosListResponseSchema" } } } @@ -2681,94 +3261,46 @@ } } } - } - }, - "/api/admin/descriptions": { - "get": { - "operationId": "listAdminDescriptions", - "summary": "List descriptions", + }, + "post": { + "operationId": "createTodo", + "summary": "Create a todo", "tags": [ - "Admin" + "Todos" ], "security": [ + { + "bearerAuth": [] + }, { "sessionCookie": [] } ], - "x-auth-role": "admin", - "parameters": [ - { - "in": "query", - "name": "targetType", - "schema": { - "type": "string", - "enum": [ - "all", - "section", - "course", - "teacher", - "homework" - ] - } - }, - { - "in": "query", - "name": "hasContent", - "schema": { - "type": "string", - "enum": [ - "all", - "withContent", - "empty" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/todoCreateRequestSchema" + } } - }, - { - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "page", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 200 - }, - "description": "Number of items per page." - }, - { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 200 - }, - "deprecated": true, - "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." } - ], + }, "responses": { - "200": { + "201": { "description": "Successful response", + "headers": { + "Location": { + "description": "Relative URL of the created resource", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminDescriptionsResponseSchema" + "$ref": "#/components/schemas/idResponseSchema" } } } @@ -2792,43 +3324,64 @@ } } } + }, + "429": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } } } } }, - "/api/admin/homeworks": { + "/api/workspace/uploads": { "get": { - "operationId": "listAdminHomeworks", - "summary": "List moderation homeworks", + "operationId": "listUploads", + "summary": "List uploads", "tags": [ - "Admin" + "Uploads" ], "security": [ + { + "bearerAuth": [] + }, { "sessionCookie": [] } ], - "x-auth-role": "admin", "parameters": [ - { - "in": "query", - "name": "status", - "schema": { - "type": "string", - "enum": [ - "all", - "active", - "deleted" - ] - } - }, - { - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, { "in": "query", "name": "page", @@ -2844,7 +3397,7 @@ "type": "integer", "format": "int64", "minimum": 1, - "maximum": 200 + "maximum": 100 }, "description": "Number of items per page." }, @@ -2855,7 +3408,7 @@ "type": "integer", "format": "int64", "minimum": 1, - "maximum": 200 + "maximum": 100 }, "deprecated": true, "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." @@ -2867,7 +3420,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminHomeworksResponseSchema" + "$ref": "#/components/schemas/uploadsListResponseSchema" } } } @@ -2893,28 +3446,48 @@ } } } - } - }, - "/api/admin/suspensions": { - "get": { - "operationId": "listAdminSuspensions", - "summary": "List suspensions", + }, + "post": { + "operationId": "createUpload", + "summary": "Create a signed upload URL", "tags": [ - "Admin" + "Uploads" ], "security": [ + { + "bearerAuth": [] + }, { "sessionCookie": [] } ], - "x-auth-role": "admin", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/uploadCreateRequestSchema" + } + } + } + }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminSuspensionsResponseSchema" + "$ref": "#/components/schemas/uploadCreateResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -2928,12 +3501,260 @@ } } } + }, + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "413": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "429": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + } + } + } + }, + "/.well-known/oauth-authorization-server/api/auth": { + "get": { + "operationId": "get-.well-known-oauth-authorization-server-api-auth", + "summary": "Canonical RFC 8414 authorization server metadata for issuer `/api/auth`", + "tags": [ + "Api" + ], + "responses": { + "200": { + "description": "Response 200" } } }, - "post": { - "operationId": "createAdminSuspension", - "summary": "Create suspension for one user", + "options": { + "operationId": "options-.well-known-oauth-authorization-server-api-auth", + "summary": "Canonical RFC 8414 authorization server metadata for issuer `/api/auth`", + "tags": [ + "Api" + ], + "responses": { + "200": { + "description": "Response 200" + } + } + } + }, + "/.well-known/oauth-authorization-server/api/mcp": { + "get": { + "operationId": "get-.well-known-oauth-authorization-server-api-mcp", + "summary": "Compatibility alias for clients that probe resource-path authorization-server metadata", + "tags": [ + "Api" + ], + "responses": { + "307": { + "description": "Redirect", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + } + } + } + }, + "options": { + "operationId": "options-.well-known-oauth-authorization-server-api-mcp", + "summary": "Compatibility alias for clients that probe resource-path authorization-server metadata", + "tags": [ + "Api" + ], + "responses": { + "307": { + "description": "Redirect", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + }, + "/.well-known/oauth-protected-resource/api/graphql": { + "get": { + "operationId": "get-.well-known-oauth-protected-resource-api-graphql", + "summary": "Canonical RFC 9728 protected resource metadata for GraphQL", + "tags": [ + "Api" + ], + "responses": { + "200": { + "description": "Response 200" + } + } + }, + "options": { + "operationId": "options-.well-known-oauth-protected-resource-api-graphql", + "summary": "CORS preflight for GraphQL protected resource metadata", + "tags": [ + "Api" + ], + "responses": { + "204": { + "description": "Response 204" + } + } + } + }, + "/.well-known/oauth-protected-resource/api/mcp": { + "get": { + "operationId": "get-.well-known-oauth-protected-resource-api-mcp", + "summary": "Canonical RFC 9728 protected resource metadata for MCP", + "tags": [ + "Api" + ], + "responses": { + "200": { + "description": "Response 200" + } + } + }, + "options": { + "operationId": "options-.well-known-oauth-protected-resource-api-mcp", + "summary": "Canonical RFC 9728 protected resource metadata for MCP", + "tags": [ + "Api" + ], + "responses": { + "200": { + "description": "Response 200" + } + } + } + }, + "/.well-known/openid-configuration/api/auth": { + "get": { + "operationId": "get-.well-known-openid-configuration-api-auth", + "summary": "RFC 8414-compatible path form for OpenID provider metadata", + "tags": [ + "Api" + ], + "responses": { + "200": { + "description": "Response 200" + } + } + }, + "options": { + "operationId": "options-.well-known-openid-configuration-api-auth", + "summary": "RFC 8414-compatible path form for OpenID provider metadata", + "tags": [ + "Api" + ], + "responses": { + "200": { + "description": "Response 200" + } + } + } + }, + "/.well-known/openid-configuration/api/mcp": { + "get": { + "operationId": "get-.well-known-openid-configuration-api-mcp", + "summary": "Compatibility alias for clients that probe resource-path OIDC metadata", + "tags": [ + "Api" + ], + "responses": { + "307": { + "description": "Redirect", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + } + } + } + }, + "options": { + "operationId": "options-.well-known-openid-configuration-api-mcp", + "summary": "Compatibility alias for clients that probe resource-path OIDC metadata", + "tags": [ + "Api" + ], + "responses": { + "307": { + "description": "Redirect", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + }, + "/api/admin/comments/{id}": { + "patch": { + "operationId": "moderateAdminComment", + "summary": "Moderate one comment", "tags": [ "Admin" ], @@ -2943,31 +3764,34 @@ } ], "x-auth-role": "admin", + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminCreateSuspensionRequestSchema" + "$ref": "#/components/schemas/adminModerateCommentRequestSchema" } } } }, "responses": { - "201": { + "200": { "description": "Successful response", - "headers": { - "Location": { - "description": "Relative URL of the created resource", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminSuspensionResponseSchema" + "$ref": "#/components/schemas/adminModeratedCommentResponseSchema" } } } @@ -3053,10 +3877,10 @@ } } }, - "/api/admin/users": { - "get": { - "operationId": "listAdminUsers", - "summary": "List users", + "/api/admin/descriptions/{id}": { + "patch": { + "operationId": "updateAdminDescription", + "summary": "Update one description from moderation", "tags": [ "Admin" ], @@ -3068,51 +3892,32 @@ "x-auth-role": "admin", "parameters": [ { - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "page", - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 - }, - "description": "Number of items per page." - }, - { - "in": "query", - "name": "limit", + "in": "path", + "name": "id", "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 100 + "type": "string", + "minLength": 1 }, - "deprecated": true, - "description": "Deprecated alias for pageSize. pageSize takes precedence when both are supplied." + "required": true } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/adminModerateDescriptionRequestSchema" + } + } + } + }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminUsersResponseSchema" + "$ref": "#/components/schemas/adminModeratedDescriptionResponseSchema" } } } @@ -3136,113 +3941,38 @@ } } } - } - } - } - }, - "/api/bus/next": { - "get": { - "operationId": "get-api-bus-next", - "summary": "Get next shuttle bus departures for an origin and destination campus", - "tags": [ - "Bus" - ], - "parameters": [ - { - "in": "query", - "name": "originCampusId", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1 - }, - "required": true - }, - { - "in": "query", - "name": "destinationCampusId", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1 - }, - "required": true - }, - { - "in": "query", - "name": "atTime", - "schema": { - "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" - } - }, - { - "in": "query", - "name": "dayType", - "schema": { - "type": "string", - "enum": [ - "auto", - "weekday", - "weekend" - ] - } - }, - { - "in": "query", - "name": "includeDeparted", - "schema": { - "type": "string", - "enum": [ - "true", - "false" - ] - } - }, - { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 50 - } }, - { - "in": "query", - "name": "versionKey", - "schema": { - "type": "string", - "minLength": 1 + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } } }, - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } - } - ], - "responses": { - "200": { - "description": "Successful response", + "404": { + "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/busNextDeparturesResponseSchema" + "$ref": "#/components/schemas/openApiErrorSchema" } } } }, - "400": { + "429": { "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, "content": { "application/json": { "schema": { @@ -3251,8 +3981,17 @@ } } }, - "404": { + "503": { "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, "content": { "application/json": { "schema": { @@ -3264,28 +4003,37 @@ } } }, - "/api/bus/preferences": { - "get": { - "operationId": "getBusPreferences", - "summary": "Get bus preferences", + "/api/admin/homeworks/{id}": { + "delete": { + "operationId": "deleteAdminHomework", + "summary": "Delete one homework", "tags": [ - "Bus" + "Admin" ], "security": [ - { - "bearerAuth": [] - }, { "sessionCookie": [] } ], + "x-auth-role": "admin", + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true + } + ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/busPreferenceResponseSchema" + "$ref": "#/components/schemas/successResponseSchema" } } } @@ -3299,45 +4047,8 @@ } } } - } - } - }, - "post": { - "operationId": "setBusPreferences", - "summary": "Update bus preferences", - "tags": [ - "Bus" - ], - "security": [ - { - "bearerAuth": [] - }, - { - "sessionCookie": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/busPreferenceRequestSchema" - } - } - } - }, - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/busPreferenceResponseSchema" - } - } - } }, - "400": { + "403": { "description": "Error response", "content": { "application/json": { @@ -3347,7 +4058,7 @@ } } }, - "401": { + "404": { "description": "Error response", "content": { "application/json": { @@ -3398,123 +4109,42 @@ } } }, - "/api/bus/routes": { - "get": { - "operationId": "get-api-bus-routes", - "summary": "Search shuttle bus route variants", + "/api/admin/suspensions/{id}": { + "patch": { + "operationId": "updateAdminSuspension", + "summary": "Lift one suspension", "tags": [ - "Bus" + "Admin" ], - "parameters": [ - { - "in": "query", - "name": "originCampusId", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1 - } - }, + "security": [ { - "in": "query", - "name": "destinationCampusId", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1 - } - }, + "sessionCookie": [] + } + ], + "x-auth-role": "admin", + "parameters": [ { - "in": "query", - "name": "versionKey", + "in": "path", + "name": "id", "schema": { "type": "string", "minLength": 1 - } - }, - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/busRouteSearchResponseSchema" - } - } - } - }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - } - }, - "/api/calendar-subscriptions/batch": { - "post": { - "operationId": "batchUpdateCalendarSubscription", - "summary": "Batch update calendar section subscriptions", - "tags": [ - "Calendar" - ], - "security": [ - { - "bearerAuth": [] - }, - { - "sessionCookie": [] + }, + "required": true } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/calendarSubscriptionBatchRequestSchema" - } - } - } - }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/calendarSubscriptionBatchResponseSchema" + "$ref": "#/components/schemas/adminSuspensionResponseSchema" } } } }, - "400": { + "401": { "description": "Error response", "content": { "application/json": { @@ -3524,7 +4154,7 @@ } } }, - "401": { + "403": { "description": "Error response", "content": { "application/json": { @@ -3585,58 +4215,28 @@ } } }, - "/api/calendar-subscriptions/current": { - "get": { - "operationId": "getCurrentCalendarSubscription", - "summary": "Get section subscriptions", + "/api/admin/users/{id}": { + "patch": { + "operationId": "updateAdminUser", + "summary": "Update one user", "tags": [ - "Calendar" + "Admin" ], "security": [ - { - "bearerAuth": [] - }, { "sessionCookie": [] } ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/currentCalendarSubscriptionResponseSchema" - } - } - } - }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - } - }, - "/api/calendar-subscriptions/import-codes": { - "post": { - "operationId": "post-api-calendar-subscriptions-import-codes", - "summary": "Import section subscriptions by section codes", - "tags": [ - "Calendar" - ], - "security": [ - { - "bearerAuth": [] - }, + "x-auth-role": "admin", + "parameters": [ { - "sessionCookie": [] + "in": "path", + "name": "id", + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true } ], "requestBody": { @@ -3644,7 +4244,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/matchSectionCodesRequestSchema" + "$ref": "#/components/schemas/adminUpdateUserRequestSchema" } } } @@ -3655,7 +4255,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/calendarSubscriptionImportResponseSchema" + "$ref": "#/components/schemas/adminUserResponseSchema" } } } @@ -3680,6 +4280,16 @@ } } }, + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, "404": { "description": "Error response", "content": { @@ -3731,27 +4341,45 @@ } } }, - "/api/calendar-subscriptions/query": { - "post": { - "operationId": "queryCalendarSubscriptionSections", - "summary": "Query sections for calendar subscription changes", + "/api/auth/.well-known/openid-configuration": { + "get": { + "operationId": "get-api-auth-.well-known-openid-configuration", + "summary": "OpenID Connect discovery metadata for issuer `/api/auth`", "tags": [ - "Calendar" + "Api" ], - "security": [ - { - "bearerAuth": [] - }, - { - "sessionCookie": [] + "responses": { + "200": { + "description": "Response 200" + } + } + }, + "options": { + "operationId": "options-api-auth-.well-known-openid-configuration", + "summary": "OpenID Connect discovery metadata for issuer `/api/auth`", + "tags": [ + "Api" + ], + "responses": { + "200": { + "description": "Response 200" } + } + } + }, + "/api/auth/oauth2/device-authorization": { + "post": { + "operationId": "post-api-auth-oauth2-device-authorization", + "summary": "Start OAuth 2.0 device authorization", + "tags": [ + "Api" ], "requestBody": { "required": true, "content": { - "application/json": { + "application/x-www-form-urlencoded": { "schema": { - "$ref": "#/components/schemas/calendarSubscriptionQueryRequestSchema" + "$ref": "#/components/schemas/oauthDeviceAuthorizationRequestSchema" } } } @@ -3762,7 +4390,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/calendarSubscriptionQueryResponseSchema" + "$ref": "#/components/schemas/oauthDeviceAuthorizationResponseSchema" } } } @@ -3772,127 +4400,193 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/oauthErrorResponseSchema" } } } - }, - "404": { + } + } + }, + "options": { + "operationId": "options-api-auth-oauth2-device-authorization", + "summary": "Return OAuth device authorization CORS preflight headers", + "tags": [ + "Api" + ], + "responses": { + "204": { + "description": "Response 204" + } + } + } + }, + "/api/auth/oauth2/token": { + "get": { + "operationId": "get-api-auth-oauth2-token", + "summary": "Return method guidance for OAuth token clients", + "tags": [ + "Api" + ], + "responses": { + "405": { "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/oauthErrorResponseSchema" } } } } } - } - }, - "/api/comments/{id}": { - "get": { - "operationId": "getComment", - "summary": "Get comment thread", + }, + "post": { + "operationId": "post-api-auth-oauth2-token", + "summary": "Exchange OAuth 2.0 authorization/device/refresh grants for tokens", "tags": [ - "Comments" + "Api" ], - "parameters": [ - { - "in": "path", - "name": "id", - "schema": { - "type": "string", - "minLength": 1 - }, - "required": true + "requestBody": { + "required": true, + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/oauthTokenRequestSchema" + } + } } - ], + }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/commentThreadResponseSchema" + "$ref": "#/components/schemas/oauthTokenResponseSchema" } } } }, - "403": { + "400": { "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/oauthErrorResponseSchema" } } } }, - "404": { + "401": { "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/oauthErrorResponseSchema" } } } } } - }, - "patch": { - "operationId": "updateComment", - "summary": "Update one comment", + } + }, + "/api/catalog/bus/next": { + "get": { + "operationId": "get-api-catalog-bus-next", + "summary": "Get next shuttle bus departures for an origin and destination campus", "tags": [ - "Comments" - ], - "security": [ - { - "bearerAuth": [] - }, - { - "sessionCookie": [] - } + "Bus" ], "parameters": [ { - "in": "path", - "name": "id", + "in": "query", + "name": "originCampusId", "schema": { - "type": "string", - "minLength": 1 - }, + "type": "integer", + "format": "int64", + "minimum": 1 + }, "required": true - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/commentUpdateRequestSchema" - } + }, + { + "in": "query", + "name": "destinationCampusId", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1 + }, + "required": true + }, + { + "in": "query", + "name": "atTime", + "schema": { + "type": "string", + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" + } + }, + { + "in": "query", + "name": "dayType", + "schema": { + "type": "string", + "enum": [ + "auto", + "weekday", + "weekend" + ] + } + }, + { + "in": "query", + "name": "includeDeparted", + "schema": { + "type": "string", + "enum": [ + "true", + "false" + ] + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 50 + } + }, + { + "in": "query", + "name": "versionKey", + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] } } - }, + ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/commentUpdateResponseSchema" + "$ref": "#/components/schemas/busNextDeparturesResponseSchema" } } } @@ -3907,7 +4601,7 @@ } } }, - "401": { + "404": { "description": "Error response", "content": { "application/json": { @@ -3916,38 +4610,69 @@ } } } + } + } + } + }, + "/api/catalog/bus/routes": { + "get": { + "operationId": "get-api-bus-routes", + "summary": "Search shuttle bus route variants", + "tags": [ + "Bus" + ], + "parameters": [ + { + "in": "query", + "name": "originCampusId", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1 + } }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } + { + "in": "query", + "name": "destinationCampusId", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1 } }, - "404": { - "description": "Error response", + { + "in": "query", + "name": "versionKey", + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] + } + } + ], + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/busRouteSearchResponseSchema" } } } }, - "429": { + "400": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -3956,17 +4681,8 @@ } } }, - "503": { + "404": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -3976,30 +4692,35 @@ } } } - }, - "delete": { - "operationId": "deleteComment", - "summary": "Delete one comment", + } + }, + "/api/catalog/courses/{jwId}": { + "get": { + "operationId": "getCourse", + "summary": "Get course", "tags": [ - "Comments" - ], - "security": [ - { - "bearerAuth": [] - }, - { - "sessionCookie": [] - } + "Courses" ], "parameters": [ { "in": "path", - "name": "id", + "name": "jwId", "schema": { - "type": "string", - "minLength": 1 + "type": "integer", + "format": "int64" }, "required": true + }, + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] + } } ], "responses": { @@ -4008,12 +4729,12 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/successResponseSchema" + "$ref": "#/components/schemas/courseDetailSchema" } } } }, - "401": { + "400": { "description": "Error response", "content": { "application/json": { @@ -4023,7 +4744,7 @@ } } }, - "403": { + "404": { "description": "Error response", "content": { "application/json": { @@ -4032,28 +4753,52 @@ } } } + } + } + } + }, + "/api/catalog/sections/{jwId}": { + "get": { + "operationId": "getSection", + "summary": "Get section", + "tags": [ + "Sections" + ], + "parameters": [ + { + "in": "path", + "name": "jwId", + "schema": { + "type": "integer", + "format": "int64" + }, + "required": true }, - "404": { - "description": "Error response", + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] + } + } + ], + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/sectionDetailSchema" } } } }, - "429": { + "400": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -4062,17 +4807,8 @@ } } }, - "503": { + "404": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -4084,27 +4820,61 @@ } } }, - "/api/comments/batch": { - "delete": { - "operationId": "delete-api-comments-batch", - "summary": "Delete multiple comments owned by the current user", + "/api/catalog/sections/calendar.ics": { + "get": { + "operationId": "getSectionsCalendar", + "summary": "Generate sections calendar", "tags": [ - "Comments" + "Sections" ], - "security": [ + "parameters": [ { - "bearerAuth": [] + "in": "query", + "name": "sectionIds", + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Calendar response", + "content": { + "text/calendar": { + "schema": { + "type": "string" + } + } + } }, - { - "sessionCookie": [] + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } } + } + } + }, + "/api/catalog/sections/match-codes": { + "post": { + "operationId": "matchSectionCodes", + "summary": "Match section codes", + "tags": [ + "Sections" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/commentBatchDeleteRequestSchema" + "$ref": "#/components/schemas/matchSectionCodesRequestSchema" } } } @@ -4115,7 +4885,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/commentBatchDeleteResponseSchema" + "$ref": "#/components/schemas/matchSectionCodesResponseSchema" } } } @@ -4130,17 +4900,7 @@ } } }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "403": { + "404": { "description": "Error response", "content": { "application/json": { @@ -4149,37 +4909,30 @@ } } } - }, - "429": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, + } + } + } + }, + "/api/catalog/semesters/current": { + "get": { + "operationId": "getCurrentSemester", + "summary": "Get current semester", + "tags": [ + "Semesters" + ], + "responses": { + "200": { + "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/semesterSchema" } } } }, - "503": { + "404": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -4191,17 +4944,17 @@ } } }, - "/api/courses/{jwId}": { + "/api/catalog/teachers/{id}": { "get": { - "operationId": "getCourse", - "summary": "Get course", + "operationId": "getTeacher", + "summary": "Get teacher", "tags": [ - "Courses" + "Teachers" ], "parameters": [ { "in": "path", - "name": "jwId", + "name": "id", "schema": { "type": "integer", "format": "int64" @@ -4226,7 +4979,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/courseDetailSchema" + "$ref": "#/components/schemas/teacherDetailSchema" } } } @@ -4254,12 +5007,62 @@ } } }, - "/api/dashboard-links/pin": { - "post": { - "operationId": "pinDashboardLink", - "summary": "Pin dashboard link", + "/api/community/comments/{id}": { + "get": { + "operationId": "getComment", + "summary": "Get comment thread", "tags": [ - "DashboardLinks" + "Comments" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/commentThreadResponseSchema" + } + } + } + }, + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + } + } + }, + "patch": { + "operationId": "updateComment", + "summary": "Update one comment", + "tags": [ + "Comments" ], "security": [ { @@ -4269,12 +5072,23 @@ "sessionCookie": [] } ], + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true + } + ], "requestBody": { "required": true, "content": { - "application/x-www-form-urlencoded": { + "application/json": { "schema": { - "$ref": "#/components/schemas/dashboardLinkPinRequestSchema" + "$ref": "#/components/schemas/commentUpdateRequestSchema" } } } @@ -4285,38 +5099,47 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" + "$ref": "#/components/schemas/commentUpdateResponseSchema" } } } }, - "303": { - "description": "Redirect after pin/unpin", - "headers": { - "Location": { - "description": "Redirect target URL", + "400": { + "description": "Error response", + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/openApiErrorSchema" } } } }, - "400": { + "401": { "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" + "$ref": "#/components/schemas/openApiErrorSchema" } } } }, - "401": { + "403": { "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -4340,16 +5163,6 @@ } } }, - "500": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" - } - } - } - }, "503": { "description": "Error response", "headers": { @@ -4370,19 +5183,25 @@ } } } - } - }, - "/api/dashboard-links/visit": { - "get": { - "operationId": "visitDashboardLink", - "summary": "Preview dashboard link", + }, + "delete": { + "operationId": "deleteComment", + "summary": "Delete one comment", "tags": [ - "DashboardLinks" + "Comments" + ], + "security": [ + { + "bearerAuth": [] + }, + { + "sessionCookie": [] + } ], "parameters": [ { - "in": "query", - "name": "slug", + "in": "path", + "name": "id", "schema": { "type": "string", "minLength": 1 @@ -4391,43 +5210,187 @@ } ], "responses": { - "307": { - "description": "Temporary redirect to target link", + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/successResponseSchema" + } + } + } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "429": { + "description": "Error response", "headers": { - "Location": { - "description": "Redirect target URL", + "Retry-After": { + "description": "Seconds before retrying the mutation", "schema": { - "type": "string" + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } } } - }, - "post": { - "operationId": "recordDashboardLinkVisit", - "summary": "Record one dashboard link visit and redirect", + } + }, + "/api/community/comments/batch": { + "delete": { + "operationId": "delete-api-comments-batch", + "summary": "Delete multiple comments owned by the current user", "tags": [ - "DashboardLinks" + "Comments" + ], + "security": [ + { + "bearerAuth": [] + }, + { + "sessionCookie": [] + } ], "requestBody": { "required": true, "content": { - "application/x-www-form-urlencoded": { + "application/json": { "schema": { - "$ref": "#/components/schemas/dashboardLinkVisitRequestSchema" + "$ref": "#/components/schemas/commentBatchDeleteRequestSchema" } } } }, "responses": { - "303": { - "description": "Redirect after recording link click", + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/commentBatchDeleteResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "429": { + "description": "Error response", "headers": { - "Location": { - "description": "Redirect target URL", + "Retry-After": { + "description": "Seconds before retrying the mutation", "schema": { - "type": "string" + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -4435,7 +5398,7 @@ } } }, - "/api/homeworks/{id}": { + "/api/community/homeworks/{id}": { "patch": { "operationId": "updateHomework", "summary": "Update one homework", @@ -4669,7 +5632,91 @@ } } }, - "/api/homeworks/completions": { + "/api/mcp/.well-known/oauth-authorization-server": { + "get": { + "operationId": "get-api-mcp-.well-known-oauth-authorization-server", + "summary": "MCP resource-relative authorization server metadata compatibility alias", + "tags": [ + "Api" + ], + "responses": { + "307": { + "description": "Redirect", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + } + } + } + }, + "options": { + "operationId": "options-api-mcp-.well-known-oauth-authorization-server", + "summary": "MCP resource-relative authorization server metadata compatibility alias", + "tags": [ + "Api" + ], + "responses": { + "307": { + "description": "Redirect", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + }, + "/api/mcp/.well-known/openid-configuration": { + "get": { + "operationId": "get-api-mcp-.well-known-openid-configuration", + "summary": "MCP resource-relative OpenID discovery compatibility alias", + "tags": [ + "Api" + ], + "responses": { + "307": { + "description": "Redirect", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + } + } + } + }, + "options": { + "operationId": "options-api-mcp-.well-known-openid-configuration", + "summary": "MCP resource-relative OpenID discovery compatibility alias", + "tags": [ + "Api" + ], + "responses": { + "307": { + "description": "Redirect", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + }, + "/api/workspace/homeworks/completions": { "put": { "operationId": "put-api-homeworks-completions", "summary": "Update homework completions in a batch", @@ -4766,12 +5813,12 @@ } } }, - "/api/me/overview": { - "get": { - "operationId": "get-api-me-overview", - "summary": "Get a compact current-user overview for lightweight clients", + "/api/workspace/links/pin": { + "post": { + "operationId": "pinDashboardLink", + "summary": "Pin dashboard link", "tags": [ - "Me" + "DashboardLinks" ], "security": [ { @@ -4781,55 +5828,34 @@ "sessionCookie": [] } ], - "parameters": [ - { - "in": "query", - "name": "atTime", - "schema": { - "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" - } - }, - { - "in": "query", - "name": "homeworkWindowDays", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 90 - } - }, - { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 50 - } - }, - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] + "requestBody": { + "required": true, + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/dashboardLinkPinRequestSchema" + } } } - ], + }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/compactOverviewResponseSchema" + "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" + } + } + } + }, + "303": { + "description": "Redirect after pin/unpin", + "headers": { + "Location": { + "description": "Redirect target URL", + "schema": { + "type": "string" } } } @@ -4839,7 +5865,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" } } } @@ -4849,66 +5875,51 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" } } } - } - } - } - }, - "/api/sections/{jwId}": { - "get": { - "operationId": "getSection", - "summary": "Get section", - "tags": [ - "Sections" - ], - "parameters": [ - { - "in": "path", - "name": "jwId", - "schema": { - "type": "integer", - "format": "int64" - }, - "required": true }, - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } - } - ], - "responses": { - "200": { - "description": "Successful response", + "429": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/sectionDetailSchema" + "$ref": "#/components/schemas/openApiErrorSchema" } } } }, - "400": { + "500": { "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" } } } }, - "404": { + "503": { "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, "content": { "application/json": { "schema": { @@ -4920,17 +5931,17 @@ } } }, - "/api/sections/calendar.ics": { + "/api/workspace/links/visit": { "get": { - "operationId": "getSectionsCalendar", - "summary": "Generate sections calendar", + "operationId": "visitDashboardLink", + "summary": "Preview dashboard link", "tags": [ - "Sections" + "DashboardLinks" ], "parameters": [ { "in": "query", - "name": "sectionIds", + "name": "slug", "schema": { "type": "string", "minLength": 1 @@ -4939,22 +5950,43 @@ } ], "responses": { - "200": { - "description": "Calendar response", - "content": { - "text/calendar": { + "307": { + "description": "Temporary redirect to target link", + "headers": { + "Location": { + "description": "Redirect target URL", "schema": { "type": "string" } } } - }, - "400": { - "description": "Error response", - "content": { - "application/json": { + } + } + }, + "post": { + "operationId": "recordDashboardLinkVisit", + "summary": "Record one dashboard link visit and redirect", + "tags": [ + "DashboardLinks" + ], + "requestBody": { + "required": true, + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/dashboardLinkVisitRequestSchema" + } + } + } + }, + "responses": { + "303": { + "description": "Redirect after recording link click", + "headers": { + "Location": { + "description": "Redirect target URL", "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "type": "string" } } } @@ -4962,19 +5994,27 @@ } } }, - "/api/sections/match-codes": { + "/api/workspace/subscriptions/batch": { "post": { - "operationId": "matchSectionCodes", - "summary": "Match section codes", + "operationId": "batchUpdateCalendarSubscription", + "summary": "Batch update calendar section subscriptions", "tags": [ - "Sections" + "Calendar" + ], + "security": [ + { + "bearerAuth": [] + }, + { + "sessionCookie": [] + } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/matchSectionCodesRequestSchema" + "$ref": "#/components/schemas/calendarSubscriptionBatchRequestSchema" } } } @@ -4985,7 +6025,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/matchSectionCodesResponseSchema" + "$ref": "#/components/schemas/calendarSubscriptionBatchResponseSchema" } } } @@ -5000,7 +6040,7 @@ } } }, - "404": { + "401": { "description": "Error response", "content": { "application/json": { @@ -5009,30 +6049,28 @@ } } } - } - } - } - }, - "/api/semesters/current": { - "get": { - "operationId": "getCurrentSemester", - "summary": "Get current semester", - "tags": [ - "Semesters" - ], - "responses": { - "200": { - "description": "Successful response", + }, + "404": { + "description": "Error response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/semesterSchema" + "$ref": "#/components/schemas/openApiErrorSchema" } } } }, - "404": { + "429": { "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, "content": { "application/json": { "schema": { @@ -5040,37 +6078,42 @@ } } } - } - } - } - }, - "/api/teachers/{id}": { - "get": { - "operationId": "getTeacher", - "summary": "Get teacher", + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + } + } + } + }, + "/api/workspace/subscriptions/current": { + "get": { + "operationId": "getCurrentCalendarSubscription", + "summary": "Get section subscriptions", "tags": [ - "Teachers" + "Calendar" ], - "parameters": [ + "security": [ { - "in": "path", - "name": "id", - "schema": { - "type": "integer", - "format": "int64" - }, - "required": true + "bearerAuth": [] }, { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } + "sessionCookie": [] } ], "responses": { @@ -5079,22 +6122,12 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/teacherDetailSchema" - } - } - } - }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/currentCalendarSubscriptionResponseSchema" } } } }, - "404": { + "401": { "description": "Error response", "content": { "application/json": { @@ -5107,12 +6140,12 @@ } } }, - "/api/todos/{id}": { - "patch": { - "operationId": "updateTodo", - "summary": "Update one todo", + "/api/workspace/subscriptions/import-codes": { + "post": { + "operationId": "post-api-workspace-subscriptions-import-codes", + "summary": "Import section subscriptions by section codes", "tags": [ - "Todos" + "Calendar" ], "security": [ { @@ -5122,23 +6155,12 @@ "sessionCookie": [] } ], - "parameters": [ - { - "in": "path", - "name": "id", - "schema": { - "type": "string", - "minLength": 1 - }, - "required": true - } - ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/todoUpdateRequestSchema" + "$ref": "#/components/schemas/matchSectionCodesRequestSchema" } } } @@ -5149,7 +6171,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/todoUpdateResponseSchema" + "$ref": "#/components/schemas/calendarSubscriptionImportResponseSchema" } } } @@ -5174,16 +6196,6 @@ } } }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, "404": { "description": "Error response", "content": { @@ -5233,10 +6245,81 @@ } } } - }, - "delete": { - "operationId": "deleteTodo", - "summary": "Delete one todo", + } + }, + "/api/workspace/subscriptions/query": { + "post": { + "operationId": "queryCalendarSubscriptionSections", + "summary": "Query sections for calendar subscription changes", + "tags": [ + "Calendar" + ], + "security": [ + { + "bearerAuth": [] + }, + { + "sessionCookie": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendarSubscriptionQueryRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendarSubscriptionQueryResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + } + } + } + }, + "/api/workspace/todos/{id}": { + "patch": { + "operationId": "updateTodo", + "summary": "Update one todo", "tags": [ "Todos" ], @@ -5259,13 +6342,33 @@ "required": true } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/todoUpdateRequestSchema" + } + } + } + }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/successResponseSchema" + "$ref": "#/components/schemas/todoUpdateResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -5339,12 +6442,10 @@ } } } - } - }, - "/api/todos/batch": { - "patch": { - "operationId": "patch-api-todos-batch", - "summary": "Update completion state for multiple todos", + }, + "delete": { + "operationId": "deleteTodo", + "summary": "Delete one todo", "tags": [ "Todos" ], @@ -5356,28 +6457,29 @@ "sessionCookie": [] } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/todoCompletionBatchRequestSchema" - } - } + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true } - }, + ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/todoCompletionBatchResponseSchema" + "$ref": "#/components/schemas/successResponseSchema" } } } }, - "400": { + "401": { "description": "Error response", "content": { "application/json": { @@ -5387,7 +6489,17 @@ } } }, - "401": { + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "404": { "description": "Error response", "content": { "application/json": { @@ -5436,10 +6548,12 @@ } } } - }, - "delete": { - "operationId": "delete-api-todos-batch", - "summary": "Delete multiple todos by id", + } + }, + "/api/workspace/todos/batch": { + "patch": { + "operationId": "patch-api-todos-batch", + "summary": "Update completion state for multiple todos", "tags": [ "Todos" ], @@ -5456,7 +6570,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/todoBatchDeleteRequestSchema" + "$ref": "#/components/schemas/todoCompletionBatchRequestSchema" } } } @@ -5467,7 +6581,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/todoBatchDeleteResponseSchema" + "$ref": "#/components/schemas/todoCompletionBatchResponseSchema" } } } @@ -5531,14 +6645,12 @@ } } } - } - }, - "/api/uploads/{id}": { - "patch": { - "operationId": "updateUpload", - "summary": "Rename one upload", + }, + "delete": { + "operationId": "delete-api-todos-batch", + "summary": "Delete multiple todos by id", "tags": [ - "Uploads" + "Todos" ], "security": [ { @@ -5548,23 +6660,12 @@ "sessionCookie": [] } ], - "parameters": [ - { - "in": "path", - "name": "id", - "schema": { - "type": "string", - "minLength": 1 - }, - "required": true - } - ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/uploadRenameRequestSchema" + "$ref": "#/components/schemas/todoBatchDeleteRequestSchema" } } } @@ -5575,7 +6676,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/uploadRenameResponseSchema" + "$ref": "#/components/schemas/todoBatchDeleteResponseSchema" } } } @@ -5600,26 +6701,134 @@ } } }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, + "429": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "503": { + "description": "Error response", + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", + "schema": { + "type": "integer", + "minimum": 0 + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + } + } + } + }, + "/api/workspace/uploads/{id}": { + "patch": { + "operationId": "updateUpload", + "summary": "Rename one upload", + "tags": [ + "Uploads" + ], + "security": [ + { + "bearerAuth": [] + }, + { + "sessionCookie": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/uploadRenameRequestSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/uploadRenameResponseSchema" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "401": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "403": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, "429": { "description": "Error response", "headers": { @@ -5777,7 +6986,7 @@ } } }, - "/api/uploads/complete": { + "/api/workspace/uploads/complete": { "post": { "operationId": "completeUpload", "summary": "Complete upload", @@ -5884,7 +7093,7 @@ } } }, - "/api/uploads/object": { + "/api/workspace/uploads/object": { "put": { "operationId": "put-api-uploads-object", "summary": "Write upload object", @@ -6013,48 +7222,31 @@ } } }, - "/api/users/profile": { + "/api/catalog/sections/{jwId}/calendar.ics": { "get": { - "operationId": "get-api-users-profile", - "summary": "Get public user profile", + "operationId": "getSectionCalendar", + "summary": "Generate section calendar", "tags": [ - "Api" + "Sections" ], "parameters": [ { - "in": "query", - "name": "username", - "schema": { - "type": "string", - "minLength": 1 - } - }, - { - "in": "query", - "name": "userId", + "in": "path", + "name": "jwId", "schema": { - "type": "string", - "minLength": 1 - } + "type": "integer", + "format": "int64" + }, + "required": true } ], "responses": { "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/publicUserProfileResponseSchema" - } - } - } - }, - "400": { - "description": "Error response", + "description": "Calendar response", "content": { - "application/json": { + "text/calendar": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "type": "string" } } } @@ -6072,67 +7264,55 @@ } } }, - "/.well-known/oauth-authorization-server/api/auth": { + "/api/catalog/sections/{jwId}/schedule-groups": { "get": { - "operationId": "get-.well-known-oauth-authorization-server-api-auth", - "summary": "Canonical RFC 8414 authorization server metadata for issuer `/api/auth`", + "operationId": "getSectionScheduleGroups", + "summary": "Get schedule groups", "tags": [ - "Api" + "Sections" ], - "responses": { - "200": { - "description": "Response 200" + "parameters": [ + { + "in": "path", + "name": "jwId", + "schema": { + "type": "integer", + "format": "int64" + }, + "required": true + }, + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] + } } - } - }, - "options": { - "operationId": "options-.well-known-oauth-authorization-server-api-auth", - "summary": "Canonical RFC 8414 authorization server metadata for issuer `/api/auth`", - "tags": [ - "Api" ], "responses": { "200": { - "description": "Response 200" - } - } - } - }, - "/.well-known/oauth-authorization-server/api/mcp": { - "get": { - "operationId": "get-.well-known-oauth-authorization-server-api-mcp", - "summary": "Compatibility alias for clients that probe resource-path authorization-server metadata", - "tags": [ - "Api" - ], - "responses": { - "307": { - "description": "Redirect", - "headers": { - "Location": { + "description": "Array response", + "content": { + "application/json": { "schema": { - "type": "string", - "format": "uri" + "type": "array", + "items": { + "type": "object" + } } } } - } - } - }, - "options": { - "operationId": "options-.well-known-oauth-authorization-server-api-mcp", - "summary": "Compatibility alias for clients that probe resource-path authorization-server metadata", - "tags": [ - "Api" - ], - "responses": { - "307": { - "description": "Redirect", - "headers": { - "Location": { + }, + "404": { + "description": "Error response", + "content": { + "application/json": { "schema": { - "type": "string", - "format": "uri" + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -6140,119 +7320,93 @@ } } }, - "/.well-known/oauth-protected-resource/api/graphql": { - "get": { - "operationId": "get-.well-known-oauth-protected-resource-api-graphql", - "summary": "Canonical RFC 9728 protected resource metadata for GraphQL", - "tags": [ - "Api" - ], - "responses": { - "200": { - "description": "Response 200" - } - } - }, - "options": { - "operationId": "options-.well-known-oauth-protected-resource-api-graphql", - "summary": "CORS preflight for GraphQL protected resource metadata", - "tags": [ - "Api" - ], - "responses": { - "204": { - "description": "Response 204" - } - } - } - }, - "/.well-known/oauth-protected-resource/api/mcp": { - "get": { - "operationId": "get-.well-known-oauth-protected-resource-api-mcp", - "summary": "Canonical RFC 9728 protected resource metadata for MCP", - "tags": [ - "Api" - ], - "responses": { - "200": { - "description": "Response 200" - } - } - }, - "options": { - "operationId": "options-.well-known-oauth-protected-resource-api-mcp", - "summary": "Canonical RFC 9728 protected resource metadata for MCP", - "tags": [ - "Api" - ], - "responses": { - "200": { - "description": "Response 200" - } - } - } - }, - "/.well-known/openid-configuration/api/auth": { + "/api/catalog/sections/{jwId}/schedules": { "get": { - "operationId": "get-.well-known-openid-configuration-api-auth", - "summary": "RFC 8414-compatible path form for OpenID provider metadata", + "operationId": "getSectionSchedules", + "summary": "Get section schedules", "tags": [ - "Api" + "Sections" ], - "responses": { - "200": { - "description": "Response 200" + "parameters": [ + { + "in": "path", + "name": "jwId", + "schema": { + "type": "integer", + "format": "int64" + }, + "required": true + }, + { + "in": "query", + "name": "locale", + "schema": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] + } + }, + { + "in": "query", + "name": "dateFrom", + "schema": { + "type": "string", + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" + } + }, + { + "in": "query", + "name": "dateTo", + "schema": { + "type": "string", + "minLength": 1, + "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "format": "int64", + "minimum": 1, + "maximum": 200 + } } - } - }, - "options": { - "operationId": "options-.well-known-openid-configuration-api-auth", - "summary": "RFC 8414-compatible path form for OpenID provider metadata", - "tags": [ - "Api" ], "responses": { "200": { - "description": "Response 200" - } - } - } - }, - "/.well-known/openid-configuration/api/mcp": { - "get": { - "operationId": "get-.well-known-openid-configuration-api-mcp", - "summary": "Compatibility alias for clients that probe resource-path OIDC metadata", - "tags": [ - "Api" - ], - "responses": { - "307": { - "description": "Redirect", - "headers": { - "Location": { + "description": "Array response", + "content": { + "application/json": { "schema": { - "type": "string", - "format": "uri" + "type": "array", + "items": { + "type": "object" + } } } } - } - } - }, - "options": { - "operationId": "options-.well-known-openid-configuration-api-mcp", - "summary": "Compatibility alias for clients that probe resource-path OIDC metadata", - "tags": [ - "Api" - ], - "responses": { - "307": { - "description": "Redirect", - "headers": { - "Location": { + }, + "400": { + "description": "Error response", + "content": { + "application/json": { "schema": { - "type": "string", - "format": "uri" + "$ref": "#/components/schemas/openApiErrorSchema" + } + } + } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/openApiErrorSchema" } } } @@ -6260,19 +7414,21 @@ } } }, - "/api/admin/comments/{id}": { - "patch": { - "operationId": "moderateAdminComment", - "summary": "Moderate one comment", + "/api/community/comments/{id}/reactions": { + "post": { + "operationId": "addCommentReaction", + "summary": "Add one reaction to a comment", "tags": [ - "Admin" + "Comments" ], "security": [ + { + "bearerAuth": [] + }, { "sessionCookie": [] } ], - "x-auth-role": "admin", "parameters": [ { "in": "path", @@ -6289,7 +7445,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminModerateCommentRequestSchema" + "$ref": "#/components/schemas/commentReactionRequestSchema" } } } @@ -6300,7 +7456,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminModeratedCommentResponseSchema" + "$ref": "#/components/schemas/successResponseSchema" } } } @@ -6384,21 +7540,21 @@ } } } - } - }, - "/api/admin/descriptions/{id}": { - "patch": { - "operationId": "updateAdminDescription", - "summary": "Update one description from moderation", + }, + "delete": { + "operationId": "removeCommentReaction", + "summary": "Remove one reaction from a comment", "tags": [ - "Admin" + "Comments" ], "security": [ + { + "bearerAuth": [] + }, { "sessionCookie": [] } ], - "x-auth-role": "admin", "parameters": [ { "in": "path", @@ -6408,25 +7564,33 @@ "minLength": 1 }, "required": true + }, + { + "in": "query", + "name": "type", + "schema": { + "type": "string", + "enum": [ + "upvote", + "downvote", + "heart", + "laugh", + "hooray", + "confused", + "rocket", + "eyes" + ] + }, + "required": true } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/adminModerateDescriptionRequestSchema" - } - } - } - }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminModeratedDescriptionResponseSchema" + "$ref": "#/components/schemas/successResponseSchema" } } } @@ -6461,16 +7625,6 @@ } } }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, "429": { "description": "Error response", "headers": { @@ -6512,143 +7666,54 @@ } } }, - "/api/admin/homeworks/{id}": { - "delete": { - "operationId": "deleteAdminHomework", - "summary": "Delete one homework", + "/api/community/users/{userId}/calendar.ics": { + "get": { + "operationId": "getUserCalendar", + "summary": "Generate user calendar", "tags": [ - "Admin" + "Calendar" ], "security": [ + { + "bearerAuth": [] + }, { "sessionCookie": [] + }, + { + "calendarFeedToken": [] } ], - "x-auth-role": "admin", "parameters": [ { "in": "path", - "name": "id", + "name": "userId", "schema": { "type": "string", - "minLength": 1 - }, - "required": true - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/successResponseSchema" - } - } - } - }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "429": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } + "minLength": 1, + "description": "User ID. Token-bearing feed URLs may also use the userId:token path segment form." }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } + "required": true, + "description": "User ID. Token-bearing feed URLs may also use the userId:token path segment form." }, - "503": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - } - }, - "/api/admin/suspensions/{id}": { - "patch": { - "operationId": "updateAdminSuspension", - "summary": "Lift one suspension", - "tags": [ - "Admin" - ], - "security": [ - { - "sessionCookie": [] - } - ], - "x-auth-role": "admin", - "parameters": [ { - "in": "path", - "name": "id", + "in": "query", + "name": "token", "schema": { + "description": "Calendar feed token for anonymous personal iCal access.", "type": "string", "minLength": 1 }, - "required": true + "description": "Calendar feed token for anonymous personal iCal access." } ], "responses": { "200": { - "description": "Successful response", + "description": "Calendar response", "content": { - "application/json": { + "text/calendar": { "schema": { - "$ref": "#/components/schemas/adminSuspensionResponseSchema" + "type": "string" } } } @@ -6682,61 +7747,25 @@ } } } - }, - "429": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "503": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } } } } }, - "/api/admin/users/{id}": { - "patch": { - "operationId": "updateAdminUser", - "summary": "Update one user", + "/api/workspace/homeworks/{id}/completion": { + "put": { + "operationId": "setHomeworkCompletion", + "summary": "Update homework completion", "tags": [ - "Admin" + "Homeworks" ], "security": [ + { + "bearerAuth": [] + }, { "sessionCookie": [] } ], - "x-auth-role": "admin", "parameters": [ { "in": "path", @@ -6753,7 +7782,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminUpdateUserRequestSchema" + "$ref": "#/components/schemas/homeworkCompletionRequestSchema" } } } @@ -6764,7 +7793,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/adminUserResponseSchema" + "$ref": "#/components/schemas/homeworkCompletionResponseSchema" } } } @@ -6789,16 +7818,6 @@ } } }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, "404": { "description": "Error response", "content": { @@ -6850,161 +7869,12 @@ } } }, - "/api/auth/.well-known/openid-configuration": { - "get": { - "operationId": "get-api-auth-.well-known-openid-configuration", - "summary": "OpenID Connect discovery metadata for issuer `/api/auth`", - "tags": [ - "Api" - ], - "responses": { - "200": { - "description": "Response 200" - } - } - }, - "options": { - "operationId": "options-api-auth-.well-known-openid-configuration", - "summary": "OpenID Connect discovery metadata for issuer `/api/auth`", - "tags": [ - "Api" - ], - "responses": { - "200": { - "description": "Response 200" - } - } - } - }, - "/api/auth/oauth2/device-authorization": { - "post": { - "operationId": "post-api-auth-oauth2-device-authorization", - "summary": "Start OAuth 2.0 device authorization", - "tags": [ - "Api" - ], - "requestBody": { - "required": true, - "content": { - "application/x-www-form-urlencoded": { - "schema": { - "$ref": "#/components/schemas/oauthDeviceAuthorizationRequestSchema" - } - } - } - }, - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/oauthDeviceAuthorizationResponseSchema" - } - } - } - }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/oauthErrorResponseSchema" - } - } - } - } - } - }, - "options": { - "operationId": "options-api-auth-oauth2-device-authorization", - "summary": "Return OAuth device authorization CORS preflight headers", - "tags": [ - "Api" - ], - "responses": { - "204": { - "description": "Response 204" - } - } - } - }, - "/api/auth/oauth2/token": { - "get": { - "operationId": "get-api-auth-oauth2-token", - "summary": "Return method guidance for OAuth token clients", - "tags": [ - "Api" - ], - "responses": { - "405": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/oauthErrorResponseSchema" - } - } - } - } - } - }, - "post": { - "operationId": "post-api-auth-oauth2-token", - "summary": "Exchange OAuth 2.0 authorization/device/refresh grants for tokens", - "tags": [ - "Api" - ], - "requestBody": { - "required": true, - "content": { - "application/x-www-form-urlencoded": { - "schema": { - "$ref": "#/components/schemas/oauthTokenRequestSchema" - } - } - } - }, - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/oauthTokenResponseSchema" - } - } - } - }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/oauthErrorResponseSchema" - } - } - } - }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/oauthErrorResponseSchema" - } - } - } - } - } - } - }, - "/api/comments/{id}/reactions": { + "/api/workspace/links/pin/batch": { "post": { - "operationId": "addCommentReaction", - "summary": "Add one reaction to a comment", + "operationId": "post-api-workspace-links-pin-batch", + "summary": "Pin or unpin multiple dashboard links in one request", "tags": [ - "Comments" + "DashboardLinks" ], "security": [ { @@ -7014,23 +7884,12 @@ "sessionCookie": [] } ], - "parameters": [ - { - "in": "path", - "name": "id", - "schema": { - "type": "string", - "minLength": 1 - }, - "required": true - } - ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/commentReactionRequestSchema" + "$ref": "#/components/schemas/dashboardLinkPinBatchRequestSchema" } } } @@ -7041,7 +7900,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/successResponseSchema" + "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" } } } @@ -7051,7 +7910,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" } } } @@ -7066,18 +7925,17 @@ } } }, - "403": { + "429": { "description": "Error response", - "content": { - "application/json": { + "headers": { + "Retry-After": { + "description": "Seconds before retrying the mutation", "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "type": "integer", + "minimum": 0 } } - } - }, - "404": { - "description": "Error response", + }, "content": { "application/json": { "schema": { @@ -7086,21 +7944,12 @@ } } }, - "429": { + "500": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" } } } @@ -7125,12 +7974,14 @@ } } } - }, - "delete": { - "operationId": "removeCommentReaction", - "summary": "Remove one reaction from a comment", + } + }, + "/api/workspace/uploads/{id}/download": { + "get": { + "operationId": "downloadUpload", + "summary": "Download upload", "tags": [ - "Comments" + "Uploads" ], "security": [ { @@ -7149,43 +8000,16 @@ "minLength": 1 }, "required": true - }, - { - "in": "query", - "name": "type", - "schema": { - "type": "string", - "enum": [ - "upvote", - "downvote", - "heart", - "laugh", - "hooray", - "confused", - "rocket", - "eyes" - ] - }, - "required": true } ], "responses": { "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/successResponseSchema" - } - } - } - }, - "400": { - "description": "Error response", + "description": "Binary response", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "type": "string", + "format": "binary" } } } @@ -7200,46 +8024,8 @@ } } }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "429": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "503": { + "404": { "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } - } - }, "content": { "application/json": { "schema": { @@ -7250,880 +8036,683 @@ } } } - }, - "/api/dashboard-links/pin/batch": { - "post": { - "operationId": "post-api-dashboard-links-pin-batch", - "summary": "Pin or unpin multiple dashboard links in one request", - "tags": [ - "DashboardLinks" - ], - "security": [ - { - "bearerAuth": [] + } + }, + "components": { + "schemas": { + "__schema0": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - { - "sessionCookie": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/dashboardLinkPinBatchRequestSchema" - } - } - } - }, - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" - } - } - } + "body": { + "type": "string" }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" - } - } - } + "renderedBody": { + "type": "string" }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } + "visibility": { + "type": "string" }, - "429": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { - "type": "integer", - "minimum": 0 - } + "status": { + "type": "string" + }, + "author": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + }, + "isUstcVerified": { + "type": "boolean" + }, + "isAdmin": { + "type": "boolean" + }, + "isGuest": { + "type": "boolean" } }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } + "required": [ + "name", + "isUstcVerified", + "isAdmin", + "isGuest" + ] + }, + "authorHidden": { + "type": "boolean" + }, + "isAnonymous": { + "type": "boolean" + }, + "isAuthor": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "parentId": { + "nullable": true, + "type": "string" + }, + "rootId": { + "nullable": true, + "type": "string" + }, + "replies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/__schema0" } }, - "500": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/dashboardLinkPinResponseSchema" + "attachments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "uploadId": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "url": { + "type": "string" + }, + "contentType": { + "nullable": true, + "type": "string" + }, + "size": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 } - } + }, + "required": [ + "id", + "uploadId", + "filename", + "url", + "contentType", + "size" + ] } }, - "503": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { + "reactions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "count": { "type": "integer", - "minimum": 0 - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "minimum": 0, + "maximum": 9007199254740991 + }, + "viewerHasReacted": { + "type": "boolean" } - } + }, + "required": [ + "type", + "count", + "viewerHasReacted" + ] } - } - } - } - }, - "/api/homeworks/{id}/completion": { - "put": { - "operationId": "setHomeworkCompletion", - "summary": "Update homework completion", - "tags": [ - "Homeworks" - ], - "security": [ - { - "bearerAuth": [] }, - { - "sessionCookie": [] - } - ], - "parameters": [ - { - "in": "path", - "name": "id", - "schema": { - "type": "string", - "minLength": 1 - }, - "required": true + "canReact": { + "type": "boolean" + }, + "canReply": { + "type": "boolean" + }, + "canEdit": { + "type": "boolean" + }, + "canDelete": { + "type": "boolean" + }, + "canModerate": { + "type": "boolean" } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/homeworkCompletionRequestSchema" - } - } + }, + "required": [ + "id", + "body", + "renderedBody", + "visibility", + "status", + "author", + "authorHidden", + "isAnonymous", + "isAuthor", + "createdAt", + "updatedAt", + "parentId", + "rootId", + "replies", + "attachments", + "reactions", + "canReact", + "canReply", + "canEdit", + "canDelete", + "canModerate" + ] + }, + "semesterSchema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "code": { + "type": "string" + }, + "startDate": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "endDate": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/homeworkCompletionResponseSchema" - } - } - } + "required": [ + "id", + "jwId", + "nameCn", + "code", + "startDate", + "endDate" + ] + }, + "__schema1": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } + "body": { + "type": "string" }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } + "renderedBody": { + "type": "string" }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } + "visibility": { + "type": "string" + }, + "status": { + "type": "string" + }, + "author": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + }, + "isUstcVerified": { + "type": "boolean" + }, + "isAdmin": { + "type": "boolean" + }, + "isGuest": { + "type": "boolean" } + }, + "required": [ + "name", + "isUstcVerified", + "isAdmin", + "isGuest" + ], + "additionalProperties": false + }, + "authorHidden": { + "type": "boolean" + }, + "isAnonymous": { + "type": "boolean" + }, + "isAuthor": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "parentId": { + "nullable": true, + "type": "string" + }, + "rootId": { + "nullable": true, + "type": "string" + }, + "replies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/__schema1" } }, - "429": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { + "attachments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "uploadId": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "url": { + "type": "string" + }, + "contentType": { + "nullable": true, + "type": "string" + }, + "size": { "type": "integer", - "minimum": 0 - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "minimum": -9007199254740991, + "maximum": 9007199254740991 } - } + }, + "required": [ + "id", + "uploadId", + "filename", + "url", + "contentType", + "size" + ], + "additionalProperties": false } }, - "503": { - "description": "Error response", - "headers": { - "Retry-After": { - "description": "Seconds before retrying the mutation", - "schema": { + "reactions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "count": { "type": "integer", - "minimum": 0 - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "minimum": 0, + "maximum": 9007199254740991 + }, + "viewerHasReacted": { + "type": "boolean" } - } + }, + "required": [ + "type", + "count", + "viewerHasReacted" + ], + "additionalProperties": false } + }, + "canReact": { + "type": "boolean" + }, + "canReply": { + "type": "boolean" + }, + "canEdit": { + "type": "boolean" + }, + "canDelete": { + "type": "boolean" + }, + "canModerate": { + "type": "boolean" } - } - } - }, - "/api/mcp/.well-known/oauth-authorization-server": { - "get": { - "operationId": "get-api-mcp-.well-known-oauth-authorization-server", - "summary": "MCP resource-relative authorization server metadata compatibility alias", - "tags": [ - "Api" - ], - "responses": { - "307": { - "description": "Redirect", - "headers": { - "Location": { - "schema": { - "type": "string", - "format": "uri" - } - } - } - } - } - }, - "options": { - "operationId": "options-api-mcp-.well-known-oauth-authorization-server", - "summary": "MCP resource-relative authorization server metadata compatibility alias", - "tags": [ - "Api" - ], - "responses": { - "307": { - "description": "Redirect", - "headers": { - "Location": { - "schema": { - "type": "string", - "format": "uri" - } - } - } - } - } - } - }, - "/api/mcp/.well-known/openid-configuration": { - "get": { - "operationId": "get-api-mcp-.well-known-openid-configuration", - "summary": "MCP resource-relative OpenID discovery compatibility alias", - "tags": [ - "Api" + }, + "required": [ + "id", + "body", + "renderedBody", + "visibility", + "status", + "author", + "authorHidden", + "isAnonymous", + "isAuthor", + "createdAt", + "updatedAt", + "parentId", + "rootId", + "replies", + "attachments", + "reactions", + "canReact", + "canReply", + "canEdit", + "canDelete", + "canModerate" ], - "responses": { - "307": { - "description": "Redirect", - "headers": { - "Location": { - "schema": { - "type": "string", - "format": "uri" - } - } - } - } - } + "additionalProperties": false }, - "options": { - "operationId": "options-api-mcp-.well-known-openid-configuration", - "summary": "MCP resource-relative OpenID discovery compatibility alias", - "tags": [ - "Api" - ], - "responses": { - "307": { - "description": "Redirect", - "headers": { - "Location": { - "schema": { - "type": "string", - "format": "uri" - } - } - } - } - } - } - }, - "/api/me/subscriptions/homeworks": { - "get": { - "operationId": "getSubscribedHomeworks", - "summary": "List subscribed homeworks", - "tags": [ - "Me" - ], - "security": [ - { - "bearerAuth": [] + "meResponseSchema": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - { - "sessionCookie": [] - } - ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/subscribedHomeworksResponseSchema" - } - } - } + "email": { + "nullable": true, + "type": "string" }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - } - }, - "/api/me/subscriptions/schedules": { - "get": { - "operationId": "get-api-me-subscriptions-schedules", - "summary": "List schedules across the current user's subscribed sections", - "tags": [ - "Me" - ], - "security": [ - { - "bearerAuth": [] + "name": { + "nullable": true, + "type": "string" }, - { - "sessionCookie": [] - } - ], - "parameters": [ - { - "in": "query", - "name": "dateFrom", - "schema": { - "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" - } + "image": { + "nullable": true, + "type": "string" }, - { - "in": "query", - "name": "dateTo", - "schema": { - "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" - } + "username": { + "nullable": true, + "type": "string" }, - { - "in": "query", - "name": "weekday", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 7 - } + "isAdmin": { + "type": "boolean" }, - { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 300 - } + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } + }, + "required": [ + "id", + "email", + "name", + "image", + "username", + "isAdmin", + "createdAt", + "updatedAt" ], - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/subscribedSchedulesResponseSchema" - } - } - } + "additionalProperties": false + }, + "openApiErrorSchema": { + "type": "object", + "properties": { + "error": { + "type": "string" + } + }, + "required": [ + "error" + ], + "additionalProperties": false + }, + "openApiDocumentResponseSchema": { + "type": "object", + "properties": { + "openapi": { + "type": "string" }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } + "info": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "version": { + "type": "string" + }, + "description": { + "type": "string" } - } + }, + "required": [ + "title", + "version" + ], + "additionalProperties": false }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "description": { + "type": "string" } - } + }, + "required": [ + "url" + ], + "additionalProperties": false } + }, + "paths": { + "type": "object", + "additionalProperties": {} } - } - } - }, - "/api/sections/{jwId}/calendar.ics": { - "get": { - "operationId": "getSectionCalendar", - "summary": "Generate section calendar", - "tags": [ - "Sections" + }, + "required": [ + "openapi", + "info", + "paths" ], - "parameters": [ - { - "in": "path", - "name": "jwId", - "schema": { - "type": "integer", - "format": "int64" - }, - "required": true + "additionalProperties": false + }, + "localeUpdateRequestSchema": { + "type": "object", + "properties": { + "locale": { + "type": "string", + "enum": [ + "en-us", + "zh-cn" + ] } + }, + "required": [ + "locale" ], - "responses": { - "200": { - "description": "Calendar response", - "content": { - "text/calendar": { - "schema": { - "type": "string" - } - } - } - }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } + "additionalProperties": false + }, + "successResponseSchema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" } - } - } - }, - "/api/sections/{jwId}/schedule-groups": { - "get": { - "operationId": "getSectionScheduleGroups", - "summary": "Get schedule groups", - "tags": [ - "Sections" + }, + "required": [ + "success" ], - "parameters": [ - { - "in": "path", - "name": "jwId", - "schema": { - "type": "integer", - "format": "int64" + "additionalProperties": false + }, + "publicUserProfileResponseSchema": { + "type": "object", + "properties": { + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "_count": { + "type": "object", + "properties": { + "comments": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "uploads": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "homeworksCreated": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "subscribedSections": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "comments", + "uploads", + "homeworksCreated", + "subscribedSections" + ], + "additionalProperties": false + } }, - "required": true + "required": [ + "id", + "username", + "name", + "image", + "createdAt", + "_count" + ], + "additionalProperties": false }, - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] + "sectionCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "weeks": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "count": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "date", + "count" + ], + "additionalProperties": false + } } + }, + "totalContributions": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 } + }, + "required": [ + "user", + "sectionCount", + "weeks", + "totalContributions" ], - "responses": { - "200": { - "description": "Array response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object" - } - } - } - } - }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - } - }, - "/api/sections/{jwId}/schedules": { - "get": { - "operationId": "getSectionSchedules", - "summary": "Get section schedules", - "tags": [ - "Sections" - ], - "parameters": [ - { - "in": "path", - "name": "jwId", - "schema": { - "type": "integer", - "format": "int64" - }, - "required": true - }, - { - "in": "query", - "name": "locale", - "schema": { - "type": "string", - "enum": [ - "en-us", - "zh-cn" - ] - } - }, - { - "in": "query", - "name": "dateFrom", - "schema": { - "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" - } - }, - { - "in": "query", - "name": "dateTo", - "schema": { - "type": "string", - "minLength": 1, - "description": "YYYY-MM-DD or ISO date/time accepted by parseDateInput" - } - }, - { - "in": "query", - "name": "limit", - "schema": { - "type": "integer", - "format": "int64", - "minimum": 1, - "maximum": 200 - } - } - ], - "responses": { - "200": { - "description": "Array response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object" - } - } - } - } - }, - "400": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - } - }, - "/api/uploads/{id}/download": { - "get": { - "operationId": "downloadUpload", - "summary": "Download upload", - "tags": [ - "Uploads" - ], - "security": [ - { - "bearerAuth": [] - }, - { - "sessionCookie": [] - } - ], - "parameters": [ - { - "in": "path", - "name": "id", - "schema": { - "type": "string", - "minLength": 1 - }, - "required": true - } - ], - "responses": { - "200": { - "description": "Binary response", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - } - }, - "/api/users/{userId}/calendar.ics": { - "get": { - "operationId": "getUserCalendar", - "summary": "Generate user calendar", - "tags": [ - "Calendar" - ], - "security": [ - { - "bearerAuth": [] - }, - { - "sessionCookie": [] - }, - { - "calendarFeedToken": [] - } - ], - "parameters": [ - { - "in": "path", - "name": "userId", - "schema": { - "type": "string", - "minLength": 1, - "description": "User ID. Token-bearing feed URLs may also use the userId:token path segment form." - }, - "required": true, - "description": "User ID. Token-bearing feed URLs may also use the userId:token path segment form." - }, - { - "in": "query", - "name": "token", - "schema": { - "description": "Calendar feed token for anonymous personal iCal access.", - "type": "string", - "minLength": 1 - }, - "description": "Calendar feed token for anonymous personal iCal access." - } - ], - "responses": { - "200": { - "description": "Calendar response", - "content": { - "text/calendar": { - "schema": { - "type": "string" - } - } - } - }, - "401": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "403": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - }, - "404": { - "description": "Error response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/openApiErrorSchema" - } - } - } - } - } - } - } - }, - "components": { - "schemas": { - "__schema0": { + "additionalProperties": false + }, + "adminCommentsResponseSchema": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "body": { - "type": "string" - }, - "renderedBody": { - "type": "string" - }, - "visibility": { - "type": "string" - }, - "status": { - "type": "string" - }, - "author": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "isUstcVerified": { - "type": "boolean" - }, - "isAdmin": { - "type": "boolean" - }, - "isGuest": { - "type": "boolean" - } - }, - "required": [ - "name", - "isUstcVerified", - "isAdmin", - "isGuest" - ] - }, - "authorHidden": { - "type": "boolean" - }, - "isAnonymous": { - "type": "boolean" - }, - "isAuthor": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "parentId": { - "nullable": true, - "type": "string" - }, - "rootId": { - "nullable": true, - "type": "string" - }, - "replies": { - "type": "array", - "items": { - "$ref": "#/components/schemas/__schema0" - } - }, - "attachments": { + "data": { "type": "array", "items": { "type": "object", @@ -8131,2425 +8720,2319 @@ "id": { "type": "string" }, - "uploadId": { + "body": { "type": "string" }, - "filename": { + "visibility": { + "type": "string", + "enum": [ + "public", + "logged_in_only" + ] + }, + "status": { + "type": "string", + "enum": [ + "active", + "softbanned", + "deleted" + ] + }, + "isAnonymous": { + "type": "boolean" + }, + "authorName": { + "nullable": true, "type": "string" }, - "url": { + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "deletedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "moderatedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "moderationNote": { + "nullable": true, "type": "string" }, - "contentType": { + "userId": { "nullable": true, "type": "string" }, - "size": { + "moderatedById": { + "nullable": true, + "type": "string" + }, + "parentId": { + "nullable": true, + "type": "string" + }, + "rootId": { + "nullable": true, + "type": "string" + }, + "sectionId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 - } - }, - "required": [ - "id", - "uploadId", - "filename", - "url", - "contentType", - "size" - ] - } - }, - "reactions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" }, - "count": { + "courseId": { + "nullable": true, "type": "integer", - "minimum": 0, + "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "viewerHasReacted": { - "type": "boolean" - } - }, - "required": [ - "type", - "count", - "viewerHasReacted" - ] - } - }, - "canReact": { - "type": "boolean" - }, - "canReply": { - "type": "boolean" - }, - "canEdit": { - "type": "boolean" - }, - "canDelete": { - "type": "boolean" - }, - "canModerate": { - "type": "boolean" - } - }, - "required": [ - "id", - "body", - "renderedBody", - "visibility", - "status", - "author", - "authorHidden", - "isAnonymous", - "isAuthor", - "createdAt", - "updatedAt", - "parentId", - "rootId", - "replies", - "attachments", - "reactions", - "canReact", - "canReply", - "canEdit", - "canDelete", - "canModerate" - ] - }, - "semesterSchema": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "code": { - "type": "string" - }, - "startDate": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "endDate": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "code", - "startDate", - "endDate" - ] - }, - "__schema1": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "body": { - "type": "string" - }, - "renderedBody": { - "type": "string" - }, - "visibility": { - "type": "string" - }, - "status": { - "type": "string" - }, - "author": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "isUstcVerified": { - "type": "boolean" - }, - "isAdmin": { - "type": "boolean" - }, - "isGuest": { - "type": "boolean" - } - }, - "required": [ - "name", - "isUstcVerified", - "isAdmin", - "isGuest" - ], - "additionalProperties": false - }, - "authorHidden": { - "type": "boolean" - }, - "isAnonymous": { - "type": "boolean" - }, - "isAuthor": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "parentId": { - "nullable": true, - "type": "string" - }, - "rootId": { - "nullable": true, - "type": "string" - }, - "replies": { - "type": "array", - "items": { - "$ref": "#/components/schemas/__schema1" - } - }, - "attachments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "uploadId": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "url": { - "type": "string" - }, - "contentType": { + "teacherId": { "nullable": true, - "type": "string" - }, - "size": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 - } - }, - "required": [ - "id", - "uploadId", - "filename", - "url", - "contentType", - "size" - ], - "additionalProperties": false - } - }, - "reactions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "count": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "viewerHasReacted": { - "type": "boolean" - } - }, - "required": [ - "type", - "count", - "viewerHasReacted" - ], - "additionalProperties": false - } - }, - "canReact": { - "type": "boolean" - }, - "canReply": { - "type": "boolean" - }, - "canEdit": { - "type": "boolean" - }, - "canDelete": { - "type": "boolean" - }, - "canModerate": { - "type": "boolean" - } - }, - "required": [ - "id", - "body", - "renderedBody", - "visibility", - "status", - "author", - "authorHidden", - "isAnonymous", - "isAuthor", - "createdAt", - "updatedAt", - "parentId", - "rootId", - "replies", - "attachments", - "reactions", - "canReact", - "canReply", - "canEdit", - "canDelete", - "canModerate" - ], - "additionalProperties": false - }, - "busQueryResponseSchema": { - "type": "object", - "properties": { - "locale": { - "type": "string", - "enum": [ - "zh-cn", - "en-us" - ] - }, - "fetchedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "version": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "key": { - "type": "string" - }, - "title": { - "type": "string" - }, - "effectiveFrom": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "effectiveUntil": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "importedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "notice": { - "nullable": true, - "type": "object", - "properties": { - "message": { - "nullable": true, - "type": "string" - }, - "url": { - "nullable": true, - "type": "string" - } }, - "required": [ - "message", - "url" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "key", - "title", - "effectiveFrom", - "effectiveUntil", - "importedAt", - "notice" - ], - "additionalProperties": false - }, - "availableVersions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { + "sectionTeacherId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "key": { - "type": "string" - }, - "title": { + "homeworkId": { + "nullable": true, "type": "string" }, - "effectiveFrom": { + "user": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "object", + "properties": { + "name": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "name" + ], + "additionalProperties": false }, - "effectiveUntil": { + "section": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "importedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "object", + "properties": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "course": { + "type": "object", + "properties": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + } + }, + "required": [ + "jwId", + "code", + "nameCn" + ], + "additionalProperties": false + } + }, + "required": [ + "jwId", + "code", + "course" + ], + "additionalProperties": false }, - "notice": { + "course": { "nullable": true, "type": "object", "properties": { - "message": { - "nullable": true, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { "type": "string" }, - "url": { - "nullable": true, + "nameCn": { "type": "string" } }, "required": [ - "message", - "url" + "jwId", + "code", + "nameCn" ], "additionalProperties": false - } - }, - "required": [ - "id", - "key", - "title", - "effectiveFrom", - "effectiveUntil", - "importedAt", - "notice" - ], - "additionalProperties": false - } - }, - "campuses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { + "teacher": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - }, - "routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + } + }, + "required": [ + "id", + "nameCn" + ], + "additionalProperties": false }, - "nameEn": { + "homework": { "nullable": true, - "type": "string" - }, - "descriptionPrimary": { - "type": "string" + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "section": { + "type": "object", + "properties": { + "code": { + "type": "string" + } + }, + "required": [ + "code" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "title", + "section" + ], + "additionalProperties": false }, - "descriptionSecondary": { + "sectionTeacher": { "nullable": true, - "type": "string" - }, - "stops": { - "type": "array", - "items": { - "type": "object", - "properties": { - "stopOrder": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campus": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } + "type": "object", + "properties": { + "section": { + "type": "object", + "properties": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - }, - "required": [ - "stopOrder", - "campus" - ], - "additionalProperties": false - } - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "descriptionPrimary", - "descriptionSecondary", - "stops" - ], - "additionalProperties": false - } - }, - "trips": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "routeId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "dayType": { - "type": "string", - "enum": [ - "weekday", - "weekend" - ] - }, - "position": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stopTimes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "stopOrder": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusName": { - "type": "string" - }, - "time": { - "nullable": true, - "type": "string" - }, - "minutesSinceMidnight": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "code": { + "type": "string" + }, + "course": { + "type": "object", + "properties": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + } + }, + "required": [ + "jwId", + "code", + "nameCn" + ], + "additionalProperties": false + } }, - "isPassThrough": { - "type": "boolean" - } + "required": [ + "jwId", + "code", + "course" + ], + "additionalProperties": false }, - "required": [ - "stopOrder", - "campusId", - "campusName", - "time", - "minutesSinceMidnight", - "isPassThrough" - ], - "additionalProperties": false - } - }, - "departureTime": { - "nullable": true, - "type": "string" - }, - "departureMinutes": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "arrivalTime": { - "nullable": true, - "type": "string" - }, - "arrivalMinutes": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "teacher": { + "type": "object", + "properties": { + "nameCn": { + "type": "string" + } + }, + "required": [ + "nameCn" + ], + "additionalProperties": false + } + }, + "required": [ + "section", + "teacher" + ], + "additionalProperties": false } }, "required": [ "id", - "routeId", - "dayType", - "position", - "stopTimes", - "departureTime", - "departureMinutes", - "arrivalTime", - "arrivalMinutes" + "body", + "visibility", + "status", + "isAnonymous", + "authorName", + "createdAt", + "updatedAt", + "deletedAt", + "moderatedAt", + "moderationNote", + "userId", + "moderatedById", + "parentId", + "rootId", + "sectionId", + "courseId", + "teacherId", + "sectionTeacherId", + "homeworkId", + "user", + "section", + "course", + "teacher", + "homework", + "sectionTeacher" ], "additionalProperties": false } }, - "preferences": { - "nullable": true, + "pagination": { "type": "object", "properties": { - "preferredOriginCampusId": { - "nullable": true, + "page": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "preferredDestinationCampusId": { - "nullable": true, + "pageSize": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "showDepartedTrips": { - "type": "boolean" - } - }, - "required": [ - "preferredOriginCampusId", - "preferredDestinationCampusId", - "showDepartedTrips" - ], - "additionalProperties": false - }, - "notice": { - "nullable": true, - "type": "object", - "properties": { - "message": { - "nullable": true, - "type": "string" + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "url": { - "nullable": true, - "type": "string" + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 } }, "required": [ - "message", - "url" + "page", + "pageSize", + "total", + "totalPages" ], "additionalProperties": false } }, "required": [ - "locale", - "fetchedAt", - "version", - "availableVersions", - "campuses", - "routes", - "trips", - "preferences", - "notice" - ], - "additionalProperties": false - }, - "openApiErrorSchema": { - "type": "object", - "properties": { - "error": { - "type": "string" - } - }, - "required": [ - "error" + "data", + "pagination" ], "additionalProperties": false }, - "calendarSubscriptionCreateRequestSchema": { + "adminDescriptionsResponseSchema": { "type": "object", "properties": { - "sectionIds": { - "maxItems": 500, + "data": { "type": "array", "items": { - "type": "integer", - "maximum": 9007199254740991, - "minimum": 1 - } - } - }, - "additionalProperties": false - }, - "calendarSubscriptionCreateResponseSchema": { - "type": "object", - "properties": { - "subscription": { - "nullable": true, - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "sections": { - "type": "array", - "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "content": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedById": { + "nullable": true, + "type": "string" + }, + "sectionId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "courseId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" + }, + "lastEditedBy": { + "nullable": true, "type": "object", "properties": { "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "string" }, - "retiredAt": { + "name": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { "type": "string" }, - "bizTypeId": { + "username": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "credits": { + "image": { "nullable": true, - "type": "number" - }, - "period": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "section": { + "nullable": true, + "type": "object", + "properties": { + "jwId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "periodsPerWeek": { + "code": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "timesPerWeek": { + "course": { "nullable": true, + "type": "object", + "properties": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + } + }, + "required": [ + "jwId", + "code", + "nameCn" + ], + "additionalProperties": false + } + }, + "required": [ + "jwId", + "code", + "course" + ], + "additionalProperties": false + }, + "course": { + "nullable": true, + "type": "object", + "properties": { + "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "code": { + "type": "string" }, - "limitCount": { - "nullable": true, + "nameCn": { + "type": "string" + } + }, + "required": [ + "jwId", + "code", + "nameCn" + ], + "additionalProperties": false + }, + "teacher": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, + "nameCn": { "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, + } + }, + "required": [ + "id", + "nameCn" + ], + "additionalProperties": false + }, + "homework": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "string" }, - "scheduleRemark": { - "nullable": true, + "title": { "type": "string" }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { + "section": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { "type": "object", "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, "jwId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { "nullable": true, "type": "string" }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "category": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { + "course": { "nullable": true, "type": "object", "properties": { - "id": { + "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, + "code": { "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 }, "nameCn": { "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" } }, "required": [ - "id", - "nameCn", - "nameEn" + "jwId", + "code", + "nameCn" ], "additionalProperties": false - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" } }, "required": [ - "id", "jwId", "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" + "course" ], "additionalProperties": false + } + }, + "required": [ + "id", + "title", + "section" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "content", + "createdAt", + "updatedAt", + "lastEditedAt", + "lastEditedById", + "sectionId", + "courseId", + "teacherId", + "homeworkId", + "lastEditedBy", + "section", + "course", + "teacher", + "homework" + ], + "additionalProperties": false + } + }, + "pagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize", + "total", + "totalPages" + ], + "additionalProperties": false + } + }, + "required": [ + "data", + "pagination" + ], + "additionalProperties": false + }, + "adminHomeworksResponseSchema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "submissionDueAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "deletedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "section": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "semester": { + "jwId": { "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "campus": { + "code": { "nullable": true, + "type": "string" + }, + "course": { "type": "object", "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, "jwId": { - "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, "code": { - "nullable": true, - "type": "string" - }, - "namePrimary": { "type": "string" }, - "nameSecondary": { - "nullable": true, + "nameCn": { "type": "string" } }, "required": [ - "id", "jwId", - "nameCn", - "nameEn", "code", - "namePrimary", - "nameSecondary" + "nameCn" ], "additionalProperties": false + } + }, + "required": [ + "id", + "jwId", + "code", + "course" + ], + "additionalProperties": false + }, + "createdBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" }, - "openDepartment": { + "name": { "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false + "type": "string" }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" } }, "required": [ "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "updatedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "deletedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" ], "additionalProperties": false } }, - "calendarPath": { - "type": "string" + "required": [ + "id", + "title", + "submissionDueAt", + "createdAt", + "updatedAt", + "deletedAt", + "section", + "createdBy", + "updatedBy", + "deletedBy" + ], + "additionalProperties": false + } + }, + "pagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "calendarUrl": { - "type": "string" + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "note": { - "type": "string" + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 } }, "required": [ - "userId", - "sections", - "calendarPath", - "calendarUrl", - "note" + "page", + "pageSize", + "total", + "totalPages" ], "additionalProperties": false } }, "required": [ - "subscription" + "data", + "pagination" ], "additionalProperties": false }, - "calendarSubscriptionAppendRequestSchema": { + "adminSuspensionsResponseSchema": { "type": "object", "properties": { - "sectionIds": { - "maxItems": 500, + "data": { "type": "array", "items": { - "type": "integer", - "maximum": 9007199254740991, - "minimum": 1 + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "createdById": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "reason": { + "nullable": true, + "type": "string" + }, + "note": { + "nullable": true, + "type": "string" + }, + "expiresAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "liftedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "liftedById": { + "nullable": true, + "type": "string" + }, + "user": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "userId", + "createdById", + "createdAt", + "reason", + "note", + "expiresAt", + "liftedAt", + "liftedById" + ], + "additionalProperties": false } } }, "required": [ - "sectionIds" + "data" ], "additionalProperties": false }, - "calendarSubscriptionAppendResponseSchema": { + "adminCreateSuspensionRequestSchema": { "type": "object", "properties": { - "subscription": { - "nullable": true, + "userId": { + "type": "string", + "minLength": 1 + }, + "reason": { + "type": "string" + }, + "note": { + "type": "string" + }, + "expiresAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + } + }, + "required": [ + "userId" + ], + "additionalProperties": false + }, + "adminSuspensionResponseSchema": { + "type": "object", + "properties": { + "suspension": { "type": "object", "properties": { + "id": { + "type": "string" + }, "userId": { "type": "string" }, - "sections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { + "createdById": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "reason": { + "nullable": true, + "type": "string" + }, + "note": { + "nullable": true, + "type": "string" + }, + "expiresAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "liftedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "liftedById": { + "nullable": true, + "type": "string" + }, + "user": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "userId", + "createdById", + "createdAt", + "reason", + "note", + "expiresAt", + "liftedAt", + "liftedById" + ], + "additionalProperties": false + } + }, + "required": [ + "suspension" + ], + "additionalProperties": false + }, + "adminUsersResponseSchema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "email": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "isAdmin", + "createdAt", + "email" + ], + "additionalProperties": false + } + }, + "pagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize", + "total", + "totalPages" + ], + "additionalProperties": false + } + }, + "required": [ + "data", + "pagination" + ], + "additionalProperties": false + }, + "busQueryResponseSchema": { + "type": "object", + "properties": { + "locale": { + "type": "string", + "enum": [ + "zh-cn", + "en-us" + ] + }, + "fetchedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "version": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "key": { + "type": "string" + }, + "title": { + "type": "string" + }, + "effectiveFrom": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "effectiveUntil": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "importedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "notice": { + "nullable": true, + "type": "object", + "properties": { + "message": { + "nullable": true, + "type": "string" + }, + "url": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "message", + "url" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "key", + "title", + "effectiveFrom", + "effectiveUntil", + "importedAt", + "notice" + ], + "additionalProperties": false + }, + "availableVersions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "key": { + "type": "string" + }, + "title": { + "type": "string" + }, + "effectiveFrom": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "effectiveUntil": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "importedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "notice": { + "nullable": true, + "type": "object", + "properties": { + "message": { "nullable": true, "type": "string" }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { + "url": { "nullable": true, "type": "string" + } + }, + "required": [ + "message", + "url" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "key", + "title", + "effectiveFrom", + "effectiveUntil", + "importedAt", + "notice" + ], + "additionalProperties": false + } + }, + "campuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "descriptionPrimary": { + "type": "string" + }, + "descriptionSecondary": { + "nullable": true, + "type": "string" + }, + "stops": { + "type": "array", + "items": { + "type": "object", + "properties": { + "stopOrder": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campus": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } }, - "scheduleRemark": { - "nullable": true, - "type": "string" + "required": [ + "stopOrder", + "campus" + ], + "additionalProperties": false + } + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "descriptionPrimary", + "descriptionSecondary", + "stops" + ], + "additionalProperties": false + } + }, + "trips": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "routeId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "dayType": { + "type": "string", + "enum": [ + "weekday", + "weekend" + ] + }, + "position": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stopTimes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "stopOrder": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusName": { + "type": "string" + }, + "time": { + "nullable": true, + "type": "string" + }, + "minutesSinceMidnight": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "isPassThrough": { + "type": "boolean" + } }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, + "required": [ + "stopOrder", + "campusId", + "campusName", + "time", + "minutesSinceMidnight", + "isPassThrough" + ], + "additionalProperties": false + } + }, + "departureTime": { + "nullable": true, + "type": "string" + }, + "departureMinutes": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "arrivalTime": { + "nullable": true, + "type": "string" + }, + "arrivalMinutes": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "id", + "routeId", + "dayType", + "position", + "stopTimes", + "departureTime", + "departureMinutes", + "arrivalTime", + "arrivalMinutes" + ], + "additionalProperties": false + } + }, + "preferences": { + "nullable": true, + "type": "object", + "properties": { + "preferredOriginCampusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "preferredDestinationCampusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "showDepartedTrips": { + "type": "boolean" + } + }, + "required": [ + "preferredOriginCampusId", + "preferredDestinationCampusId", + "showDepartedTrips" + ], + "additionalProperties": false + }, + "notice": { + "nullable": true, + "type": "object", + "properties": { + "message": { + "nullable": true, + "type": "string" + }, + "url": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "message", + "url" + ], + "additionalProperties": false + } + }, + "required": [ + "locale", + "fetchedAt", + "version", + "availableVersions", + "campuses", + "routes", + "trips", + "preferences", + "notice" + ], + "additionalProperties": false + }, + "paginatedCourseResponseSchema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "campusId": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "examModeId": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "openDepartmentId": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teachLanguageId": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "roomTypeId": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "category": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false + "nameCn": { + "type": "string" }, - "openDepartment": { + "nameEn": { "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } + "type": "string" } }, "required": [ "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" + "nameCn", + "nameEn" ], "additionalProperties": false } }, - "calendarPath": { - "type": "string" + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type" + ], + "additionalProperties": false + } + }, + "pagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "calendarUrl": { - "type": "string" + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "note": { - "type": "string" + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 } }, "required": [ - "userId", - "sections", - "calendarPath", - "calendarUrl", - "note" + "page", + "pageSize", + "total", + "totalPages" ], "additionalProperties": false - }, - "addedCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "alreadySubscribedCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 } }, "required": [ - "subscription", - "addedCount", - "alreadySubscribedCount" + "data", + "pagination" ], "additionalProperties": false }, - "calendarSubscriptionRemoveRequestSchema": { + "metadataResponseSchema": { "type": "object", "properties": { - "sectionIds": { - "maxItems": 500, + "educationLevels": { "type": "array", "items": { - "type": "integer", - "maximum": 9007199254740991, - "minimum": 1 + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false } - } - }, - "required": [ - "sectionIds" - ], - "additionalProperties": false - }, - "calendarSubscriptionRemoveResponseSchema": { - "type": "object", - "properties": { - "subscription": { - "nullable": true, - "type": "object", - "properties": { - "userId": { - "type": "string" + }, + "courseCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } }, - "sections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + }, + "courseClassifies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + }, + "classTypes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + }, + "courseTypes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + }, + "courseGradations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + }, + "examModes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + }, + "teachLanguages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + }, + "campuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "buildings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } }, - "courseId": { + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "campusId" + ], + "additionalProperties": false + } + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "buildings" + ], + "additionalProperties": false + } + } + }, + "required": [ + "educationLevels", + "courseCategories", + "courseClassifies", + "classTypes", + "courseTypes", + "courseGradations", + "examModes", + "teachLanguages", + "campuses" + ], + "additionalProperties": false + }, + "paginatedScheduleResponseSchema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periods": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "date": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "weekday": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "startTime": { + "type": "string" + }, + "endTime": { + "type": "string" + }, + "experiment": { + "nullable": true, + "type": "string" + }, + "customPlace": { + "nullable": true, + "type": "string" + }, + "lessonType": { + "nullable": true, + "type": "string" + }, + "weekIndex": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "exerciseClass": { + "nullable": true, + "type": "boolean" + }, + "startUnit": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "endUnit": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "scheduleGroupId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "room": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "semesterId": { - "nullable": true, + "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "campusId": { + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "floor": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "examModeId": { - "nullable": true, + "virtual": { + "type": "boolean" + }, + "seatsForSection": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "openDepartmentId": { + "remark": { "nullable": true, + "type": "string" + }, + "seats": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teachLanguageId": { + "buildingId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, @@ -10561,7 +11044,15 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "course": { + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + }, + "building": { + "nullable": true, "type": "object", "properties": { "id": { @@ -10574,9 +11065,6 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { - "type": "string" - }, "nameCn": { "type": "string" }, @@ -10584,43 +11072,23 @@ "nullable": true, "type": "string" }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "code": { + "type": "string" }, - "educationLevelId": { + "campusId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "namePrimary": { + "type": "string" }, - "typeId": { + "nameSecondary": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "category": { + "campus": { "nullable": true, "type": "object", "properties": { @@ -10629,26 +11097,8 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { + "jwId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 @@ -10659,151 +11109,45 @@ "nameEn": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" }, - "nameEn": { + "code": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 }, - "nameCn": { + "namePrimary": { "type": "string" }, - "nameEn": { + "nameSecondary": { "nullable": true, "type": "string" } }, "required": [ "id", + "jwId", "nameCn", - "nameEn" + "nameEn", + "code", + "namePrimary", + "nameSecondary" ], "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" } }, "required": [ "id", "jwId", - "code", "nameCn", "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", + "code", + "campusId", "namePrimary", - "nameSecondary" + "nameSecondary", + "campus" ], "additionalProperties": false }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { + "roomType": { "nullable": true, "type": "object", "properties": { @@ -10813,7 +11157,6 @@ "maximum": 9007199254740991 }, "jwId": { - "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 @@ -10826,7 +11169,6 @@ "type": "string" }, "code": { - "nullable": true, "type": "string" }, "namePrimary": { @@ -10847,52 +11189,116 @@ "nameSecondary" ], "additionalProperties": false - }, - "openDepartment": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "floor", + "virtual", + "seatsForSection", + "remark", + "seats", + "buildingId", + "roomTypeId", + "namePrimary", + "nameSecondary", + "building", + "roomType" + ], + "additionalProperties": false + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + }, + "department": { + "nullable": true, "type": "object", "properties": { "id": { @@ -10900,20 +11306,7 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, "code": { - "nullable": true, "type": "string" }, "nameCn": { @@ -10923,51 +11316,9 @@ "nullable": true, "type": "string" }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { + "isCollege": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "boolean" }, "namePrimary": { "type": "string" @@ -10979,562 +11330,41 @@ }, "required": [ "id", - "personId", - "teacherId", "code", "nameCn", "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", + "isCollege", "namePrimary", "nameSecondary" ], "additionalProperties": false } - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" - ], - "additionalProperties": false - } - }, - "calendarPath": { - "type": "string" - }, - "calendarUrl": { - "type": "string" - }, - "note": { - "type": "string" - } - }, - "required": [ - "userId", - "sections", - "calendarPath", - "calendarUrl", - "note" - ], - "additionalProperties": false - } - }, - "required": [ - "subscription" - ], - "additionalProperties": false - }, - "commentsListResponseSchema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/__schema1" - } - }, - "pagination": { - "type": "object", - "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "total": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "totalPages": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "page", - "pageSize", - "total", - "totalPages" - ], - "additionalProperties": false - }, - "meta": { - "type": "object", - "properties": { - "hiddenCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "viewer": { - "type": "object", - "properties": { - "userId": { - "nullable": true, - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "isAdmin": { - "type": "boolean" - }, - "isAuthenticated": { - "type": "boolean" - }, - "isSuspended": { - "type": "boolean" - }, - "suspensionReason": { - "nullable": true, - "type": "string" - }, - "suspensionExpiresAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary", + "department" + ], + "additionalProperties": false } }, - "required": [ - "userId", - "name", - "image", - "isAdmin", - "isAuthenticated", - "isSuspended", - "suspensionReason", - "suspensionExpiresAt" - ], - "additionalProperties": false - }, - "target": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "targetId": { - "anyOf": [ - { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - }, - "sectionTeacherSectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherTeacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherSectionJwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherSectionCode": { - "nullable": true, - "type": "string" - }, - "sectionTeacherTeacherName": { - "nullable": true, - "type": "string" - }, - "sectionTeacherCourseJwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherCourseName": { - "nullable": true, - "type": "string" - }, - "homeworkTitle": { - "nullable": true, - "type": "string" - }, - "homeworkSectionJwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkSectionCode": { - "nullable": true, - "type": "string" - }, - "sectionJwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionCode": { - "nullable": true, - "type": "string" - }, - "courseJwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseName": { - "nullable": true, - "type": "string" - }, - "teacherName": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "type", - "targetId", - "courseId", - "sectionId", - "teacherId", - "sectionTeacherId", - "homeworkId", - "sectionTeacherSectionId", - "sectionTeacherTeacherId", - "sectionTeacherSectionJwId", - "sectionTeacherSectionCode", - "sectionTeacherTeacherName", - "sectionTeacherCourseJwId", - "sectionTeacherCourseName", - "homeworkTitle", - "homeworkSectionJwId", - "homeworkSectionCode", - "sectionJwId", - "sectionCode", - "courseJwId", - "courseName", - "teacherName" - ], - "additionalProperties": false - } - }, - "required": [ - "hiddenCount", - "viewer", - "target" - ], - "additionalProperties": false - } - }, - "required": [ - "data", - "pagination", - "meta" - ], - "additionalProperties": false - }, - "commentCreateRequestSchema": { - "type": "object", - "properties": { - "targetType": { - "type": "string", - "enum": [ - "section", - "course", - "teacher", - "section-teacher", - "homework" - ] - }, - "targetId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "sectionId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "sectionJwId": { - "anyOf": [ - { - "type": "integer", - "format": "int64", - "minimum": 1 - }, - { - "type": "integer", - "minimum": 1, - "maximum": 9007199254740991 - } - ] - }, - "courseJwId": { - "anyOf": [ - { - "type": "integer", - "format": "int64", - "minimum": 1 - }, - { - "type": "integer", - "minimum": 1, - "maximum": 9007199254740991 - } - ] - }, - "teacherId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "homeworkId": { - "type": "string", - "minLength": 1 - }, - "sectionTeacherId": { - "anyOf": [ - { - "type": "integer", - "format": "int64", - "minimum": 1 - }, - { - "type": "integer", - "minimum": 1, - "maximum": 9007199254740991 - } - ] - }, - "body": { - "type": "string", - "minLength": 1, - "maxLength": 8000 - }, - "visibility": { - "type": "string", - "enum": [ - "public", - "logged_in_only" - ] - }, - "isAnonymous": { - "type": "boolean" - }, - "parentId": { - "nullable": true, - "type": "string" - }, - "attachmentIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "targetType", - "body" - ], - "additionalProperties": false - }, - "idResponseSchema": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ], - "additionalProperties": false - }, - "paginatedCourseResponseSchema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "category": { - "nullable": true, + "section": { "type": "object", "properties": { "id": { @@ -11542,160 +11372,385 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { + }, + "bizTypeId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "credits": { + "nullable": true, + "type": "number" }, - "nameEn": { + "period": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "timesPerWeek": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "limitCount": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" }, - "nameEn": { + "dateTimePlaceText": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, "type": "string" }, - "nameEn": { + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { "nullable": true, "type": "string" - } + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + } }, "required": [ "id", - "nameCn", - "nameEn" + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" + ], + "additionalProperties": false + }, + "scheduleGroup": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "no": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "actualPeriods": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "isDefault": { + "type": "boolean" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "id", + "jwId", + "no", + "limitCount", + "stdCount", + "actualPeriods", + "isDefault", + "sectionId" ], "additionalProperties": false } }, "required": [ "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type" + "periods", + "date", + "weekday", + "startTime", + "endTime", + "experiment", + "customPlace", + "lessonType", + "weekIndex", + "exerciseClass", + "startUnit", + "endUnit", + "roomId", + "sectionId", + "scheduleGroupId", + "room", + "teachers", + "section", + "scheduleGroup" ], "additionalProperties": false } @@ -11739,451 +11794,400 @@ ], "additionalProperties": false }, - "descriptionsResponseSchema": { + "paginatedSectionResponseSchema": { "type": "object", "properties": { - "description": { - "type": "object", - "properties": { - "id": { - "nullable": true, - "type": "string" - }, - "content": { - "type": "string" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "renderedHtml": { - "type": "string" - }, - "lastEditedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "image", - "username" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "content", - "updatedAt", - "lastEditedAt", - "renderedHtml", - "lastEditedBy" - ], - "additionalProperties": false - }, - "history": { + "data": { "type": "array", "items": { "type": "object", "properties": { "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "credits": { + "nullable": true, + "type": "number" }, - "previousContent": { + "stdCount": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nextContent": { - "type": "string" + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "editor": { + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { "type": "string" }, - "name": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" }, - "image": { + "code": { + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "code" + ], + "additionalProperties": false + }, + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, "type": "string" }, - "username": { + "code": { "nullable": true, "type": "string" } }, "required": [ "id", - "name", - "image", - "username" + "jwId", + "nameCn", + "nameEn", + "code" ], "additionalProperties": false - } - }, - "required": [ - "id", - "createdAt", - "previousContent", - "nextContent", - "editor" - ], - "additionalProperties": false - } - }, - "viewer": { - "type": "object", - "properties": { - "userId": { - "nullable": true, - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "isAdmin": { - "type": "boolean" - }, - "isAuthenticated": { - "type": "boolean" + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + } }, - "isSuspended": { - "type": "boolean" + "required": [ + "id", + "jwId", + "code", + "credits", + "stdCount", + "limitCount", + "courseId", + "semesterId", + "campusId", + "openDepartmentId", + "course", + "semester", + "campus", + "teachers" + ], + "additionalProperties": false + } + }, + "pagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "suspensionReason": { - "nullable": true, - "type": "string" + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "suspensionExpiresAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 } }, "required": [ - "userId", - "name", - "image", - "isAdmin", - "isAuthenticated", - "isSuspended", - "suspensionReason", - "suspensionExpiresAt" + "page", + "pageSize", + "total", + "totalPages" ], "additionalProperties": false } }, "required": [ - "description", - "history", - "viewer" + "data", + "pagination" ], "additionalProperties": false }, - "descriptionUpsertRequestSchema": { + "paginatedSemesterResponseSchema": { "type": "object", "properties": { - "targetType": { - "type": "string", - "enum": [ - "section", - "course", - "teacher", - "homework" - ] - }, - "targetId": { - "anyOf": [ - { - "type": "string", - "minLength": 1 - }, - { - "type": "number" - } - ] + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/semesterSchema" + } }, - "sectionJwId": { - "anyOf": [ - { - "type": "string", - "minLength": 1 + "pagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - { - "type": "number" - } - ] - }, - "courseJwId": { - "anyOf": [ - { - "type": "string", - "minLength": 1 + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - { - "type": "number" - } - ] - }, - "teacherId": { - "anyOf": [ - { - "type": "string", - "minLength": 1 + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - { - "type": "number" - } - ] - }, - "homeworkId": { - "type": "string", - "minLength": 1 - }, - "content": { - "type": "string", - "maxLength": 4000 - } - }, - "required": [ - "targetType", - "content" - ], - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "targetId" - ] - }, - { - "properties": { - "targetType": { - "enum": [ - "section" - ], - "type": "string" - } - }, - "required": [ - "sectionJwId" - ] - }, - { - "properties": { - "targetType": { - "enum": [ - "course" - ], - "type": "string" - } - }, - "required": [ - "courseJwId" - ] - }, - { - "properties": { - "targetType": { - "enum": [ - "teacher" - ], - "type": "string" - } - }, - "required": [ - "teacherId" - ] - }, - { - "properties": { - "targetType": { - "enum": [ - "homework" - ], - "type": "string" + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 } }, "required": [ - "homeworkId" - ] - } - ] - }, - "descriptionUpsertResponseSchema": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "updated": { - "type": "boolean" + "page", + "pageSize", + "total", + "totalPages" + ], + "additionalProperties": false } }, "required": [ - "id", - "updated" + "data", + "pagination" ], "additionalProperties": false }, - "homeworksListResponseSchema": { + "paginatedTeacherResponseSchema": { "type": "object", "properties": { - "viewer": { - "type": "object", - "properties": { - "userId": { - "nullable": true, - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "isAdmin": { - "type": "boolean" - }, - "isAuthenticated": { - "type": "boolean" - }, - "isSuspended": { - "type": "boolean" - }, - "suspensionReason": { - "nullable": true, - "type": "string" - }, - "suspensionExpiresAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "userId", - "name", - "image", - "isAdmin", - "isAuthenticated", - "isSuspended", - "suspensionReason", - "suspensionExpiresAt" - ], - "additionalProperties": false - }, - "homeworks": { + "data": { "type": "array", "items": { "type": "object", "properties": { "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "isMajor": { - "type": "boolean" - }, - "requiresTeam": { - "type": "boolean" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "publishedAt": { + "personId": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "submissionStartAt": { + "teacherId": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "submissionDueAt": { + "code": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "nameCn": { + "type": "string" }, - "deletedAt": { + "nameEn": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "string" }, - "sectionId": { + "age": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "createdById": { + "email": { "nullable": true, "type": "string" }, - "updatedById": { + "telephone": { "nullable": true, "type": "string" }, - "deletedById": { + "mobile": { "nullable": true, "type": "string" }, - "section": { + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "department": { + "nullable": true, "type": "object", "properties": { "id": { @@ -12191,1914 +12195,1115 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, "code": { "type": "string" }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "nameCn": { + "type": "string" }, - "credits": { + "nameEn": { "nullable": true, - "type": "number" + "type": "string" }, - "period": { + "isCollege": { "nullable": true, + "type": "boolean" + } + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege" + ], + "additionalProperties": false + }, + "teacherTitle": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "periodsPerWeek": { - "nullable": true, + "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "nameCn": { + "type": "string" }, - "stdCount": { + "nameEn": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "limitCount": { + "code": { + "type": "string" + }, + "enabled": { "nullable": true, + "type": "boolean" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "enabled" + ], + "additionalProperties": false + }, + "_count": { + "type": "object", + "properties": { + "sections": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester" - ], - "additionalProperties": false - }, - "description": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "content": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedById": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "content", - "createdAt", - "updatedAt", - "lastEditedAt", - "lastEditedById", - "sectionId", - "courseId", - "teacherId", - "homeworkId" - ], - "additionalProperties": false - }, - "createdBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "updatedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "deletedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "completion": { - "nullable": true, - "type": "object", - "properties": { - "completedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": [ - "completedAt" + "sections" ], "additionalProperties": false - }, - "commentCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 } }, "required": [ "id", - "title", - "isMajor", - "requiresTeam", - "publishedAt", - "submissionStartAt", - "submissionDueAt", - "createdAt", - "updatedAt", - "deletedAt", - "sectionId", - "createdById", - "updatedById", - "deletedById", - "section", - "description", - "createdBy", - "updatedBy", - "deletedBy", - "completion", - "commentCount" + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "department", + "teacherTitle", + "_count" ], "additionalProperties": false } }, - "auditLogs": { + "pagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize", + "total", + "totalPages" + ], + "additionalProperties": false + } + }, + "required": [ + "data", + "pagination" + ], + "additionalProperties": false + }, + "commentsListResponseSchema": { + "type": "object", + "properties": { + "data": { "type": "array", "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "action": { - "type": "string", - "enum": [ - "created", - "deleted" - ] - }, - "titleSnapshot": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - }, - "actorId": { - "nullable": true, - "type": "string" - }, - "actor": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "action", - "titleSnapshot", - "createdAt", - "sectionId", - "homeworkId", - "actorId", - "actor" - ], - "additionalProperties": false + "$ref": "#/components/schemas/__schema1" } - } - }, - "required": [ - "viewer", - "homeworks", - "auditLogs" - ], - "additionalProperties": false - }, - "homeworkCreateRequestSchema": { - "anyOf": [ - { + }, + "pagination": { "type": "object", "properties": { - "title": { - "type": "string", - "minLength": 1, - "maxLength": 200 - }, - "description": { - "nullable": true, - "type": "string", - "maxLength": 4000 - }, - "publishedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - }, - "submissionStartAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - }, - "submissionDueAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - }, - "isMajor": { - "type": "boolean" + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "requiresTeam": { - "type": "boolean" + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "sectionId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "sectionJwId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 } }, "required": [ - "title", - "sectionId" + "page", + "pageSize", + "total", + "totalPages" ], "additionalProperties": false }, - { + "meta": { "type": "object", "properties": { - "title": { - "type": "string", - "minLength": 1, - "maxLength": 200 - }, - "description": { - "nullable": true, - "type": "string", - "maxLength": 4000 + "hiddenCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 }, - "publishedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", + "viewer": { + "type": "object", + "properties": { + "userId": { "nullable": true, - "enum": [ - null - ] - } - ] - }, - "submissionStartAt": { - "anyOf": [ - { "type": "string" }, - { - "type": "string", + "name": { "nullable": true, - "enum": [ - null - ] - } - ] - }, - "submissionDueAt": { - "anyOf": [ - { "type": "string" }, - { - "type": "string", + "image": { "nullable": true, - "enum": [ - null - ] - } - ] - }, - "isMajor": { - "type": "boolean" - }, - "requiresTeam": { - "type": "boolean" - }, - "sectionId": { - "anyOf": [ - { "type": "string" }, - { - "type": "number" - } - ] - }, - "sectionJwId": { - "anyOf": [ - { - "type": "string" + "isAdmin": { + "type": "boolean" }, - { - "type": "number" - } - ] - } - }, - "required": [ - "title", - "sectionJwId" - ], - "additionalProperties": false - } - ] - }, - "homeworkCreateResponseSchema": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "homework": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "isMajor": { - "type": "boolean" - }, - "requiresTeam": { - "type": "boolean" - }, - "publishedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "submissionStartAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "submissionDueAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "deletedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "createdById": { - "nullable": true, - "type": "string" - }, - "updatedById": { - "nullable": true, - "type": "string" - }, - "deletedById": { - "nullable": true, - "type": "string" - }, - "section": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "isAuthenticated": { + "type": "boolean" }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "isSuspended": { + "type": "boolean" }, - "sourceLastSeenAt": { + "suspensionReason": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "string" }, - "retiredAt": { + "suspensionExpiresAt": { "nullable": true, "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { + } + }, + "required": [ + "userId", + "name", + "image", + "isAdmin", + "isAuthenticated", + "isSuspended", + "suspensionReason", + "suspensionExpiresAt" + ], + "additionalProperties": false + }, + "target": { + "type": "object", + "properties": { + "type": { "type": "string" }, - "bizTypeId": { + "targetId": { + "anyOf": [ + { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "courseId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { + "sectionId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "periodsPerWeek": { + "teacherId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "timesPerWeek": { + "sectionTeacherId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "stdCount": { + "homeworkId": { + "nullable": true, + "type": "string" + }, + "sectionTeacherSectionId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "limitCount": { + "sectionTeacherTeacherId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { + "sectionTeacherSectionJwId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { + "sectionTeacherSectionCode": { "nullable": true, "type": "string" }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { + "sectionTeacherTeacherName": { "nullable": true, "type": "string" }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { + "sectionTeacherCourseJwId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "remark": { + "sectionTeacherCourseName": { "nullable": true, "type": "string" }, - "scheduleRemark": { + "homeworkTitle": { "nullable": true, "type": "string" }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { + "homeworkSectionJwId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "campusId": { + "homeworkSectionCode": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "examModeId": { + "sectionJwId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "openDepartmentId": { + "sectionCode": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "teachLanguageId": { + "courseJwId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "roomTypeId": { + "courseName": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester" - ], - "additionalProperties": false - }, - "description": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "content": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedById": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { + "teacherName": { "nullable": true, "type": "string" } }, "required": [ - "id", - "content", - "createdAt", - "updatedAt", - "lastEditedAt", - "lastEditedById", - "sectionId", + "type", + "targetId", "courseId", + "sectionId", "teacherId", - "homeworkId" - ], - "additionalProperties": false - }, - "createdBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "updatedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "deletedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "completion": { - "nullable": true, - "type": "object", - "properties": { - "completedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "completedAt" + "sectionTeacherId", + "homeworkId", + "sectionTeacherSectionId", + "sectionTeacherTeacherId", + "sectionTeacherSectionJwId", + "sectionTeacherSectionCode", + "sectionTeacherTeacherName", + "sectionTeacherCourseJwId", + "sectionTeacherCourseName", + "homeworkTitle", + "homeworkSectionJwId", + "homeworkSectionCode", + "sectionJwId", + "sectionCode", + "courseJwId", + "courseName", + "teacherName" ], "additionalProperties": false - }, - "commentCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 } }, "required": [ - "id", - "title", - "isMajor", - "requiresTeam", - "publishedAt", - "submissionStartAt", - "submissionDueAt", - "createdAt", - "updatedAt", - "deletedAt", - "sectionId", - "createdById", - "updatedById", - "deletedById", - "section", - "description", - "createdBy", - "updatedBy", - "deletedBy", - "completion", - "commentCount" + "hiddenCount", + "viewer", + "target" ], "additionalProperties": false } }, "required": [ - "id", - "homework" + "data", + "pagination", + "meta" ], "additionalProperties": false }, - "localeUpdateRequestSchema": { + "commentCreateRequestSchema": { "type": "object", "properties": { - "locale": { + "targetType": { "type": "string", "enum": [ - "en-us", - "zh-cn" + "section", + "course", + "teacher", + "section-teacher", + "homework" ] - } - }, - "required": [ - "locale" - ], - "additionalProperties": false - }, - "successResponseSchema": { - "type": "object", - "properties": { - "success": { + }, + "targetId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "sectionId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "sectionJwId": { + "anyOf": [ + { + "type": "integer", + "format": "int64", + "minimum": 1 + }, + { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + ] + }, + "courseJwId": { + "anyOf": [ + { + "type": "integer", + "format": "int64", + "minimum": 1 + }, + { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + ] + }, + "teacherId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "homeworkId": { + "type": "string", + "minLength": 1 + }, + "sectionTeacherId": { + "anyOf": [ + { + "type": "integer", + "format": "int64", + "minimum": 1 + }, + { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + ] + }, + "body": { + "type": "string", + "minLength": 1, + "maxLength": 8000 + }, + "visibility": { + "type": "string", + "enum": [ + "public", + "logged_in_only" + ] + }, + "isAnonymous": { "type": "boolean" + }, + "parentId": { + "nullable": true, + "type": "string" + }, + "attachmentIds": { + "type": "array", + "items": { + "type": "string" + } } }, "required": [ - "success" + "targetType", + "body" ], "additionalProperties": false }, - "meResponseSchema": { + "idResponseSchema": { "type": "object", "properties": { "id": { "type": "string" - }, - "email": { - "nullable": true, - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "isAdmin": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": [ - "id", - "email", - "name", - "image", - "username", - "isAdmin", - "createdAt", - "updatedAt" + "id" ], "additionalProperties": false }, - "metadataResponseSchema": { + "descriptionsResponseSchema": { "type": "object", "properties": { - "educationLevels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } + "description": { + "type": "object", + "properties": { + "id": { + "nullable": true, + "type": "string" }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } - }, - "courseCategories": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } - }, - "courseClassifies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } + "content": { + "type": "string" }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } - }, - "classTypes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } - }, - "courseTypes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } + "lastEditedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } - }, - "courseGradations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } + "renderedHtml": { + "type": "string" }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } - }, - "examModes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" + "lastEditedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + } }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } + "required": [ + "id", + "name", + "image", + "username" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "content", + "updatedAt", + "lastEditedAt", + "renderedHtml", + "lastEditedBy" + ], + "additionalProperties": false }, - "teachLanguages": { + "history": { "type": "array", "items": { "type": "object", "properties": { "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { "type": "string" }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } - }, - "campuses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "jwId": { + "previousContent": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { "type": "string" }, - "nameEn": { - "nullable": true, + "nextContent": { "type": "string" }, - "code": { + "editor": { "nullable": true, - "type": "string" - }, - "buildings": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "type": "string" - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } + "type": "object", + "properties": { + "id": { + "type": "string" }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "campusId" - ], - "additionalProperties": false - } + "name": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "image", + "username" + ], + "additionalProperties": false } }, "required": [ "id", - "jwId", - "nameCn", - "nameEn", - "code", - "buildings" + "createdAt", + "previousContent", + "nextContent", + "editor" ], "additionalProperties": false } - } - }, - "required": [ - "educationLevels", - "courseCategories", - "courseClassifies", - "classTypes", - "courseTypes", - "courseGradations", - "examModes", - "teachLanguages", - "campuses" - ], - "additionalProperties": false - }, - "openApiDocumentResponseSchema": { - "type": "object", - "properties": { - "openapi": { - "type": "string" }, - "info": { + "viewer": { "type": "object", "properties": { - "title": { + "userId": { + "nullable": true, "type": "string" }, - "version": { + "name": { + "nullable": true, "type": "string" }, - "description": { + "image": { + "nullable": true, + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "isAuthenticated": { + "type": "boolean" + }, + "isSuspended": { + "type": "boolean" + }, + "suspensionReason": { + "nullable": true, "type": "string" + }, + "suspensionExpiresAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": [ - "title", - "version" + "userId", + "name", + "image", + "isAdmin", + "isAuthenticated", + "isSuspended", + "suspensionReason", + "suspensionExpiresAt" ], "additionalProperties": false - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "url" - ], - "additionalProperties": false - } - }, - "paths": { - "type": "object", - "additionalProperties": {} } }, "required": [ - "openapi", - "info", - "paths" + "description", + "history", + "viewer" ], "additionalProperties": false }, - "paginatedScheduleResponseSchema": { + "descriptionUpsertRequestSchema": { "type": "object", "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periods": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "date": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "weekday": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "startTime": { - "type": "string" - }, - "endTime": { - "type": "string" - }, - "experiment": { - "nullable": true, - "type": "string" - }, - "customPlace": { - "nullable": true, - "type": "string" - }, - "lessonType": { - "nullable": true, - "type": "string" - }, - "weekIndex": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "exerciseClass": { - "nullable": true, - "type": "boolean" - }, - "startUnit": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "endUnit": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "scheduleGroupId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "room": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, + "targetType": { + "type": "string", + "enum": [ + "section", + "course", + "teacher", + "homework" + ] + }, + "targetId": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "number" + } + ] + }, + "sectionJwId": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "number" + } + ] + }, + "courseJwId": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "number" + } + ] + }, + "teacherId": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "number" + } + ] + }, + "homeworkId": { + "type": "string", + "minLength": 1 + }, + "content": { + "type": "string", + "maxLength": 4000 + } + }, + "required": [ + "targetType", + "content" + ], + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "targetId" + ] + }, + { + "properties": { + "targetType": { + "enum": [ + "section" + ], + "type": "string" + } + }, + "required": [ + "sectionJwId" + ] + }, + { + "properties": { + "targetType": { + "enum": [ + "course" + ], + "type": "string" + } + }, + "required": [ + "courseJwId" + ] + }, + { + "properties": { + "targetType": { + "enum": [ + "teacher" + ], + "type": "string" + } + }, + "required": [ + "teacherId" + ] + }, + { + "properties": { + "targetType": { + "enum": [ + "homework" + ], + "type": "string" + } + }, + "required": [ + "homeworkId" + ] + } + ] + }, + "descriptionUpsertResponseSchema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "updated": { + "type": "boolean" + } + }, + "required": [ + "id", + "updated" + ], + "additionalProperties": false + }, + "homeworksListResponseSchema": { + "type": "object", + "properties": { + "viewer": { + "type": "object", + "properties": { + "userId": { + "nullable": true, + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "isAuthenticated": { + "type": "boolean" + }, + "isSuspended": { + "type": "boolean" + }, + "suspensionReason": { + "nullable": true, + "type": "string" + }, + "suspensionExpiresAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "userId", + "name", + "image", + "isAdmin", + "isAuthenticated", + "isSuspended", + "suspensionReason", + "suspensionExpiresAt" + ], + "additionalProperties": false + }, + "homeworks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "isMajor": { + "type": "boolean" + }, + "requiresTeam": { + "type": "boolean" + }, + "publishedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "submissionStartAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "submissionDueAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "deletedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdById": { + "nullable": true, + "type": "string" + }, + "updatedById": { + "nullable": true, + "type": "string" + }, + "deletedById": { + "nullable": true, + "type": "string" + }, + "section": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, "code": { "type": "string" }, - "floor": { + "bizTypeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "virtual": { + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, "type": "boolean" }, - "seatsForSection": { + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 @@ -14107,32 +13312,52 @@ "nullable": true, "type": "string" }, - "seats": { + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "buildingId": { + "semesterId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "roomTypeId": { + "campusId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "namePrimary": { - "type": "string" + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameSecondary": { + "openDepartmentId": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "building": { + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -14145,6 +13370,9 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, @@ -14152,10 +13380,37 @@ "nullable": true, "type": "string" }, - "code": { - "type": "string" + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "campusId": { + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, @@ -14167,874 +13422,789 @@ "nameSecondary": { "nullable": true, "type": "string" - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false } }, "required": [ "id", "jwId", + "code", "nameCn", "nameEn", - "code", - "campusId", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", "namePrimary", - "nameSecondary", - "campus" + "nameSecondary" ], "additionalProperties": false }, - "roomType": { + "semester": { "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false + ] } }, "required": [ "id", "jwId", - "nameCn", - "nameEn", "code", - "floor", - "virtual", - "seatsForSection", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", "remark", - "seats", - "buildingId", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", "roomTypeId", - "namePrimary", - "nameSecondary", - "building", - "roomType" + "course", + "semester" ], "additionalProperties": false }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - }, - "department": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary", - "department" - ], - "additionalProperties": false - } - }, - "section": { + "description": { + "nullable": true, "type": "object", "properties": { "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "content": { + "type": "string" }, - "sourceLastSeenAt": { - "nullable": true, + "createdAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "retiredAt": { - "nullable": true, + "updatedAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { + "lastEditedAt": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "periodsPerWeek": { + "lastEditedById": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "timesPerWeek": { + "sectionId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "stdCount": { + "courseId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "limitCount": { + "teacherId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { + "homeworkId": { "nullable": true, "type": "string" + } + }, + "required": [ + "id", + "content", + "createdAt", + "updatedAt", + "lastEditedAt", + "lastEditedById", + "sectionId", + "courseId", + "teacherId", + "homeworkId" + ], + "additionalProperties": false + }, + "createdBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { + "name": { "nullable": true, - "type": "number" + "type": "string" }, - "practicePeriods": { + "username": { "nullable": true, - "type": "number" + "type": "string" }, - "experimentPeriods": { + "image": { "nullable": true, - "type": "number" + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "updatedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" }, - "machinePeriods": { + "name": { "nullable": true, - "type": "number" + "type": "string" }, - "designPeriods": { + "username": { "nullable": true, - "type": "number" + "type": "string" }, - "testPeriods": { + "image": { "nullable": true, - "type": "number" + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "deletedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" }, - "scheduleState": { + "name": { "nullable": true, "type": "string" }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { + "username": { "nullable": true, "type": "string" }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { + "image": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "completion": { + "nullable": true, + "type": "object", + "properties": { + "completedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "completedAt" + ], + "additionalProperties": false + }, + "commentCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "id", + "title", + "isMajor", + "requiresTeam", + "publishedAt", + "submissionStartAt", + "submissionDueAt", + "createdAt", + "updatedAt", + "deletedAt", + "sectionId", + "createdById", + "updatedById", + "deletedById", + "section", + "description", + "createdBy", + "updatedBy", + "deletedBy", + "completion", + "commentCount" + ], + "additionalProperties": false + } + }, + "auditLogs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "action": { + "type": "string", + "enum": [ + "created", + "deleted" + ] + }, + "titleSnapshot": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" + }, + "actorId": { + "nullable": true, + "type": "string" + }, + "actor": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" }, - "remark": { + "name": { "nullable": true, "type": "string" }, - "scheduleRemark": { + "username": { "nullable": true, "type": "string" }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { + "image": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester" - ], - "additionalProperties": false - }, - "scheduleGroup": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "no": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "actualPeriods": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "isDefault": { - "type": "boolean" - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" } }, "required": [ "id", - "jwId", - "no", - "limitCount", - "stdCount", - "actualPeriods", - "isDefault", - "sectionId" + "name", + "username", + "image" ], "additionalProperties": false } }, "required": [ "id", - "periods", - "date", - "weekday", - "startTime", - "endTime", - "experiment", - "customPlace", - "lessonType", - "weekIndex", - "exerciseClass", - "startUnit", - "endUnit", - "roomId", + "action", + "titleSnapshot", + "createdAt", "sectionId", - "scheduleGroupId", - "room", - "teachers", - "section", - "scheduleGroup" + "homeworkId", + "actorId", + "actor" ], "additionalProperties": false } + } + }, + "required": [ + "viewer", + "homeworks", + "auditLogs" + ], + "additionalProperties": false + }, + "homeworkCreateRequestSchema": { + "anyOf": [ + { + "type": "object", + "properties": { + "title": { + "type": "string", + "minLength": 1, + "maxLength": 200 + }, + "description": { + "nullable": true, + "type": "string", + "maxLength": 4000 + }, + "publishedAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "submissionStartAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "submissionDueAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "isMajor": { + "type": "boolean" + }, + "requiresTeam": { + "type": "boolean" + }, + "sectionId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "sectionJwId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + } + }, + "required": [ + "title", + "sectionId" + ], + "additionalProperties": false }, - "pagination": { + { "type": "object", "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "title": { + "type": "string", + "minLength": 1, + "maxLength": 200 }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "description": { + "nullable": true, + "type": "string", + "maxLength": 4000 }, - "total": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "publishedAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] }, - "totalPages": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "submissionStartAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "submissionDueAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "isMajor": { + "type": "boolean" + }, + "requiresTeam": { + "type": "boolean" + }, + "sectionId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "sectionJwId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] } }, "required": [ - "page", - "pageSize", - "total", - "totalPages" + "title", + "sectionJwId" ], "additionalProperties": false } - }, - "required": [ - "data", - "pagination" - ], - "additionalProperties": false + ] }, - "paginatedSectionResponseSchema": { + "homeworkCreateResponseSchema": { "type": "object", "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "credits": { - "nullable": true, - "type": "number" - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } + "id": { + "type": "string" + }, + "homework": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "isMajor": { + "type": "boolean" + }, + "requiresTeam": { + "type": "boolean" + }, + "publishedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "submissionStartAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "submissionDueAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "deletedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdById": { + "nullable": true, + "type": "string" + }, + "updatedById": { + "nullable": true, + "type": "string" + }, + "deletedById": { + "nullable": true, + "type": "string" + }, + "section": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "code": { - "type": "string" - } + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "required": [ - "id", - "jwId", - "nameCn", - "code" - ], - "additionalProperties": false - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - } + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code" - ], - "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { + "type": "string" + }, + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -15042,232 +14212,517 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "personId": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teacherId": { + "classTypeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { + "classifyId": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameCn": { + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { "type": "string" }, - "nameEn": { + "nameSecondary": { "nullable": true, "type": "string" } }, "required": [ "id", - "personId", - "teacherId", + "jwId", "code", "nameCn", - "nameEn" + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "namePrimary", + "nameSecondary" ], "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] } - } - }, - "required": [ - "id", - "jwId", - "code", - "credits", - "stdCount", - "limitCount", - "courseId", - "semesterId", - "campusId", - "openDepartmentId", - "course", - "semester", - "campus", - "teachers" - ], - "additionalProperties": false - } - }, - "pagination": { - "type": "object", - "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "total": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" + ], + "additionalProperties": false }, - "totalPages": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "page", - "pageSize", - "total", - "totalPages" - ], - "additionalProperties": false - } - }, - "required": [ - "data", - "pagination" - ], - "additionalProperties": false - }, - "paginatedSemesterResponseSchema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/semesterSchema" - } - }, - "pagination": { - "type": "object", - "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "description": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "content": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedById": { + "nullable": true, + "type": "string" + }, + "sectionId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "courseId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "content", + "createdAt", + "updatedAt", + "lastEditedAt", + "lastEditedById", + "sectionId", + "courseId", + "teacherId", + "homeworkId" + ], + "additionalProperties": false }, - "pageSize": { + "createdBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "updatedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "deletedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "completion": { + "nullable": true, + "type": "object", + "properties": { + "completedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "completedAt" + ], + "additionalProperties": false + }, + "commentCount": { "type": "integer", - "minimum": -9007199254740991, + "minimum": 0, "maximum": 9007199254740991 - }, - "total": { + } + }, + "required": [ + "id", + "title", + "isMajor", + "requiresTeam", + "publishedAt", + "submissionStartAt", + "submissionDueAt", + "createdAt", + "updatedAt", + "deletedAt", + "sectionId", + "createdById", + "updatedById", + "deletedById", + "section", + "description", + "createdBy", + "updatedBy", + "deletedBy", + "completion", + "commentCount" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "homework" + ], + "additionalProperties": false + }, + "busPreferenceResponseSchema": { + "type": "object", + "properties": { + "preference": { + "type": "object", + "properties": { + "preferredOriginCampusId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "totalPages": { + "preferredDestinationCampusId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 + }, + "showDepartedTrips": { + "type": "boolean" } }, "required": [ - "page", - "pageSize", - "total", - "totalPages" + "preferredOriginCampusId", + "preferredDestinationCampusId", + "showDepartedTrips" ], "additionalProperties": false } }, "required": [ - "data", - "pagination" + "preference" ], "additionalProperties": false }, - "paginatedTeacherResponseSchema": { + "busPreferenceRequestSchema": { "type": "object", "properties": { - "data": { + "preferredOriginCampusId": { + "default": null, + "nullable": true, + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + }, + "preferredDestinationCampusId": { + "default": null, + "nullable": true, + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + }, + "showDepartedTrips": { + "type": "boolean" + } + }, + "required": [ + "preferredOriginCampusId", + "preferredDestinationCampusId", + "showDepartedTrips" + ], + "additionalProperties": false + }, + "subscribedHomeworksResponseSchema": { + "type": "object", + "properties": { + "viewer": { + "type": "object", + "properties": { + "userId": { + "nullable": true, + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "isAuthenticated": { + "type": "boolean" + }, + "isSuspended": { + "type": "boolean" + }, + "suspensionReason": { + "nullable": true, + "type": "string" + }, + "suspensionExpiresAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "userId", + "name", + "image", + "isAdmin", + "isAuthenticated", + "isSuspended", + "suspensionReason", + "suspensionExpiresAt" + ], + "additionalProperties": false + }, + "homeworks": { "type": "array", "items": { "type": "object", "properties": { "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { "type": "string" }, - "nameEn": { - "nullable": true, + "title": { "type": "string" }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "isMajor": { + "type": "boolean" }, - "email": { - "nullable": true, - "type": "string" + "requiresTeam": { + "type": "boolean" }, - "telephone": { + "publishedAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "mobile": { + "submissionStartAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "address": { + "submissionDueAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "postcode": { - "nullable": true, - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "qq": { - "nullable": true, - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "wechat": { + "deletedAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "departmentId": { - "nullable": true, + "sectionId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teacherTitleId": { + "createdById": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "department": { + "updatedById": { + "nullable": true, + "type": "string" + }, + "deletedById": { "nullable": true, + "type": "string" + }, + "section": { "type": "object", "properties": { "id": { @@ -15275,284 +14730,508 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, "code": { "type": "string" }, - "nameCn": { - "type": "string" + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "credits": { "nullable": true, - "type": "string" + "type": "number" }, - "isCollege": { + "period": { "nullable": true, - "type": "boolean" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege" - ], - "additionalProperties": false - }, - "teacherTitle": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { + "periodsPerWeek": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "stdCount": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "code": { - "type": "string" + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "enabled": { + "graduateAndPostgraduate": { "nullable": true, "type": "boolean" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "enabled" - ], - "additionalProperties": false - }, - "_count": { - "type": "object", - "properties": { - "sections": { + }, + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 - } - }, - "required": [ - "sections" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "department", - "teacherTitle", - "_count" - ], - "additionalProperties": false - } - }, - "pagination": { - "type": "object", - "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "total": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "totalPages": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "page", - "pageSize", - "total", - "totalPages" - ], - "additionalProperties": false - } - }, - "required": [ - "data", - "pagination" - ], - "additionalProperties": false - }, - "todosListResponseSchema": { - "type": "object", - "properties": { - "counts": { - "type": "object", - "properties": { - "incomplete": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "completed": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "overdue": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": [ - "incomplete", - "completed", - "overdue" - ], - "additionalProperties": false - }, - "todos": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + } + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" + ], + "additionalProperties": false }, - "content": { + "description": { "nullable": true, - "type": "string" + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "content": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedById": { + "nullable": true, + "type": "string" + }, + "sectionId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "courseId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "content", + "createdAt", + "updatedAt", + "lastEditedAt", + "lastEditedById", + "sectionId", + "courseId", + "teacherId", + "homeworkId" + ], + "additionalProperties": false }, - "priority": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] + "createdBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false }, - "completed": { - "type": "boolean" + "updatedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false }, - "dueAt": { + "deletedBy": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "completion": { + "nullable": true, + "type": "object", + "properties": { + "completedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "completedAt" + ], + "additionalProperties": false }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "commentCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 } }, "required": [ "id", "title", - "content", - "priority", - "completed", - "dueAt", + "isMajor", + "requiresTeam", + "publishedAt", + "submissionStartAt", + "submissionDueAt", "createdAt", - "updatedAt" + "updatedAt", + "deletedAt", + "sectionId", + "createdById", + "updatedById", + "deletedById", + "section", + "description", + "createdBy", + "updatedBy", + "deletedBy", + "completion", + "commentCount" ], "additionalProperties": false } - } - }, - "required": [ - "counts", - "todos" - ], - "additionalProperties": false - }, - "todoCreateRequestSchema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "minLength": 1, - "maxLength": 200 - }, - "content": { - "nullable": true, - "type": "string", - "maxLength": 4000 - }, - "priority": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] }, - "dueAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - } - }, - "required": [ - "title" - ], - "additionalProperties": false - }, - "uploadsListResponseSchema": { - "type": "object", - "properties": { - "data": { + "auditLogs": { "type": "array", "items": { "type": "object", @@ -15560,3159 +15239,1314 @@ "id": { "type": "string" }, - "key": { - "type": "string" + "action": { + "type": "string", + "enum": [ + "created", + "deleted" + ] }, - "filename": { + "titleSnapshot": { "type": "string" }, - "size": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, "createdAt": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" + }, + "actorId": { + "nullable": true, + "type": "string" + }, + "actor": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false } }, "required": [ "id", - "key", - "filename", - "size", - "createdAt" + "action", + "titleSnapshot", + "createdAt", + "sectionId", + "homeworkId", + "actorId", + "actor" ], "additionalProperties": false } }, - "pagination": { + "sectionIds": { + "type": "array", + "items": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + } + }, + "required": [ + "viewer", + "homeworks", + "auditLogs", + "sectionIds" + ], + "additionalProperties": false + }, + "compactOverviewResponseSchema": { + "type": "object", + "properties": { + "user": { "type": "object", "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "userId": { + "nullable": true, + "type": "string" }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "name": { + "nullable": true, + "type": "string" }, - "total": { + "image": { + "nullable": true, + "type": "string" + }, + "isAdmin": { + "type": "boolean" + } + }, + "required": [ + "userId", + "name", + "image", + "isAdmin" + ], + "additionalProperties": false + }, + "anchor": { + "type": "object", + "properties": { + "atTime": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "todayStart": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "tomorrowStart": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "homeworkWindowDays": { "type": "integer", - "minimum": -9007199254740991, + "exclusiveMinimum": true, "maximum": 9007199254740991 }, - "totalPages": { + "homeworkWindowEnd": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "limit": { "type": "integer", - "minimum": -9007199254740991, + "exclusiveMinimum": true, "maximum": 9007199254740991 } }, "required": [ - "page", - "pageSize", - "total", - "totalPages" + "atTime", + "todayStart", + "tomorrowStart", + "homeworkWindowDays", + "homeworkWindowEnd", + "limit" ], "additionalProperties": false }, - "meta": { + "counts": { "type": "object", "properties": { - "maxFileSizeBytes": { + "todos": { + "type": "object", + "properties": { + "incomplete": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "completed": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "overdue": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "incomplete", + "completed", + "overdue" + ], + "additionalProperties": false + }, + "pendingHomeworks": { "type": "integer", - "minimum": -9007199254740991, + "minimum": 0, "maximum": 9007199254740991 }, - "quotaBytes": { + "dueSoonHomeworks": { "type": "integer", - "minimum": -9007199254740991, + "minimum": 0, "maximum": 9007199254740991 }, - "usedBytes": { + "todaySchedules": { "type": "integer", - "minimum": -9007199254740991, + "minimum": 0, + "maximum": 9007199254740991 + }, + "upcomingExams": { + "type": "integer", + "minimum": 0, "maximum": 9007199254740991 } }, "required": [ - "maxFileSizeBytes", - "quotaBytes", - "usedBytes" + "todos", + "pendingHomeworks", + "dueSoonHomeworks", + "todaySchedules", + "upcomingExams" ], "additionalProperties": false - } - }, - "required": [ - "data", - "pagination", - "meta" - ], - "additionalProperties": false - }, - "uploadCreateRequestSchema": { - "type": "object", - "properties": { - "filename": { - "type": "string", - "minLength": 1 - }, - "contentType": { - "type": "string" }, - "size": { - "anyOf": [ - { - "type": "string" + "schedules": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 }, - { - "type": "number" - } - ] - } - }, - "required": [ - "filename", - "size" - ], - "additionalProperties": false - }, - "uploadCreateResponseSchema": { - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "url": { - "type": "string" - }, - "maxFileSizeBytes": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "quotaBytes": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "usedBytes": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "key", - "url", - "maxFileSizeBytes", - "quotaBytes", - "usedBytes" - ], - "additionalProperties": false - }, - "adminCommentsResponseSchema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "body": { - "type": "string" - }, - "visibility": { - "type": "string", - "enum": [ - "public", - "logged_in_only" - ] - }, - "status": { - "type": "string", - "enum": [ - "active", - "softbanned", - "deleted" - ] - }, - "isAnonymous": { - "type": "boolean" - }, - "authorName": { - "nullable": true, - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "deletedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "moderatedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "moderationNote": { - "nullable": true, - "type": "string" - }, - "userId": { - "nullable": true, - "type": "string" - }, - "moderatedById": { - "nullable": true, - "type": "string" - }, - "parentId": { - "nullable": true, - "type": "string" - }, - "rootId": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - }, - "user": { - "nullable": true, + "items": { + "type": "array", + "items": { "type": "object", "properties": { - "name": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periods": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "date": { "nullable": true, - "type": "string" - } - }, - "required": [ - "name" - ], - "additionalProperties": false - }, - "section": { - "nullable": true, - "type": "object", - "properties": { - "jwId": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "weekday": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { + "startTime": { "type": "string" }, - "course": { - "type": "object", - "properties": { - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - } - }, - "required": [ - "jwId", - "code", - "course" - ], - "additionalProperties": false - }, - "course": { - "nullable": true, - "type": "object", - "properties": { - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - }, - "teacher": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "id", - "nameCn" - ], - "additionalProperties": false - }, - "homework": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "section": { - "type": "object", - "properties": { - "code": { - "type": "string" - } - }, - "required": [ - "code" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "title", - "section" - ], - "additionalProperties": false - }, - "sectionTeacher": { - "nullable": true, - "type": "object", - "properties": { - "section": { - "type": "object", - "properties": { - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "course": { - "type": "object", - "properties": { - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - } - }, - "required": [ - "jwId", - "code", - "course" - ], - "additionalProperties": false - }, - "teacher": { - "type": "object", - "properties": { - "nameCn": { - "type": "string" - } - }, - "required": [ - "nameCn" - ], - "additionalProperties": false - } - }, - "required": [ - "section", - "teacher" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "body", - "visibility", - "status", - "isAnonymous", - "authorName", - "createdAt", - "updatedAt", - "deletedAt", - "moderatedAt", - "moderationNote", - "userId", - "moderatedById", - "parentId", - "rootId", - "sectionId", - "courseId", - "teacherId", - "sectionTeacherId", - "homeworkId", - "user", - "section", - "course", - "teacher", - "homework", - "sectionTeacher" - ], - "additionalProperties": false - } - }, - "pagination": { - "type": "object", - "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "total": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "totalPages": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "page", - "pageSize", - "total", - "totalPages" - ], - "additionalProperties": false - } - }, - "required": [ - "data", - "pagination" - ], - "additionalProperties": false - }, - "adminDescriptionsResponseSchema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "content": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedById": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - }, - "lastEditedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { + "endTime": { "type": "string" }, - "name": { + "experiment": { "nullable": true, "type": "string" }, - "username": { + "customPlace": { "nullable": true, "type": "string" }, - "image": { + "lessonType": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "section": { - "nullable": true, - "type": "object", - "properties": { - "jwId": { - "nullable": true, + }, + "weekIndex": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { + "exerciseClass": { "nullable": true, - "type": "string" + "type": "boolean" }, - "course": { - "nullable": true, - "type": "object", - "properties": { - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - } - }, - "required": [ - "jwId", - "code", - "course" - ], - "additionalProperties": false - }, - "course": { - "nullable": true, - "type": "object", - "properties": { - "jwId": { + "startUnit": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { - "type": "string" + "endUnit": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - }, - "teacher": { - "nullable": true, - "type": "object", - "properties": { - "id": { + "roomId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "id", - "nameCn" - ], - "additionalProperties": false - }, - "homework": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "title": { - "type": "string" + "scheduleGroupId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "section": { + "room": { "nullable": true, "type": "object", "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, "jwId": { - "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, "code": { + "type": "string" + }, + "floor": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "virtual": { + "type": "boolean" + }, + "seatsForSection": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { "nullable": true, "type": "string" }, - "course": { + "seats": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "buildingId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + }, + "building": { "nullable": true, "type": "object", "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, "code": { "type": "string" }, - "nameCn": { + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - } - }, - "required": [ - "jwId", - "code", - "course" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "title", - "section" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "content", - "createdAt", - "updatedAt", - "lastEditedAt", - "lastEditedById", - "sectionId", - "courseId", - "teacherId", - "homeworkId", - "lastEditedBy", - "section", - "course", - "teacher", - "homework" - ], - "additionalProperties": false - } - }, - "pagination": { - "type": "object", - "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "total": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "totalPages": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "page", - "pageSize", - "total", - "totalPages" - ], - "additionalProperties": false - } - }, - "required": [ - "data", - "pagination" - ], - "additionalProperties": false - }, - "adminHomeworksResponseSchema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "submissionDueAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "deletedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "section": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + }, + "nameSecondary": { + "nullable": true, + "type": "string" + }, + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "campusId", + "namePrimary", + "nameSecondary", + "campus" + ], + "additionalProperties": false + }, + "roomType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "floor", + "virtual", + "seatsForSection", + "remark", + "seats", + "buildingId", + "roomTypeId", + "namePrimary", + "nameSecondary", + "building", + "roomType" + ], + "additionalProperties": false }, - "code": { - "nullable": true, - "type": "string" + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + }, + "department": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary", + "department" + ], + "additionalProperties": false + } }, - "course": { + "section": { "type": "object", "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, "code": { "type": "string" }, - "nameCn": { + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "jwId", - "code", - "course" - ], - "additionalProperties": false - }, - "createdBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "updatedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + } + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" + ], + "additionalProperties": false }, - "image": { - "nullable": true, - "type": "string" + "scheduleGroup": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "no": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "actualPeriods": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "isDefault": { + "type": "boolean" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "id", + "jwId", + "no", + "limitCount", + "stdCount", + "actualPeriods", + "isDefault", + "sectionId" + ], + "additionalProperties": false } }, "required": [ "id", - "name", - "username", - "image" + "periods", + "date", + "weekday", + "startTime", + "endTime", + "experiment", + "customPlace", + "lessonType", + "weekIndex", + "exerciseClass", + "startUnit", + "endUnit", + "roomId", + "sectionId", + "scheduleGroupId", + "room", + "teachers", + "section", + "scheduleGroup" ], "additionalProperties": false + } + } + }, + "required": [ + "total", + "items" + ], + "additionalProperties": false + }, + "todos": { + "type": "object", + "properties": { + "counts": { + "type": "object", + "properties": { + "incomplete": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "completed": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "overdue": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } }, - "deletedBy": { - "nullable": true, + "required": [ + "incomplete", + "completed", + "overdue" + ], + "additionalProperties": false + }, + "items": { + "type": "array", + "items": { "type": "object", "properties": { "id": { "type": "string" }, - "name": { - "nullable": true, + "title": { "type": "string" }, - "username": { + "content": { "nullable": true, "type": "string" }, - "image": { + "priority": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] + }, + "completed": { + "type": "boolean" + }, + "dueAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": [ "id", - "name", - "username", - "image" + "title", + "content", + "priority", + "completed", + "dueAt", + "createdAt", + "updatedAt" ], "additionalProperties": false } - }, - "required": [ - "id", - "title", - "submissionDueAt", - "createdAt", - "updatedAt", - "deletedAt", - "section", - "createdBy", - "updatedBy", - "deletedBy" - ], - "additionalProperties": false - } + } + }, + "required": [ + "counts", + "items" + ], + "additionalProperties": false }, - "pagination": { + "dueTodos": { "type": "object", "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, "total": { "type": "integer", - "minimum": -9007199254740991, + "minimum": 0, "maximum": 9007199254740991 }, - "totalPages": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "page", - "pageSize", - "total", - "totalPages" - ], - "additionalProperties": false - } - }, - "required": [ - "data", - "pagination" - ], - "additionalProperties": false - }, - "adminSuspensionsResponseSchema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "userId": { - "type": "string" - }, - "createdById": { - "nullable": true, - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "reason": { - "nullable": true, - "type": "string" - }, - "note": { - "nullable": true, - "type": "string" - }, - "expiresAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "liftedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "liftedById": { - "nullable": true, - "type": "string" - }, - "user": { - "nullable": true, + "items": { + "type": "array", + "items": { "type": "object", "properties": { "id": { "type": "string" }, - "name": { - "nullable": true, + "title": { "type": "string" + }, + "priority": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] + }, + "dueAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": [ "id", - "name" + "title", + "priority", + "dueAt", + "createdAt" ], "additionalProperties": false } - }, - "required": [ - "id", - "userId", - "createdById", - "createdAt", - "reason", - "note", - "expiresAt", - "liftedAt", - "liftedById" - ], - "additionalProperties": false - } - } - }, - "required": [ - "data" - ], - "additionalProperties": false - }, - "adminCreateSuspensionRequestSchema": { - "type": "object", - "properties": { - "userId": { - "type": "string", - "minLength": 1 - }, - "reason": { - "type": "string" - }, - "note": { - "type": "string" - }, - "expiresAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - } - }, - "required": [ - "userId" - ], - "additionalProperties": false - }, - "adminSuspensionResponseSchema": { - "type": "object", - "properties": { - "suspension": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "userId": { - "type": "string" - }, - "createdById": { - "nullable": true, - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "reason": { - "nullable": true, - "type": "string" - }, - "note": { - "nullable": true, - "type": "string" - }, - "expiresAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "liftedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "liftedById": { - "nullable": true, - "type": "string" - }, - "user": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "userId", - "createdById", - "createdAt", - "reason", - "note", - "expiresAt", - "liftedAt", - "liftedById" - ], - "additionalProperties": false - } - }, - "required": [ - "suspension" - ], - "additionalProperties": false - }, - "adminUsersResponseSchema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "isAdmin": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "email": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "isAdmin", - "createdAt", - "email" - ], - "additionalProperties": false - } - }, - "pagination": { - "type": "object", - "properties": { - "page": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "pageSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "total": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "totalPages": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 } }, "required": [ - "page", - "pageSize", "total", - "totalPages" - ], - "additionalProperties": false - } - }, - "required": [ - "data", - "pagination" - ], - "additionalProperties": false - }, - "busNextDeparturesResponseSchema": { - "type": "object", - "properties": { - "originCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" + "items" ], "additionalProperties": false }, - "destinationCampus": { - "nullable": true, + "homeworks": { "type": "object", "properties": { - "id": { + "total": { "type": "integer", - "minimum": -9007199254740991, + "minimum": 0, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "atTime": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "dayType": { - "type": "string", - "enum": [ - "weekday", - "weekend" - ] - }, - "totalRoutes": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "departures": { - "type": "array", - "items": { - "type": "object", - "properties": { - "tripId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "routeId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "route": { + "items": { + "type": "array", + "items": { "type": "object", "properties": { "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { "type": "string" }, - "nameEn": { - "nullable": true, + "title": { "type": "string" }, - "descriptionPrimary": { - "type": "string" + "isMajor": { + "type": "boolean" }, - "descriptionSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "descriptionPrimary", - "descriptionSecondary" - ], - "additionalProperties": false - }, - "originCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "requiresTeam": { + "type": "boolean" }, - "nameCn": { - "type": "string" + "publishedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "nameEn": { + "submissionStartAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "latitude": { - "type": "number" + "submissionDueAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "longitude": { - "type": "number" + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "namePrimary": { - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "nameSecondary": { + "deletedAt": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "destinationCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "sectionId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { + "createdById": { "nullable": true, "type": "string" }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { + "updatedById": { + "nullable": true, "type": "string" }, - "nameSecondary": { + "deletedById": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "departureTime": { - "nullable": true, - "type": "string" - }, - "arrivalTime": { - "nullable": true, - "type": "string" - }, - "departureEstimated": { - "type": "boolean" - }, - "arrivalEstimated": { - "type": "boolean" - }, - "minutesUntilDeparture": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "dayType": { - "type": "string", - "enum": [ - "weekday", - "weekend" - ] - }, - "status": { - "type": "string", - "enum": [ - "upcoming", - "departed" - ] - } - }, - "required": [ - "tripId", - "routeId", - "route", - "originCampus", - "destinationCampus", - "departureTime", - "arrivalTime", - "departureEstimated", - "arrivalEstimated", - "minutesUntilDeparture", - "dayType", - "status" - ], - "additionalProperties": false - } - }, - "nextAvailableDeparture": { - "nullable": true, - "type": "object", - "properties": { - "tripId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "routeId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "route": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "descriptionPrimary": { - "type": "string" - }, - "descriptionSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "descriptionPrimary", - "descriptionSecondary" - ], - "additionalProperties": false - }, - "originCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "destinationCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "departureTime": { - "nullable": true, - "type": "string" - }, - "arrivalTime": { - "nullable": true, - "type": "string" - }, - "departureEstimated": { - "type": "boolean" - }, - "arrivalEstimated": { - "type": "boolean" - }, - "minutesUntilDeparture": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "dayType": { - "type": "string", - "enum": [ - "weekday", - "weekend" - ] - }, - "status": { - "type": "string", - "enum": [ - "upcoming", - "departed" - ] - } - }, - "required": [ - "tripId", - "routeId", - "route", - "originCampus", - "destinationCampus", - "departureTime", - "arrivalTime", - "departureEstimated", - "arrivalEstimated", - "minutesUntilDeparture", - "dayType", - "status" - ], - "additionalProperties": false - }, - "message": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "originCampus", - "destinationCampus", - "atTime", - "dayType", - "totalRoutes", - "departures", - "nextAvailableDeparture", - "message" - ], - "additionalProperties": false - }, - "busPreferenceResponseSchema": { - "type": "object", - "properties": { - "preference": { - "type": "object", - "properties": { - "preferredOriginCampusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "preferredDestinationCampusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "showDepartedTrips": { - "type": "boolean" - } - }, - "required": [ - "preferredOriginCampusId", - "preferredDestinationCampusId", - "showDepartedTrips" - ], - "additionalProperties": false - } - }, - "required": [ - "preference" - ], - "additionalProperties": false - }, - "busPreferenceRequestSchema": { - "type": "object", - "properties": { - "preferredOriginCampusId": { - "default": null, - "nullable": true, - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - }, - "preferredDestinationCampusId": { - "default": null, - "nullable": true, - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - }, - "showDepartedTrips": { - "type": "boolean" - } - }, - "required": [ - "preferredOriginCampusId", - "preferredDestinationCampusId", - "showDepartedTrips" - ], - "additionalProperties": false - }, - "busRouteSearchResponseSchema": { - "type": "object", - "properties": { - "originCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "destinationCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "total": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "descriptionPrimary": { - "type": "string" - }, - "descriptionSecondary": { - "nullable": true, - "type": "string" - }, - "originCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "destinationCampus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "stopCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "weekdayTrips": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "weekendTrips": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "stops": { - "type": "array", - "items": { - "type": "object", - "properties": { - "stopOrder": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campus": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "latitude", - "longitude", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - }, - "required": [ - "stopOrder", - "campus" - ], - "additionalProperties": false - } - } - }, - "required": [ - "id", - "nameCn", - "nameEn", - "descriptionPrimary", - "descriptionSecondary", - "originCampus", - "destinationCampus", - "stopCount", - "weekdayTrips", - "weekendTrips", - "stops" - ], - "additionalProperties": false - } - } - }, - "required": [ - "originCampus", - "destinationCampus", - "total", - "routes" - ], - "additionalProperties": false - }, - "calendarSubscriptionBatchRequestSchema": { - "type": "object", - "properties": { - "sectionIds": { - "maxItems": 500, - "type": "array", - "items": { - "type": "integer", - "maximum": 9007199254740991, - "minimum": 1 - } - }, - "codes": { - "maxItems": 500, - "type": "array", - "items": { - "type": "string", - "minLength": 1, - "maxLength": 64 - } - }, - "semesterId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "action": { - "type": "string", - "enum": [ - "add", - "remove", - "set" - ] - } - }, - "required": [ - "action" - ], - "additionalProperties": false - }, - "calendarSubscriptionBatchResponseSchema": { - "type": "object", - "properties": { - "semester": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "code" - ], - "additionalProperties": false - }, - "matchedCodes": { - "type": "array", - "items": { - "type": "string" - } - }, - "unmatchedCodes": { - "type": "array", - "items": { - "type": "string" - } - }, - "matchedSectionIds": { - "type": "array", - "items": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - } - }, - "unmatchedSectionIds": { - "type": "array", - "items": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - } - }, - "suggestions": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "sections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "category": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "openDepartment": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" - ], - "additionalProperties": false - } - }, - "total": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "action": { - "type": "string", - "enum": [ - "add", - "remove", - "set" - ] - }, - "addedCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "removedCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "unchangedCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "subscription": { - "nullable": true, - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "sections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { + "section": { "type": "object", "properties": { "id": { @@ -18725,54 +16559,172 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, "code": { "type": "string" }, - "nameCn": { + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, "type": "string" }, - "nameEn": { + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { "nullable": true, "type": "string" }, - "categoryId": { + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classTypeId": { + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classifyId": { + "campusId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "educationLevelId": { + "examModeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "gradationId": { + "openDepartmentId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "typeId": { + "teachLanguageId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "category": { + "roomTypeId": { "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -18780,470 +16732,345 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { + "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { + }, + "categoryId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { + "classTypeId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "educationLevelId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "typeId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { + "namePrimary": { "type": "string" }, - "nameEn": { + "nameSecondary": { "nullable": true, "type": "string" } }, "required": [ "id", + "jwId", + "code", "nameCn", - "nameEn" + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { + "semester": { "nullable": true, - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] } }, "required": [ "id", "jwId", "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" ], "additionalProperties": false }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { + "description": { "nullable": true, "type": "object", "properties": { "id": { + "type": "string" + }, + "content": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedById": { + "nullable": true, + "type": "string" + }, + "sectionId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { + "courseId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "content", + "createdAt", + "updatedAt", + "lastEditedAt", + "lastEditedById", + "sectionId", + "courseId", + "teacherId", + "homeworkId" + ], + "additionalProperties": false + }, + "createdBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "string" }, - "nameEn": { + "name": { "nullable": true, "type": "string" }, - "code": { + "username": { "nullable": true, "type": "string" }, - "namePrimary": { + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "updatedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "string" }, - "nameSecondary": { + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { "nullable": true, "type": "string" } }, "required": [ "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" + "name", + "username", + "image" ], "additionalProperties": false }, - "openDepartment": { + "deletedBy": { "nullable": true, "type": "object", "properties": { "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { "type": "string" }, - "nameEn": { + "name": { "nullable": true, "type": "string" }, - "isCollege": { + "username": { "nullable": true, - "type": "boolean" - }, - "namePrimary": { "type": "string" }, - "nameSecondary": { + "image": { "nullable": true, "type": "string" } }, "required": [ "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" + "name", + "username", + "image" ], "additionalProperties": false }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } + "completion": { + "nullable": true, + "type": "object", + "properties": { + "completedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "completedAt" + ], + "additionalProperties": false + }, + "commentCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 } }, "required": [ "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" + "title", + "isMajor", + "requiresTeam", + "publishedAt", + "submissionStartAt", + "submissionDueAt", + "createdAt", + "updatedAt", + "deletedAt", + "sectionId", + "createdById", + "updatedById", + "deletedById", + "section", + "description", + "createdBy", + "updatedBy", + "deletedBy", + "completion", + "commentCount" ], "additionalProperties": false } - }, - "calendarPath": { - "type": "string" - }, - "calendarUrl": { - "type": "string" - }, - "note": { - "type": "string" } }, "required": [ - "userId", - "sections", - "calendarPath", - "calendarUrl", - "note" + "total", + "items" ], "additionalProperties": false - } - }, - "required": [ - "semester", - "matchedCodes", - "unmatchedCodes", - "matchedSectionIds", - "unmatchedSectionIds", - "suggestions", - "sections", - "total", - "action", - "addedCount", - "removedCount", - "unchangedCount", - "subscription" - ], - "additionalProperties": false - }, - "currentCalendarSubscriptionResponseSchema": { - "type": "object", - "properties": { - "subscription": { - "nullable": true, + }, + "exams": { "type": "object", "properties": { - "userId": { - "type": "string" + "total": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 }, - "sections": { + "items": { "type": "array", "items": { "type": "object", @@ -19258,172 +17085,109 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { + "examType": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "limitCount": { + "startTime": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { + "endTime": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { + "examDate": { "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "selectedStdCount": { + "examTakeCount": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { + "examMode": { "nullable": true, "type": "string" }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { + "examBatchId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "openDepartmentId": { - "nullable": true, + "sectionId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teachLanguageId": { + "examBatch": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "examRooms": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "room": { + "type": "string" + }, + "count": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "id", + "room", + "count", + "examId" + ], + "additionalProperties": false + } }, - "course": { + "section": { "type": "object", "properties": { "id": { @@ -19431,59 +17195,177 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { + "type": "string" + }, + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, "type": "string" }, - "nameCn": { + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, "type": "string" }, - "nameEn": { + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { "nullable": true, "type": "string" }, - "categoryId": { + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classTypeId": { + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classifyId": { + "campusId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "educationLevelId": { + "examModeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "gradationId": { + "openDepartmentId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "typeId": { + "teachLanguageId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "category": { + "roomTypeId": { "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -19491,526 +17373,174 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { + "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { + }, + "categoryId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { + "classTypeId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "educationLevelId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "typeId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { + "namePrimary": { "type": "string" }, - "nameEn": { + "nameSecondary": { "nullable": true, "type": "string" } }, "required": [ "id", + "jwId", + "code", "nameCn", - "nameEn" + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { + "semester": { "nullable": true, - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] } }, "required": [ "id", "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "openDepartment": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "jwId", + "examType", + "startTime", + "endTime", + "examDate", + "examTakeCount", + "examMode", + "examBatchId", + "sectionId", + "examBatch", + "examRooms", + "section" ], "additionalProperties": false } - }, - "calendarPath": { - "type": "string" - }, - "calendarUrl": { - "type": "string" - }, - "note": { - "type": "string" } }, "required": [ - "userId", - "sections", - "calendarPath", - "calendarUrl", - "note" + "total", + "items" ], "additionalProperties": false } }, "required": [ - "subscription" - ], - "additionalProperties": false - }, - "matchSectionCodesRequestSchema": { - "type": "object", - "properties": { - "codes": { - "minItems": 1, - "maxItems": 500, - "type": "array", - "items": { - "type": "string", - "minLength": 1, - "maxLength": 64, - "pattern": "^[A-Za-z0-9_.-]+$" - } - }, - "semesterId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - } - }, - "required": [ - "codes" + "user", + "anchor", + "counts", + "schedules", + "todos", + "dueTodos", + "homeworks", + "exams" ], "additionalProperties": false }, - "calendarSubscriptionImportResponseSchema": { + "subscribedSchedulesResponseSchema": { "type": "object", "properties": { - "success": { - "type": "boolean" - }, - "semester": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "code" - ], - "additionalProperties": false - }, - "matchedCodes": { - "type": "array", - "items": { - "type": "string" - } - }, - "unmatchedCodes": { - "type": "array", - "items": { - "type": "string" - } - }, - "ambiguousCodes": { - "type": "array", - "items": { - "type": "string" - } - }, - "sections": { + "schedules": { "type": "array", "items": { "type": "object", @@ -20020,177 +17550,455 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { + "periods": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { + "date": { "nullable": true, "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, + "weekday": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, + "startTime": { "type": "string" }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, + "endTime": { "type": "string" }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { + "experiment": { "nullable": true, "type": "string" }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { + "customPlace": { "nullable": true, "type": "string" }, - "scheduleRemark": { + "lessonType": { "nullable": true, "type": "string" }, - "courseId": { + "weekIndex": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "semesterId": { + "exerciseClass": { "nullable": true, + "type": "boolean" + }, + "startUnit": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "campusId": { - "nullable": true, + "endUnit": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "examModeId": { + "roomId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "openDepartmentId": { - "nullable": true, + "sectionId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teachLanguageId": { - "nullable": true, + "scheduleGroupId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "roomTypeId": { + "room": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "floor": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "virtual": { + "type": "boolean" + }, + "seatsForSection": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "seats": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "buildingId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + }, + "building": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + }, + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "campusId", + "namePrimary", + "nameSecondary", + "campus" + ], + "additionalProperties": false + }, + "roomType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "floor", + "virtual", + "seatsForSection", + "remark", + "seats", + "buildingId", + "roomTypeId", + "namePrimary", + "nameSecondary", + "building", + "roomType" + ], + "additionalProperties": false + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + }, + "department": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary", + "department" + ], + "additionalProperties": false + } }, - "course": { + "section": { "type": "object", "properties": { "id": { @@ -20203,54 +18011,172 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, "code": { "type": "string" }, - "nameCn": { + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, "type": "string" }, - "nameEn": { + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { "nullable": true, "type": "string" }, - "categoryId": { + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classTypeId": { + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { "nullable": true, + "type": "string" + }, + "courseId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classifyId": { + "semesterId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "educationLevelId": { + "campusId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "gradationId": { + "examModeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "typeId": { + "openDepartmentId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "category": { + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -20258,182 +18184,245 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { + "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { + }, + "categoryId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { + "classTypeId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "educationLevelId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "typeId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { + "namePrimary": { "type": "string" }, - "nameEn": { + "nameSecondary": { "nullable": true, "type": "string" } }, "required": [ "id", + "jwId", + "code", "nameCn", - "nameEn" + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { + "semester": { "nullable": true, - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] } }, "required": [ "id", "jwId", "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" ], "additionalProperties": false }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" + "scheduleGroup": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "no": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "actualPeriods": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "isDefault": { + "type": "boolean" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 } - ] - }, - "campus": { - "nullable": true, + }, + "required": [ + "id", + "jwId", + "no", + "limitCount", + "stdCount", + "actualPeriods", + "isDefault", + "sectionId" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "periods", + "date", + "weekday", + "startTime", + "endTime", + "experiment", + "customPlace", + "lessonType", + "weekIndex", + "exerciseClass", + "startUnit", + "endUnit", + "roomId", + "sectionId", + "scheduleGroupId", + "room", + "teachers", + "section", + "scheduleGroup" + ], + "additionalProperties": false + } + } + }, + "required": [ + "schedules" + ], + "additionalProperties": false + }, + "calendarSubscriptionCreateRequestSchema": { + "type": "object", + "properties": { + "sectionIds": { + "maxItems": 500, + "type": "array", + "items": { + "type": "integer", + "maximum": 9007199254740991, + "minimum": 1 + } + } + }, + "additionalProperties": false + }, + "calendarSubscriptionCreateResponseSchema": { + "type": "object", + "properties": { + "subscription": { + "nullable": true, + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "sections": { + "type": "array", + "items": { "type": "object", "properties": { "id": { @@ -20442,484 +18431,176 @@ "maximum": 9007199254740991 }, "jwId": { - "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "nameEn": { + "retiredAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, "code": { - "nullable": true, "type": "string" }, - "namePrimary": { - "type": "string" + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameSecondary": { + "credits": { + "nullable": true, + "type": "number" + }, + "period": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "openDepartment": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { - "type": "string" + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "stdCount": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "isCollege": { + "limitCount": { "nullable": true, - "type": "boolean" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "namePrimary": { - "type": "string" + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" }, - "nameSecondary": { + "dateTimePlaceText": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" - ], - "additionalProperties": false - } - }, - "addedCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "addedSections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { - "type": "object", - "properties": { - "id": { + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" }, - "code": { + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, "type": "string" }, - "nameCn": { + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, "type": "string" }, - "nameEn": { + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { "nullable": true, "type": "string" }, - "categoryId": { + "scheduleRemark": { "nullable": true, + "type": "string" + }, + "courseId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classTypeId": { + "semesterId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classifyId": { + "campusId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "educationLevelId": { + "examModeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "gradationId": { + "openDepartmentId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "typeId": { + "teachLanguageId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "category": { + "roomTypeId": { "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -20927,94 +18608,241 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { + }, + "categoryId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "classifyId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "gradationId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "namePrimary": { "type": "string" }, - "nameEn": { + "nameSecondary": { "nullable": true, "type": "string" } }, "required": [ "id", + "jwId", + "code", "nameCn", - "nameEn" + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "gradation": { + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + }, + "campus": { "nullable": true, "type": "object", "properties": { @@ -21023,22 +18851,43 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ "id", + "jwId", "nameCn", - "nameEn" + "nameEn", + "code", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "type": { + "openDepartment": { "nullable": true, "type": "object", "properties": { @@ -21047,62 +18896,250 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ "id", + "code", "nameCn", - "nameEn" + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } } }, "required": [ "id", "jwId", "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "teachers" ], "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { - "nullable": true, + } + }, + "calendarPath": { + "type": "string" + }, + "calendarUrl": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": [ + "userId", + "sections", + "calendarPath", + "calendarUrl", + "note" + ], + "additionalProperties": false + } + }, + "required": [ + "subscription" + ], + "additionalProperties": false + }, + "calendarSubscriptionAppendRequestSchema": { + "type": "object", + "properties": { + "sectionIds": { + "maxItems": 500, + "type": "array", + "items": { + "type": "integer", + "maximum": 9007199254740991, + "minimum": 1 + } + } + }, + "required": [ + "sectionIds" + ], + "additionalProperties": false + }, + "calendarSubscriptionAppendResponseSchema": { + "type": "object", + "properties": { + "subscription": { + "nullable": true, + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "sections": { + "type": "array", + "items": { "type": "object", "properties": { "id": { @@ -21111,484 +19148,176 @@ "maximum": 9007199254740991 }, "jwId": { - "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { + "sourceLastSeenAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "code": { + "retiredAt": { "nullable": true, - "type": "string" + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "namePrimary": { + "code": { "type": "string" }, - "nameSecondary": { + "bizTypeId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "openDepartment": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { + "credits": { "nullable": true, - "type": "string" + "type": "number" }, - "isCollege": { + "period": { "nullable": true, - "type": "boolean" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "namePrimary": { - "type": "string" + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameSecondary": { + "timesPerWeek": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" - ], - "additionalProperties": false - } - }, - "alreadySubscribedCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "alreadySubscribedSections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { - "type": "object", - "properties": { - "id": { + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, "type": "string" }, - "nameCn": { + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, "type": "string" }, - "nameEn": { + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { "nullable": true, "type": "string" }, - "categoryId": { + "scheduleRemark": { "nullable": true, + "type": "string" + }, + "courseId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classTypeId": { + "semesterId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "classifyId": { + "campusId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "educationLevelId": { + "examModeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "gradationId": { + "openDepartmentId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "typeId": { + "teachLanguageId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "category": { + "roomTypeId": { "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -21596,94 +19325,241 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { + }, + "categoryId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "classifyId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameEn": { + "gradationId": { "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "namePrimary": { "type": "string" }, - "nameEn": { + "nameSecondary": { "nullable": true, "type": "string" } }, "required": [ "id", + "jwId", + "code", "nameCn", - "nameEn" + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "gradation": { + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + }, + "campus": { "nullable": true, "type": "object", "properties": { @@ -21692,22 +19568,43 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ "id", + "jwId", "nameCn", - "nameEn" + "nameEn", + "code", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "type": { + "openDepartment": { "nullable": true, "type": "object", "properties": { @@ -21716,302 +19613,252 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ "id", + "code", "nameCn", - "nameEn" + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } } }, "required": [ "id", "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "openDepartment": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "teachers" ], "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } } }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" - ], - "additionalProperties": false - } + "calendarPath": { + "type": "string" + }, + "calendarUrl": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": [ + "userId", + "sections", + "calendarPath", + "calendarUrl", + "note" + ], + "additionalProperties": false }, + "addedCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "alreadySubscribedCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "subscription", + "addedCount", + "alreadySubscribedCount" + ], + "additionalProperties": false + }, + "calendarSubscriptionRemoveRequestSchema": { + "type": "object", + "properties": { + "sectionIds": { + "maxItems": 500, + "type": "array", + "items": { + "type": "integer", + "maximum": 9007199254740991, + "minimum": 1 + } + } + }, + "required": [ + "sectionIds" + ], + "additionalProperties": false + }, + "calendarSubscriptionRemoveResponseSchema": { + "type": "object", + "properties": { "subscription": { "nullable": true, "type": "object", @@ -22683,321 +20530,1140 @@ "additionalProperties": false } }, - "calendarPath": { + "calendarPath": { + "type": "string" + }, + "calendarUrl": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": [ + "userId", + "sections", + "calendarPath", + "calendarUrl", + "note" + ], + "additionalProperties": false + } + }, + "required": [ + "subscription" + ], + "additionalProperties": false + }, + "todosListResponseSchema": { + "type": "object", + "properties": { + "counts": { + "type": "object", + "properties": { + "incomplete": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "completed": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "overdue": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "incomplete", + "completed", + "overdue" + ], + "additionalProperties": false + }, + "todos": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "content": { + "nullable": true, + "type": "string" + }, + "priority": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] + }, + "completed": { + "type": "boolean" + }, + "dueAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "id", + "title", + "content", + "priority", + "completed", + "dueAt", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + } + }, + "required": [ + "counts", + "todos" + ], + "additionalProperties": false + }, + "todoCreateRequestSchema": { + "type": "object", + "properties": { + "title": { + "type": "string", + "minLength": 1, + "maxLength": 200 + }, + "content": { + "nullable": true, + "type": "string", + "maxLength": 4000 + }, + "priority": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] + }, + "dueAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + } + }, + "required": [ + "title" + ], + "additionalProperties": false + }, + "uploadsListResponseSchema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "size": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "id", + "key", + "filename", + "size", + "createdAt" + ], + "additionalProperties": false + } + }, + "pagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "pageSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "total": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "totalPages": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "page", + "pageSize", + "total", + "totalPages" + ], + "additionalProperties": false + }, + "meta": { + "type": "object", + "properties": { + "maxFileSizeBytes": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "quotaBytes": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "usedBytes": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "maxFileSizeBytes", + "quotaBytes", + "usedBytes" + ], + "additionalProperties": false + } + }, + "required": [ + "data", + "pagination", + "meta" + ], + "additionalProperties": false + }, + "uploadCreateRequestSchema": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "minLength": 1 + }, + "contentType": { + "type": "string" + }, + "size": { + "anyOf": [ + { "type": "string" }, - "calendarUrl": { + { + "type": "number" + } + ] + } + }, + "required": [ + "filename", + "size" + ], + "additionalProperties": false + }, + "uploadCreateResponseSchema": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "url": { + "type": "string" + }, + "maxFileSizeBytes": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "quotaBytes": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "usedBytes": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "key", + "url", + "maxFileSizeBytes", + "quotaBytes", + "usedBytes" + ], + "additionalProperties": false + }, + "adminModerateCommentRequestSchema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "active", + "softbanned", + "deleted" + ] + }, + "moderationNote": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "status" + ], + "additionalProperties": false + }, + "adminModeratedCommentResponseSchema": { + "type": "object", + "properties": { + "comment": { + "type": "object", + "properties": { + "id": { "type": "string" }, - "note": { + "body": { + "type": "string" + }, + "visibility": { + "type": "string", + "enum": [ + "public", + "logged_in_only" + ] + }, + "status": { + "type": "string", + "enum": [ + "active", + "softbanned", + "deleted" + ] + }, + "isAnonymous": { + "type": "boolean" + }, + "authorName": { + "nullable": true, + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "deletedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "moderatedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "moderationNote": { + "nullable": true, + "type": "string" + }, + "userId": { + "nullable": true, + "type": "string" + }, + "moderatedById": { + "nullable": true, + "type": "string" + }, + "parentId": { + "nullable": true, + "type": "string" + }, + "rootId": { + "nullable": true, + "type": "string" + }, + "sectionId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "courseId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionTeacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "body", + "visibility", + "status", + "isAnonymous", + "authorName", + "createdAt", + "updatedAt", + "deletedAt", + "moderatedAt", + "moderationNote", + "userId", + "moderatedById", + "parentId", + "rootId", + "sectionId", + "courseId", + "teacherId", + "sectionTeacherId", + "homeworkId" + ], + "additionalProperties": false + } + }, + "required": [ + "comment" + ], + "additionalProperties": false + }, + "adminModerateDescriptionRequestSchema": { + "type": "object", + "properties": { + "content": { + "type": "string", + "maxLength": 4000 + } + }, + "required": [ + "content" + ], + "additionalProperties": false + }, + "adminModeratedDescriptionResponseSchema": { + "type": "object", + "properties": { + "description": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "content": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedById": { + "nullable": true, "type": "string" + }, + "sectionId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "courseId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" + }, + "lastEditedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "section": { + "nullable": true, + "type": "object", + "properties": { + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "course": { + "nullable": true, + "type": "object", + "properties": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + } + }, + "required": [ + "jwId", + "code", + "nameCn" + ], + "additionalProperties": false + } + }, + "required": [ + "jwId", + "code", + "course" + ], + "additionalProperties": false + }, + "course": { + "nullable": true, + "type": "object", + "properties": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + } + }, + "required": [ + "jwId", + "code", + "nameCn" + ], + "additionalProperties": false + }, + "teacher": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + } + }, + "required": [ + "id", + "nameCn" + ], + "additionalProperties": false + }, + "homework": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "section": { + "nullable": true, + "type": "object", + "properties": { + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "course": { + "nullable": true, + "type": "object", + "properties": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + } + }, + "required": [ + "jwId", + "code", + "nameCn" + ], + "additionalProperties": false + } + }, + "required": [ + "jwId", + "code", + "course" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "title", + "section" + ], + "additionalProperties": false } }, "required": [ - "userId", - "sections", - "calendarPath", - "calendarUrl", - "note" + "id", + "content", + "createdAt", + "updatedAt", + "lastEditedAt", + "lastEditedById", + "sectionId", + "courseId", + "teacherId", + "homeworkId", + "lastEditedBy", + "section", + "course", + "teacher", + "homework" ], "additionalProperties": false } }, "required": [ - "success", - "semester", - "matchedCodes", - "unmatchedCodes", - "ambiguousCodes", - "sections", - "addedCount", - "addedSections", - "alreadySubscribedCount", - "alreadySubscribedSections", - "subscription" + "description" ], "additionalProperties": false }, - "calendarSubscriptionQueryRequestSchema": { + "adminUpdateUserRequestSchema": { "type": "object", "properties": { - "sectionIds": { - "maxItems": 500, - "type": "array", - "items": { - "type": "integer", - "maximum": 9007199254740991, - "minimum": 1 - } - }, - "codes": { - "maxItems": 500, - "type": "array", - "items": { - "type": "string", - "minLength": 1, - "maxLength": 64 - } + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] }, - "semesterId": { + "username": { "anyOf": [ { "type": "string" }, { - "type": "number" + "type": "string", + "nullable": true, + "enum": [ + null + ] } ] + }, + "isAdmin": { + "type": "boolean" } }, "additionalProperties": false }, - "calendarSubscriptionQueryResponseSchema": { + "adminUserResponseSchema": { "type": "object", "properties": { - "semester": { - "nullable": true, + "user": { "type": "object", "properties": { "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "nameCn": { + "name": { "nullable": true, "type": "string" }, - "code": { + "username": { + "nullable": true, + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "email": { "nullable": true, "type": "string" } }, "required": [ "id", - "nameCn", - "code" + "name", + "username", + "isAdmin", + "createdAt", + "email" ], "additionalProperties": false + } + }, + "required": [ + "user" + ], + "additionalProperties": false + }, + "oauthDeviceAuthorizationRequestSchema": { + "type": "object", + "properties": { + "client_id": { + "type": "string", + "minLength": 1 }, - "matchedCodes": { - "type": "array", - "items": { - "type": "string" - } + "resource": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + } + ] }, - "unmatchedCodes": { - "type": "array", - "items": { - "type": "string" - } + "scope": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "client_id" + ], + "additionalProperties": false + }, + "oauthDeviceAuthorizationResponseSchema": { + "type": "object", + "properties": { + "device_code": { + "type": "string" }, - "matchedSectionIds": { - "type": "array", - "items": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - } + "user_code": { + "type": "string" }, - "unmatchedSectionIds": { - "type": "array", - "items": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - } + "verification_uri": { + "type": "string", + "format": "uri" }, - "suggestions": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } + "verification_uri_complete": { + "type": "string", + "format": "uri" }, - "sections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, + "expires_in": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + }, + "interval": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + } + }, + "required": [ + "device_code", + "user_code", + "verification_uri", + "verification_uri_complete", + "expires_in", + "interval" + ], + "additionalProperties": false + }, + "oauthErrorResponseSchema": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "error_description": { + "type": "string" + } + }, + "required": [ + "error" + ], + "additionalProperties": false + }, + "oauthTokenRequestSchema": { + "type": "object", + "properties": { + "grant_type": { + "type": "string", + "minLength": 1 + }, + "client_id": { + "type": "string", + "minLength": 1 + }, + "client_secret": { + "type": "string" + }, + "code": { + "type": "string", + "minLength": 1 + }, + "code_verifier": { + "type": "string", + "minLength": 1 + }, + "device_code": { + "type": "string", + "minLength": 1 + }, + "redirect_uri": { + "type": "string", + "minLength": 1 + }, + "refresh_token": { + "type": "string", + "minLength": 1 + }, + "resource": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "array", + "items": { "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, + "minLength": 1 + } + } + ] + }, + "scope": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "grant_type" + ], + "additionalProperties": false + }, + "oauthTokenResponseSchema": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + }, + "token_type": { + "type": "string", + "enum": [ + "Bearer" + ] + }, + "expires_in": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + }, + "expires_at": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + }, + "refresh_token": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "id_token": { + "type": "string" + } + }, + "required": [ + "access_token", + "token_type", + "expires_in" + ], + "additionalProperties": false + }, + "busNextDeparturesResponseSchema": { + "type": "object", + "properties": { + "originCampus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "destinationCampus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "atTime": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "dayType": { + "type": "string", + "enum": [ + "weekday", + "weekend" + ] + }, + "totalRoutes": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "departures": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tripId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "roomTypeId": { - "nullable": true, + "routeId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "course": { + "route": { "type": "object", "properties": { "id": { @@ -23005,14 +21671,6 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, "nameCn": { "type": "string" }, @@ -23020,226 +21678,24 @@ "nullable": true, "type": "string" }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "category": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "namePrimary": { + "descriptionPrimary": { "type": "string" }, - "nameSecondary": { + "descriptionSecondary": { "nullable": true, "type": "string" } }, "required": [ "id", - "jwId", - "code", "nameCn", "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type", - "namePrimary", - "nameSecondary" + "descriptionPrimary", + "descriptionSecondary" ], "additionalProperties": false }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { + "originCampus": { "nullable": true, "type": "object", "properties": { @@ -23248,12 +21704,6 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, "nameCn": { "type": "string" }, @@ -23261,9 +21711,11 @@ "nullable": true, "type": "string" }, - "code": { - "nullable": true, - "type": "string" + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" }, "namePrimary": { "type": "string" @@ -23275,16 +21727,16 @@ }, "required": [ "id", - "jwId", "nameCn", "nameEn", - "code", + "latitude", + "longitude", "namePrimary", "nameSecondary" ], "additionalProperties": false }, - "openDepartment": { + "destinationCampus": { "nullable": true, "type": "object", "properties": { @@ -23293,554 +21745,578 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { - "type": "string" - }, "nameCn": { "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "departureTime": { + "nullable": true, + "type": "string" + }, + "arrivalTime": { + "nullable": true, + "type": "string" + }, + "departureEstimated": { + "type": "boolean" + }, + "arrivalEstimated": { + "type": "boolean" + }, + "minutesUntilDeparture": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "dayType": { + "type": "string", + "enum": [ + "weekday", + "weekend" + ] + }, + "status": { + "type": "string", + "enum": [ + "upcoming", + "departed" + ] } }, "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "teachers" + "tripId", + "routeId", + "route", + "originCampus", + "destinationCampus", + "departureTime", + "arrivalTime", + "departureEstimated", + "arrivalEstimated", + "minutesUntilDeparture", + "dayType", + "status" ], "additionalProperties": false } }, - "total": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": [ - "semester", - "matchedCodes", - "unmatchedCodes", - "matchedSectionIds", - "unmatchedSectionIds", - "suggestions", - "sections", - "total" - ], - "additionalProperties": false - }, - "commentThreadResponseSchema": { - "type": "object", - "properties": { - "thread": { - "type": "array", - "items": { - "$ref": "#/components/schemas/__schema1" - } - }, - "focusId": { - "type": "string" - }, - "hiddenCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "viewer": { + "nextAvailableDeparture": { + "nullable": true, "type": "object", "properties": { - "userId": { + "tripId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "routeId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "route": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "descriptionPrimary": { + "type": "string" + }, + "descriptionSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "descriptionPrimary", + "descriptionSecondary" + ], + "additionalProperties": false + }, + "originCampus": { "nullable": true, - "type": "string" + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false }, - "name": { + "destinationCampus": { "nullable": true, - "type": "string" + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false }, - "image": { + "departureTime": { "nullable": true, "type": "string" }, - "isAdmin": { - "type": "boolean" + "arrivalTime": { + "nullable": true, + "type": "string" }, - "isAuthenticated": { + "departureEstimated": { "type": "boolean" }, - "isSuspended": { + "arrivalEstimated": { "type": "boolean" }, - "suspensionReason": { + "minutesUntilDeparture": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "suspensionExpiresAt": { - "nullable": true, + "dayType": { "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "enum": [ + "weekday", + "weekend" + ] + }, + "status": { + "type": "string", + "enum": [ + "upcoming", + "departed" + ] } }, "required": [ - "userId", - "name", - "image", - "isAdmin", - "isAuthenticated", - "isSuspended", - "suspensionReason", - "suspensionExpiresAt" + "tripId", + "routeId", + "route", + "originCampus", + "destinationCampus", + "departureTime", + "arrivalTime", + "departureEstimated", + "arrivalEstimated", + "minutesUntilDeparture", + "dayType", + "status" ], "additionalProperties": false }, - "target": { + "message": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "originCampus", + "destinationCampus", + "atTime", + "dayType", + "totalRoutes", + "departures", + "nextAvailableDeparture", + "message" + ], + "additionalProperties": false + }, + "busRouteSearchResponseSchema": { + "type": "object", + "properties": { + "originCampus": { + "nullable": true, "type": "object", "properties": { - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherSectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherTeacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherSectionJwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherSectionCode": { - "nullable": true, - "type": "string" - }, - "sectionTeacherTeacherName": { - "nullable": true, - "type": "string" - }, - "sectionTeacherCourseJwId": { - "nullable": true, + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "sectionTeacherCourseName": { - "nullable": true, + "nameCn": { "type": "string" }, - "homeworkId": { + "nameEn": { "nullable": true, "type": "string" }, - "homeworkTitle": { - "nullable": true, - "type": "string" + "latitude": { + "type": "number" }, - "homeworkSectionJwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "longitude": { + "type": "number" }, - "homeworkSectionCode": { - "nullable": true, + "namePrimary": { "type": "string" }, - "sectionJwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionCode": { + "nameSecondary": { "nullable": true, "type": "string" - }, - "courseJwId": { - "nullable": true, + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "destinationCampus": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "courseName": { - "nullable": true, + "nameCn": { "type": "string" }, - "teacherName": { + "nameEn": { "nullable": true, "type": "string" - } - }, - "required": [ - "sectionId", - "courseId", - "teacherId", - "sectionTeacherId", - "sectionTeacherSectionId", - "sectionTeacherTeacherId", - "sectionTeacherSectionJwId", - "sectionTeacherSectionCode", - "sectionTeacherTeacherName", - "sectionTeacherCourseJwId", - "sectionTeacherCourseName", - "homeworkId", - "homeworkTitle", - "homeworkSectionJwId", - "homeworkSectionCode", - "sectionJwId", - "sectionCode", - "courseJwId", - "courseName", - "teacherName" - ], - "additionalProperties": false - } - }, - "required": [ - "thread", - "focusId", - "hiddenCount", - "viewer", - "target" - ], - "additionalProperties": false - }, - "commentUpdateRequestSchema": { - "type": "object", - "properties": { - "body": { - "type": "string", - "minLength": 1, - "maxLength": 8000 - }, - "visibility": { - "type": "string", - "enum": [ - "public", - "logged_in_only" - ] - }, - "isAnonymous": { - "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false }, - "attachmentIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "body" - ], - "additionalProperties": false - }, - "commentUpdateResponseSchema": { - "type": "object", - "properties": { - "success": { - "type": "boolean" + "total": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 }, - "comment": { - "$ref": "#/components/schemas/__schema1" - } - }, - "required": [ - "success", - "comment" - ], - "additionalProperties": false - }, - "commentBatchDeleteRequestSchema": { - "type": "object", - "properties": { - "ids": { - "minItems": 1, - "maxItems": 50, - "type": "array", - "items": { - "type": "string", - "minLength": 1 - } - } - }, - "required": [ - "ids" - ], - "additionalProperties": false - }, - "commentBatchDeleteResponseSchema": { - "type": "object", - "properties": { - "results": { + "routes": { "type": "array", "items": { - "oneOf": [ - { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "descriptionPrimary": { + "type": "string" + }, + "descriptionSecondary": { + "nullable": true, + "type": "string" + }, + "originCampus": { + "nullable": true, "type": "object", "properties": { - "success": { - "type": "boolean", - "enum": [ - true - ] - }, "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, "type": "string" } }, "required": [ - "success", - "id" + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - { + "destinationCampus": { + "nullable": true, "type": "object", "properties": { - "success": { - "type": "boolean", - "enum": [ - false - ] - }, "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { "type": "string" }, - "error": { - "type": "object", - "properties": { - "code": { - "type": "string", - "enum": [ - "not_found", - "forbidden", - "locked" - ] - }, - "message": { - "type": "string" - } - }, - "required": [ - "code", - "message" - ], - "additionalProperties": false + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ - "success", "id", - "error" + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" ], "additionalProperties": false + }, + "stopCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "weekdayTrips": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "weekendTrips": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "stops": { + "type": "array", + "items": { + "type": "object", + "properties": { + "stopOrder": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campus": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "latitude", + "longitude", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + }, + "required": [ + "stopOrder", + "campus" + ], + "additionalProperties": false + } } + }, + "required": [ + "id", + "nameCn", + "nameEn", + "descriptionPrimary", + "descriptionSecondary", + "originCampus", + "destinationCampus", + "stopCount", + "weekdayTrips", + "weekendTrips", + "stops" ], - "type": "object" + "additionalProperties": false } } }, "required": [ - "results" + "originCampus", + "destinationCampus", + "total", + "routes" ], "additionalProperties": false }, @@ -24438,205 +22914,245 @@ ], "additionalProperties": false }, - "dashboardLinkPinRequestSchema": { + "sectionDetailSchema": { "type": "object", "properties": { - "slug": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, "type": "string", - "minLength": 1 + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "returnTo": { + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { "type": "string" }, - "action": { - "type": "string", - "enum": [ - "pin", - "unpin" - ] - } - }, - "required": [ - "slug" - ], - "additionalProperties": false - }, - "dashboardLinkPinResponseSchema": { - "type": "object", - "properties": { - "pinnedSlugs": { - "type": "array", - "items": { - "type": "string" - } + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "maxPinnedLinks": { + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, "type": "integer", - "exclusiveMinimum": true, + "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "error": { + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { "nullable": true, "type": "string" - } - }, - "required": [ - "pinnedSlugs", - "maxPinnedLinks", - "error" - ], - "additionalProperties": false - }, - "dashboardLinkVisitRequestSchema": { - "type": "object", - "properties": { - "slug": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "slug" - ], - "additionalProperties": false - }, - "homeworkUpdateRequestSchema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "minLength": 1, - "maxLength": 200 }, - "description": { + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { "nullable": true, - "type": "string", - "maxLength": 4000 + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "publishedAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] + "theoryPeriods": { + "nullable": true, + "type": "number" }, - "submissionStartAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "submissionDueAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "isMajor": { - "type": "boolean" + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "requiresTeam": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "homeworkUpdateResponseSchema": { - "type": "object", - "properties": { - "success": { - "type": "boolean" + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "homework": { + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "title": { - "type": "string" + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "isMajor": { - "type": "boolean" + "code": { + "type": "string" }, - "requiresTeam": { - "type": "boolean" + "nameCn": { + "type": "string" }, - "publishedAt": { + "nameEn": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "string" }, - "submissionStartAt": { + "categoryId": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "submissionDueAt": { + "classTypeId": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "deletedAt": { + "classifyId": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "sectionId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "createdById": { + "educationLevelId": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "updatedById": { + "gradationId": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "deletedById": { + "typeId": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "section": { + "category": { + "nullable": true, "type": "object", "properties": { "id": { @@ -24644,177 +23160,949 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { + "nameCn": { "type": "string" }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "nameCn": { + "type": "string" }, - "limitCount": { + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, + "nameCn": { "type": "string" }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, + "nameCn": { "type": "string" }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { + "nameEn": { "nullable": true, "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "remark": { - "nullable": true, + "nameCn": { "type": "string" }, - "scheduleRemark": { + "nameEn": { "nullable": true, "type": "string" - }, - "courseId": { + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "nameCn": { + "type": "string" }, - "campusId": { + "nameEn": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + }, + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code" + ], + "additionalProperties": false + }, + "openDepartment": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + } + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege" + ], + "additionalProperties": false + }, + "examMode": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "teachLanguage": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "roomType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code" + ], + "additionalProperties": false + }, + "schedules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periods": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "date": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "weekday": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "startTime": { + "type": "string" + }, + "endTime": { + "type": "string" + }, + "experiment": { + "nullable": true, + "type": "string" + }, + "customPlace": { + "nullable": true, + "type": "string" + }, + "lessonType": { + "nullable": true, + "type": "string" + }, + "weekIndex": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "exerciseClass": { + "nullable": true, + "type": "boolean" + }, + "startUnit": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "endUnit": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "scheduleGroupId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "id", + "periods", + "date", + "weekday", + "startTime", + "endTime", + "experiment", + "customPlace", + "lessonType", + "weekIndex", + "exerciseClass", + "startUnit", + "endUnit", + "roomId", + "sectionId", + "scheduleGroupId" + ], + "additionalProperties": false + } + }, + "scheduleGroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "no": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "actualPeriods": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "isDefault": { + "type": "boolean" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "id", + "jwId", + "no", + "limitCount", + "stdCount", + "actualPeriods", + "isDefault", + "sectionId" + ], + "additionalProperties": false + } + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "department": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + } }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege" + ], + "additionalProperties": false + }, + "teacherTitle": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "enabled": { + "nullable": true, + "type": "boolean" + } }, - "openDepartmentId": { - "nullable": true, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "enabled" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "department", + "teacherTitle" + ], + "additionalProperties": false + } + }, + "teacherAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "role": { + "nullable": true, + "type": "string" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "weekIndices": { + "nullable": true, + "type": "array", + "items": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 + } + }, + "weekIndicesMsg": { + "nullable": true, + "type": "string" + }, + "teacherLessonTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacher": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId" + ], + "additionalProperties": false + }, + "teacherLessonType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "role": { + "nullable": true, + "type": "string" + }, + "enabled": { + "nullable": true, + "type": "boolean" + } }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "role", + "enabled" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "teacherId", + "sectionId", + "role", + "period", + "weekIndices", + "weekIndicesMsg", + "teacherLessonTypeId", + "teacher", + "teacherLessonType" + ], + "additionalProperties": false + } + }, + "exams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examType": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "startTime": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "endTime": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examDate": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "examTakeCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examMode": { + "nullable": true, + "type": "string" + }, + "examBatchId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examBatch": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } }, - "course": { + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "examRooms": { + "type": "array", + "items": { "type": "object", "properties": { "id": { @@ -24822,1057 +24110,1319 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, + "room": { "type": "string" }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, + "count": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "typeId": { - "nullable": true, + "examId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" } }, "required": [ "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "namePrimary", - "nameSecondary" + "room", + "count", + "examId" ], "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester" - ], - "additionalProperties": false + } }, - "description": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "content": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedById": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - } + "required": [ + "id", + "jwId", + "examType", + "startTime", + "endTime", + "examDate", + "examTakeCount", + "examMode", + "examBatchId", + "sectionId", + "examBatch", + "examRooms" + ], + "additionalProperties": false + } + }, + "adminClasses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "required": [ - "id", - "content", - "createdAt", - "updatedAt", - "lastEditedAt", - "lastEditedById", - "sectionId", - "courseId", - "teacherId", - "homeworkId" - ], - "additionalProperties": false - }, - "createdBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "updatedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } + "code": { + "nullable": true, + "type": "string" }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "deletedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } + "grade": { + "nullable": true, + "type": "string" }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "completion": { - "nullable": true, - "type": "object", - "properties": { - "completedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } + "nameCn": { + "type": "string" }, - "required": [ - "completedAt" - ], - "additionalProperties": false + "nameEn": { + "nullable": true, + "type": "string" + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "planCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "enabled": { + "nullable": true, + "type": "boolean" + }, + "abbrZh": { + "nullable": true, + "type": "string" + }, + "abbrEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "grade", + "nameCn", + "nameEn", + "stdCount", + "planCount", + "enabled", + "abbrZh", + "abbrEn" + ], + "additionalProperties": false + } + } + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "examMode", + "teachLanguage", + "roomType", + "schedules", + "scheduleGroups", + "teachers", + "teacherAssignments", + "exams", + "adminClasses" + ], + "additionalProperties": false + }, + "matchSectionCodesRequestSchema": { + "type": "object", + "properties": { + "codes": { + "minItems": 1, + "maxItems": 500, + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "maxLength": 64, + "pattern": "^[A-Za-z0-9_.-]+$" + } + }, + "semesterId": { + "anyOf": [ + { + "type": "string" }, - "commentCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 + { + "type": "number" } - }, - "required": [ - "id", - "title", - "isMajor", - "requiresTeam", - "publishedAt", - "submissionStartAt", - "submissionDueAt", - "createdAt", - "updatedAt", - "deletedAt", - "sectionId", - "createdById", - "updatedById", - "deletedById", - "section", - "description", - "createdBy", - "updatedBy", - "deletedBy", - "completion", - "commentCount" - ], - "additionalProperties": false + ] } }, "required": [ - "success", - "homework" + "codes" ], "additionalProperties": false }, - "homeworkCompletionBatchRequestSchema": { + "matchSectionCodesResponseSchema": { "type": "object", "properties": { - "items": { - "minItems": 1, - "maxItems": 100, + "semester": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "code" + ], + "additionalProperties": false + }, + "matchedCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "unmatchedCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "suggestions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "sections": { "type": "array", "items": { "type": "object", "properties": { - "homeworkId": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, "type": "string", - "minLength": 1 + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { + "type": "string" + }, + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false }, - "completed": { - "type": "boolean" - } - }, - "required": [ - "homeworkId", - "completed" - ], - "additionalProperties": false - } - } - }, - "required": [ - "items" - ], - "additionalProperties": false - }, - "homeworkCompletionBatchResponseSchema": { - "type": "object", - "properties": { - "results": { - "type": "array", - "items": { - "oneOf": [ - { + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + }, + "campus": { + "nullable": true, "type": "object", "properties": { - "success": { - "type": "boolean", - "enum": [ - true - ] + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "homeworkId": { + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { "type": "string" }, - "completed": { - "type": "boolean" + "nameEn": { + "nullable": true, + "type": "string" }, - "completedAt": { + "code": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ - "success", - "homeworkId", - "completed", - "completedAt" + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, - { + "openDepartment": { + "nullable": true, "type": "object", "properties": { - "success": { - "type": "boolean", - "enum": [ - false - ] + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "homeworkId": { + "code": { "type": "string" }, - "completed": { + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, "type": "boolean" }, - "error": { - "type": "object", - "properties": { - "code": { - "type": "string", - "enum": [ - "not_found", - "deleted" - ] - }, - "message": { - "type": "string" - } - }, - "required": [ - "code", - "message" - ], - "additionalProperties": false + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ - "success", - "homeworkId", - "completed", - "error" + "id", + "code", + "nameCn", + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" ], "additionalProperties": false + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } } + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "teachers" ], - "type": "object" + "additionalProperties": false } + }, + "total": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 } }, "required": [ - "results" + "semester", + "matchedCodes", + "unmatchedCodes", + "suggestions", + "sections", + "total" ], "additionalProperties": false }, - "compactOverviewResponseSchema": { + "teacherDetailSchema": { "type": "object", "properties": { - "user": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "department": { + "nullable": true, "type": "object", "properties": { - "userId": { - "nullable": true, + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { "type": "string" }, - "name": { - "nullable": true, + "nameCn": { "type": "string" }, - "image": { + "nameEn": { "nullable": true, "type": "string" }, - "isAdmin": { + "isCollege": { + "nullable": true, "type": "boolean" } - }, - "required": [ - "userId", - "name", - "image", - "isAdmin" - ], - "additionalProperties": false - }, - "anchor": { - "type": "object", - "properties": { - "atTime": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "todayStart": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "tomorrowStart": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "homeworkWindowDays": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - }, - "homeworkWindowEnd": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "limit": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - } - }, - "required": [ - "atTime", - "todayStart", - "tomorrowStart", - "homeworkWindowDays", - "homeworkWindowEnd", - "limit" - ], - "additionalProperties": false - }, - "counts": { - "type": "object", - "properties": { - "todos": { - "type": "object", - "properties": { - "incomplete": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "completed": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "overdue": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": [ - "incomplete", - "completed", - "overdue" - ], - "additionalProperties": false - }, - "pendingHomeworks": { + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege" + ], + "additionalProperties": false + }, + "teacherTitle": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", - "minimum": 0, + "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "dueSoonHomeworks": { + "jwId": { "type": "integer", - "minimum": 0, + "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "todaySchedules": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 + "nameCn": { + "type": "string" }, - "upcomingExams": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "type": "string" + }, + "enabled": { + "nullable": true, + "type": "boolean" } }, "required": [ - "todos", - "pendingHomeworks", - "dueSoonHomeworks", - "todaySchedules", - "upcomingExams" + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "enabled" ], "additionalProperties": false }, - "schedules": { - "type": "object", - "properties": { - "total": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "items": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periods": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "date": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "weekday": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "startTime": { - "type": "string" - }, - "endTime": { - "type": "string" - }, - "experiment": { - "nullable": true, - "type": "string" - }, - "customPlace": { - "nullable": true, - "type": "string" - }, - "lessonType": { - "nullable": true, - "type": "string" - }, - "weekIndex": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "exerciseClass": { - "nullable": true, - "type": "boolean" - }, - "startUnit": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "endUnit": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "scheduleGroupId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "room": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "type": "string" - }, - "floor": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "virtual": { - "type": "boolean" - }, - "seatsForSection": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "seats": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "buildingId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - }, - "building": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "type": "string" - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "campusId", - "namePrimary", - "nameSecondary", - "campus" - ], - "additionalProperties": false - }, - "roomType": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "floor", - "virtual", - "seatsForSection", - "remark", - "seats", - "buildingId", - "roomTypeId", - "namePrimary", - "nameSecondary", - "building", - "roomType" - ], - "additionalProperties": false + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { + "type": "string" + }, + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - }, - "department": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "namePrimary", - "nameSecondary", - "department" - ], - "additionalProperties": false - } + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "section": { + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, "type": "object", "properties": { "id": { @@ -25880,1144 +25430,2242 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, + "nameCn": { "type": "string" }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { + "nameEn": { "nullable": true, "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "remark": { - "nullable": true, + "nameCn": { "type": "string" }, - "scheduleRemark": { + "nameEn": { "nullable": true, "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false - }, - "semester": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] + "type": "string" } }, "required": [ "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester" + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" ], "additionalProperties": false + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + } + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" + ], + "additionalProperties": false + } + }, + "_count": { + "type": "object", + "properties": { + "sections": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "sections" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "department", + "teacherTitle", + "sections", + "_count" + ], + "additionalProperties": false + }, + "commentThreadResponseSchema": { + "type": "object", + "properties": { + "thread": { + "type": "array", + "items": { + "$ref": "#/components/schemas/__schema1" + } + }, + "focusId": { + "type": "string" + }, + "hiddenCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "viewer": { + "type": "object", + "properties": { + "userId": { + "nullable": true, + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "isAuthenticated": { + "type": "boolean" + }, + "isSuspended": { + "type": "boolean" + }, + "suspensionReason": { + "nullable": true, + "type": "string" + }, + "suspensionExpiresAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "userId", + "name", + "image", + "isAdmin", + "isAuthenticated", + "isSuspended", + "suspensionReason", + "suspensionExpiresAt" + ], + "additionalProperties": false + }, + "target": { + "type": "object", + "properties": { + "sectionId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "courseId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionTeacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionTeacherSectionId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionTeacherTeacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionTeacherSectionJwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionTeacherSectionCode": { + "nullable": true, + "type": "string" + }, + "sectionTeacherTeacherName": { + "nullable": true, + "type": "string" + }, + "sectionTeacherCourseJwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionTeacherCourseName": { + "nullable": true, + "type": "string" + }, + "homeworkId": { + "nullable": true, + "type": "string" + }, + "homeworkTitle": { + "nullable": true, + "type": "string" + }, + "homeworkSectionJwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "homeworkSectionCode": { + "nullable": true, + "type": "string" + }, + "sectionJwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sectionCode": { + "nullable": true, + "type": "string" + }, + "courseJwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "courseName": { + "nullable": true, + "type": "string" + }, + "teacherName": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "sectionId", + "courseId", + "teacherId", + "sectionTeacherId", + "sectionTeacherSectionId", + "sectionTeacherTeacherId", + "sectionTeacherSectionJwId", + "sectionTeacherSectionCode", + "sectionTeacherTeacherName", + "sectionTeacherCourseJwId", + "sectionTeacherCourseName", + "homeworkId", + "homeworkTitle", + "homeworkSectionJwId", + "homeworkSectionCode", + "sectionJwId", + "sectionCode", + "courseJwId", + "courseName", + "teacherName" + ], + "additionalProperties": false + } + }, + "required": [ + "thread", + "focusId", + "hiddenCount", + "viewer", + "target" + ], + "additionalProperties": false + }, + "commentUpdateRequestSchema": { + "type": "object", + "properties": { + "body": { + "type": "string", + "minLength": 1, + "maxLength": 8000 + }, + "visibility": { + "type": "string", + "enum": [ + "public", + "logged_in_only" + ] + }, + "isAnonymous": { + "type": "boolean" + }, + "attachmentIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "body" + ], + "additionalProperties": false + }, + "commentUpdateResponseSchema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "comment": { + "$ref": "#/components/schemas/__schema1" + } + }, + "required": [ + "success", + "comment" + ], + "additionalProperties": false + }, + "commentBatchDeleteRequestSchema": { + "type": "object", + "properties": { + "ids": { + "minItems": 1, + "maxItems": 50, + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + } + }, + "required": [ + "ids" + ], + "additionalProperties": false + }, + "commentBatchDeleteResponseSchema": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + true + ] }, - "scheduleGroup": { + "id": { + "type": "string" + } + }, + "required": [ + "success", + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + false + ] + }, + "id": { + "type": "string" + }, + "error": { "type": "object", "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "no": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "actualPeriods": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "isDefault": { - "type": "boolean" + "code": { + "type": "string", + "enum": [ + "not_found", + "forbidden", + "locked" + ] }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "message": { + "type": "string" } }, "required": [ - "id", - "jwId", - "no", - "limitCount", - "stdCount", - "actualPeriods", - "isDefault", - "sectionId" + "code", + "message" ], "additionalProperties": false } }, "required": [ + "success", "id", - "periods", - "date", - "weekday", - "startTime", - "endTime", - "experiment", - "customPlace", - "lessonType", - "weekIndex", - "exerciseClass", - "startUnit", - "endUnit", - "roomId", - "sectionId", - "scheduleGroupId", - "room", - "teachers", - "section", - "scheduleGroup" + "error" ], "additionalProperties": false } + ], + "type": "object" + } + } + }, + "required": [ + "results" + ], + "additionalProperties": false + }, + "homeworkUpdateRequestSchema": { + "type": "object", + "properties": { + "title": { + "type": "string", + "minLength": 1, + "maxLength": 200 + }, + "description": { + "nullable": true, + "type": "string", + "maxLength": 4000 + }, + "publishedAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] } - }, - "required": [ - "total", - "items" - ], - "additionalProperties": false + ] }, - "todos": { + "submissionStartAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "submissionDueAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "isMajor": { + "type": "boolean" + }, + "requiresTeam": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "homeworkUpdateResponseSchema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "homework": { "type": "object", "properties": { - "counts": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "isMajor": { + "type": "boolean" + }, + "requiresTeam": { + "type": "boolean" + }, + "publishedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "submissionStartAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "submissionDueAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "deletedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "sectionId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdById": { + "nullable": true, + "type": "string" + }, + "updatedById": { + "nullable": true, + "type": "string" + }, + "deletedById": { + "nullable": true, + "type": "string" + }, + "section": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { + "type": "string" + }, + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + } + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester" + ], + "additionalProperties": false + }, + "description": { + "nullable": true, "type": "object", "properties": { - "incomplete": { + "id": { + "type": "string" + }, + "content": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "lastEditedById": { + "nullable": true, + "type": "string" + }, + "sectionId": { + "nullable": true, "type": "integer", - "minimum": 0, + "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "completed": { + "courseId": { + "nullable": true, "type": "integer", - "minimum": 0, + "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "overdue": { + "teacherId": { + "nullable": true, "type": "integer", - "minimum": 0, + "minimum": -9007199254740991, "maximum": 9007199254740991 + }, + "homeworkId": { + "nullable": true, + "type": "string" } }, "required": [ - "incomplete", - "completed", - "overdue" + "id", + "content", + "createdAt", + "updatedAt", + "lastEditedAt", + "lastEditedById", + "sectionId", + "courseId", + "teacherId", + "homeworkId" ], "additionalProperties": false }, - "items": { - "type": "array", - "items": { + "createdBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "updatedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "deletedBy": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "nullable": true, + "type": "string" + }, + "username": { + "nullable": true, + "type": "string" + }, + "image": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "name", + "username", + "image" + ], + "additionalProperties": false + }, + "completion": { + "nullable": true, + "type": "object", + "properties": { + "completedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "completedAt" + ], + "additionalProperties": false + }, + "commentCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "id", + "title", + "isMajor", + "requiresTeam", + "publishedAt", + "submissionStartAt", + "submissionDueAt", + "createdAt", + "updatedAt", + "deletedAt", + "sectionId", + "createdById", + "updatedById", + "deletedById", + "section", + "description", + "createdBy", + "updatedBy", + "deletedBy", + "completion", + "commentCount" + ], + "additionalProperties": false + } + }, + "required": [ + "success", + "homework" + ], + "additionalProperties": false + }, + "homeworkCompletionBatchRequestSchema": { + "type": "object", + "properties": { + "items": { + "minItems": 1, + "maxItems": 100, + "type": "array", + "items": { + "type": "object", + "properties": { + "homeworkId": { + "type": "string", + "minLength": 1 + }, + "completed": { + "type": "boolean" + } + }, + "required": [ + "homeworkId", + "completed" + ], + "additionalProperties": false + } + } + }, + "required": [ + "items" + ], + "additionalProperties": false + }, + "homeworkCompletionBatchResponseSchema": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "oneOf": [ + { "type": "object", "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "content": { - "nullable": true, - "type": "string" - }, - "priority": { - "type": "string", + "success": { + "type": "boolean", "enum": [ - "low", - "medium", - "high" + true ] }, + "homeworkId": { + "type": "string" + }, "completed": { "type": "boolean" }, - "dueAt": { + "completedAt": { "nullable": true, "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "success", + "homeworkId", + "completed", + "completedAt" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + false + ] }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "homeworkId": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "completed": { + "type": "boolean" + }, + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "enum": [ + "not_found", + "deleted" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "additionalProperties": false } }, "required": [ - "id", - "title", - "content", - "priority", + "success", + "homeworkId", "completed", - "dueAt", - "createdAt", - "updatedAt" + "error" ], "additionalProperties": false } + ], + "type": "object" + } + } + }, + "required": [ + "results" + ], + "additionalProperties": false + }, + "dashboardLinkPinRequestSchema": { + "type": "object", + "properties": { + "slug": { + "type": "string", + "minLength": 1 + }, + "returnTo": { + "type": "string" + }, + "action": { + "type": "string", + "enum": [ + "pin", + "unpin" + ] + } + }, + "required": [ + "slug" + ], + "additionalProperties": false + }, + "dashboardLinkPinResponseSchema": { + "type": "object", + "properties": { + "pinnedSlugs": { + "type": "array", + "items": { + "type": "string" + } + }, + "maxPinnedLinks": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + }, + "error": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "pinnedSlugs", + "maxPinnedLinks", + "error" + ], + "additionalProperties": false + }, + "dashboardLinkVisitRequestSchema": { + "type": "object", + "properties": { + "slug": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "slug" + ], + "additionalProperties": false + }, + "calendarSubscriptionBatchRequestSchema": { + "type": "object", + "properties": { + "sectionIds": { + "maxItems": 500, + "type": "array", + "items": { + "type": "integer", + "maximum": 9007199254740991, + "minimum": 1 + } + }, + "codes": { + "maxItems": 500, + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "maxLength": 64 + } + }, + "semesterId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" } - }, - "required": [ - "counts", - "items" - ], - "additionalProperties": false + ] }, - "dueTodos": { + "action": { + "type": "string", + "enum": [ + "add", + "remove", + "set" + ] + } + }, + "required": [ + "action" + ], + "additionalProperties": false + }, + "calendarSubscriptionBatchResponseSchema": { + "type": "object", + "properties": { + "semester": { + "nullable": true, "type": "object", "properties": { - "total": { + "id": { "type": "integer", - "minimum": 0, + "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "items": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "priority": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "dueAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "id", - "title", - "priority", - "dueAt", - "createdAt" - ], - "additionalProperties": false - } + "nameCn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" } }, "required": [ - "total", - "items" + "id", + "nameCn", + "code" ], "additionalProperties": false }, - "homeworks": { + "matchedCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "unmatchedCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "matchedSectionIds": { + "type": "array", + "items": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + } + }, + "unmatchedSectionIds": { + "type": "array", + "items": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + } + }, + "suggestions": { "type": "object", - "properties": { - "total": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, + "additionalProperties": { + "type": "array", "items": { - "type": "array", - "items": { + "type": "string" + } + } + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { + "type": "string" + }, + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "isMajor": { - "type": "boolean" - }, - "requiresTeam": { - "type": "boolean" - }, - "publishedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "submissionStartAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "submissionDueAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "deletedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "sectionId": { + "jwId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "createdById": { - "nullable": true, + "code": { "type": "string" }, - "updatedById": { - "nullable": true, + "nameCn": { "type": "string" }, - "deletedById": { + "nameEn": { "nullable": true, "type": "string" }, - "section": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false + "nameCn": { + "type": "string" }, - "semester": { + "nameEn": { "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] + "type": "string" } }, "required": [ "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester" + "nameCn", + "nameEn" ], "additionalProperties": false }, - "description": { + "classType": { "nullable": true, "type": "object", "properties": { "id": { - "type": "string" - }, - "content": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedById": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "nameCn": { + "type": "string" }, - "homeworkId": { + "nameEn": { "nullable": true, "type": "string" } }, "required": [ "id", - "content", - "createdAt", - "updatedAt", - "lastEditedAt", - "lastEditedById", - "sectionId", - "courseId", - "teacherId", - "homeworkId" + "nameCn", + "nameEn" ], "additionalProperties": false }, - "createdBy": { + "classify": { "nullable": true, "type": "object", "properties": { "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "username": { - "nullable": true, + "nameCn": { "type": "string" }, - "image": { + "nameEn": { "nullable": true, "type": "string" } }, "required": [ "id", - "name", - "username", - "image" + "nameCn", + "nameEn" ], "additionalProperties": false }, - "updatedBy": { + "educationLevel": { "nullable": true, "type": "object", "properties": { "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "username": { - "nullable": true, + "nameCn": { "type": "string" }, - "image": { + "nameEn": { "nullable": true, "type": "string" } }, "required": [ "id", - "name", - "username", - "image" + "nameCn", + "nameEn" ], "additionalProperties": false }, - "deletedBy": { + "gradation": { "nullable": true, "type": "object", "properties": { "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "username": { - "nullable": true, + "nameCn": { "type": "string" }, - "image": { + "nameEn": { "nullable": true, "type": "string" } }, "required": [ "id", - "name", - "username", - "image" + "nameCn", + "nameEn" ], "additionalProperties": false }, - "completion": { + "type": { "nullable": true, "type": "object", "properties": { - "completedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" } }, "required": [ - "completedAt" + "id", + "nameCn", + "nameEn" ], "additionalProperties": false }, - "commentCount": { + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + }, + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", - "minimum": 0, + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ "id", - "title", - "isMajor", - "requiresTeam", - "publishedAt", - "submissionStartAt", - "submissionDueAt", - "createdAt", - "updatedAt", - "deletedAt", - "sectionId", - "createdById", - "updatedById", - "deletedById", - "section", - "description", - "createdBy", - "updatedBy", - "deletedBy", - "completion", - "commentCount" + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "openDepartment": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" ], "additionalProperties": false + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } } - } - }, - "required": [ - "total", - "items" - ], - "additionalProperties": false + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "teachers" + ], + "additionalProperties": false + } }, - "exams": { + "total": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "action": { + "type": "string", + "enum": [ + "add", + "remove", + "set" + ] + }, + "addedCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "removedCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "unchangedCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "subscription": { + "nullable": true, "type": "object", "properties": { - "total": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 + "userId": { + "type": "string" }, - "items": { + "sections": { "type": "array", "items": { "type": "object", @@ -27032,109 +27680,172 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "examType": { + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { + "type": "string" + }, + "bizTypeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "startTime": { + "credits": { + "nullable": true, + "type": "number" + }, + "period": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "endTime": { + "periodsPerWeek": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "examDate": { + "timesPerWeek": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "examTakeCount": { + "stdCount": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "examMode": { + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { "nullable": true, "type": "string" }, - "examBatchId": { + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "sectionId": { + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "examBatch": { + "remark": { "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false + "type": "string" }, - "examRooms": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "room": { - "type": "string" - }, - "count": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "id", - "room", - "count", - "examId" - ], - "additionalProperties": false - } + "scheduleRemark": { + "nullable": true, + "type": "string" }, - "section": { + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -27147,1144 +27858,527 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, "code": { "type": "string" }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, + "nameCn": { "type": "string" }, - "scheduleRemark": { + "nameEn": { "nullable": true, "type": "string" }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { + "categoryId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "openDepartmentId": { + "classTypeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teachLanguageId": { + "classifyId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "roomTypeId": { + "educationLevelId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "nameCn": { + "type": "string" }, - "typeId": { + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "namePrimary": { + "nameCn": { "type": "string" }, - "nameSecondary": { + "nameEn": { "nullable": true, "type": "string" } }, "required": [ "id", - "jwId", - "code", "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "namePrimary", - "nameSecondary" + "nameEn" ], "additionalProperties": false }, - "semester": { + "classify": { "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - } - }, - "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "jwId", - "examType", - "startTime", - "endTime", - "examDate", - "examTakeCount", - "examMode", - "examBatchId", - "sectionId", - "examBatch", - "examRooms", - "section" - ], - "additionalProperties": false - } - } - }, - "required": [ - "total", - "items" - ], - "additionalProperties": false - } - }, - "required": [ - "user", - "anchor", - "counts", - "schedules", - "todos", - "dueTodos", - "homeworks", - "exams" - ], - "additionalProperties": false - }, - "sectionDetailSchema": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "code": { - "type": "string" - }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, - "type": "boolean" - }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "typeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "category": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classType": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "classify": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "educationLevel": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "gradation": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "type": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + }, + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "openDepartment": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } + } }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "category", - "classType", - "classify", - "educationLevel", - "gradation", - "type" - ], - "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code" - ], - "additionalProperties": false - }, - "openDepartment": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege" - ], - "additionalProperties": false - }, - "examMode": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "teachLanguage": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "teachers" + ], + "additionalProperties": false + } }, - "nameCn": { + "calendarPath": { "type": "string" }, - "nameEn": { - "nullable": true, + "calendarUrl": { + "type": "string" + }, + "note": { "type": "string" } }, "required": [ - "id", - "nameCn", - "nameEn" + "userId", + "sections", + "calendarPath", + "calendarUrl", + "note" ], "additionalProperties": false - }, - "roomType": { + } + }, + "required": [ + "semester", + "matchedCodes", + "unmatchedCodes", + "matchedSectionIds", + "unmatchedSectionIds", + "suggestions", + "sections", + "total", + "action", + "addedCount", + "removedCount", + "unchangedCount", + "subscription" + ], + "additionalProperties": false + }, + "currentCalendarSubscriptionResponseSchema": { + "type": "object", + "properties": { + "subscription": { "nullable": true, "type": "object", "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { + "userId": { "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code" - ], - "additionalProperties": false - }, - "schedules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periods": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "date": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "weekday": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "startTime": { - "type": "string" - }, - "endTime": { - "type": "string" - }, - "experiment": { - "nullable": true, - "type": "string" - }, - "customPlace": { - "nullable": true, - "type": "string" - }, - "lessonType": { - "nullable": true, - "type": "string" - }, - "weekIndex": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "exerciseClass": { - "nullable": true, - "type": "boolean" - }, - "startUnit": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "endUnit": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "scheduleGroupId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "id", - "periods", - "date", - "weekday", - "startTime", - "endTime", - "experiment", - "customPlace", - "lessonType", - "weekIndex", - "exerciseClass", - "startUnit", - "endUnit", - "roomId", - "sectionId", - "scheduleGroupId" - ], - "additionalProperties": false - } - }, - "scheduleGroups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "no": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "actualPeriods": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "isDefault": { - "type": "boolean" - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } }, - "required": [ - "id", - "jwId", - "no", - "limitCount", - "stdCount", - "actualPeriods", - "isDefault", - "sectionId" - ], - "additionalProperties": false - } - }, - "teachers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "department": { - "nullable": true, + "sections": { + "type": "array", + "items": { "type": "object", "properties": { "id": { @@ -28292,562 +28386,691 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { - "type": "string" + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "nameEn": { + "retiredAt": { "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { "type": "string" }, - "isCollege": { + "bizTypeId": { "nullable": true, - "type": "boolean" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege" - ], - "additionalProperties": false - }, - "teacherTitle": { - "nullable": true, - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - }, - "nameEn": { + "periodsPerWeek": { "nullable": true, - "type": "string" - }, - "code": { - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "enabled": { + "timesPerWeek": { "nullable": true, - "type": "boolean" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "enabled" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "department", - "teacherTitle" - ], - "additionalProperties": false - } - }, - "teacherAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "role": { - "nullable": true, - "type": "string" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "weekIndices": { - "nullable": true, - "type": "array", - "items": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "weekIndicesMsg": { - "nullable": true, - "type": "string" - }, - "teacherLessonTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacher": { - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "personId": { + "stdCount": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teacherId": { + "limitCount": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { "nullable": true, "type": "string" }, - "nameCn": { + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, "type": "string" }, - "nameEn": { + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { "nullable": true, "type": "string" }, - "age": { + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { + "remark": { "nullable": true, "type": "string" }, - "address": { + "scheduleRemark": { "nullable": true, "type": "string" }, - "postcode": { - "nullable": true, - "type": "string" + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "qq": { + "semesterId": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "wechat": { + "campusId": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "departmentId": { + "examModeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teacherTitleId": { + "openDepartmentId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId" - ], - "additionalProperties": false - }, - "teacherLessonType": { - "nullable": true, - "type": "object", - "properties": { - "id": { + }, + "teachLanguageId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { + "roomTypeId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" + "course": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false }, - "nameEn": { + "semester": { "nullable": true, - "type": "string" - }, - "code": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] }, - "role": { + "campus": { "nullable": true, - "type": "string" + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false }, - "enabled": { + "openDepartment": { "nullable": true, - "type": "boolean" + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } } }, "required": [ "id", "jwId", - "nameCn", - "nameEn", "code", - "role", - "enabled" + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "teachers" ], "additionalProperties": false } }, - "required": [ - "id", - "teacherId", - "sectionId", - "role", - "period", - "weekIndices", - "weekIndicesMsg", - "teacherLessonTypeId", - "teacher", - "teacherLessonType" - ], - "additionalProperties": false - } - }, - "exams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examType": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "startTime": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "endTime": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examDate": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "examTakeCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examMode": { - "nullable": true, - "type": "string" - }, - "examBatchId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examBatch": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "nameCn", - "nameEn" - ], - "additionalProperties": false - }, - "examRooms": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "room": { - "type": "string" - }, - "count": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "id", - "room", - "count", - "examId" - ], - "additionalProperties": false - } - } + "calendarPath": { + "type": "string" }, - "required": [ - "id", - "jwId", - "examType", - "startTime", - "endTime", - "examDate", - "examTakeCount", - "examMode", - "examBatchId", - "sectionId", - "examBatch", - "examRooms" - ], - "additionalProperties": false - } - }, - "adminClasses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "grade": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "planCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "enabled": { - "nullable": true, - "type": "boolean" - }, - "abbrZh": { - "nullable": true, - "type": "string" - }, - "abbrEn": { - "nullable": true, - "type": "string" - } + "calendarUrl": { + "type": "string" }, - "required": [ - "id", - "jwId", - "code", - "grade", - "nameCn", - "nameEn", - "stdCount", - "planCount", - "enabled", - "abbrZh", - "abbrEn" - ], - "additionalProperties": false - } + "note": { + "type": "string" + } + }, + "required": [ + "userId", + "sections", + "calendarPath", + "calendarUrl", + "note" + ], + "additionalProperties": false } }, "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester", - "campus", - "openDepartment", - "examMode", - "teachLanguage", - "roomType", - "schedules", - "scheduleGroups", - "teachers", - "teacherAssignments", - "exams", - "adminClasses" + "subscription" ], "additionalProperties": false }, - "matchSectionCodesResponseSchema": { + "calendarSubscriptionImportResponseSchema": { "type": "object", "properties": { + "success": { + "type": "boolean" + }, "semester": { "type": "object", "properties": { @@ -28884,13 +29107,10 @@ "type": "string" } }, - "suggestions": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } + "ambiguousCodes": { + "type": "array", + "items": { + "type": "string" } }, "sections": { @@ -29557,172 +29777,12 @@ "additionalProperties": false } }, - "total": { + "addedCount": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 - } - }, - "required": [ - "semester", - "matchedCodes", - "unmatchedCodes", - "suggestions", - "sections", - "total" - ], - "additionalProperties": false - }, - "teacherDetailSchema": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "personId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "age": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "email": { - "nullable": true, - "type": "string" - }, - "telephone": { - "nullable": true, - "type": "string" - }, - "mobile": { - "nullable": true, - "type": "string" - }, - "address": { - "nullable": true, - "type": "string" - }, - "postcode": { - "nullable": true, - "type": "string" - }, - "qq": { - "nullable": true, - "type": "string" - }, - "wechat": { - "nullable": true, - "type": "string" - }, - "departmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherTitleId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "department": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege" - ], - "additionalProperties": false - }, - "teacherTitle": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "type": "string" - }, - "enabled": { - "nullable": true, - "type": "boolean" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "enabled" - ], - "additionalProperties": false }, - "sections": { + "addedSections": { "type": "array", "items": { "type": "object", @@ -30104,6 +30164,13 @@ "nameEn" ], "additionalProperties": false + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ @@ -30123,7 +30190,9 @@ "classify", "educationLevel", "gradation", - "type" + "type", + "namePrimary", + "nameSecondary" ], "additionalProperties": false }, @@ -30134,6 +30203,203 @@ "$ref": "#/components/schemas/semesterSchema" } ] + }, + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "openDepartment": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } } }, "required": [ @@ -30172,1033 +30438,545 @@ "teachLanguageId", "roomTypeId", "course", - "semester" + "semester", + "campus", + "openDepartment", + "teachers" ], "additionalProperties": false } }, - "_count": { - "type": "object", - "properties": { - "sections": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "sections" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "personId", - "teacherId", - "code", - "nameCn", - "nameEn", - "age", - "email", - "telephone", - "mobile", - "address", - "postcode", - "qq", - "wechat", - "departmentId", - "teacherTitleId", - "department", - "teacherTitle", - "sections", - "_count" - ], - "additionalProperties": false - }, - "todoUpdateRequestSchema": { - "type": "object", - "properties": { - "title": { - "type": "string", - "minLength": 1, - "maxLength": 200 - }, - "content": { - "nullable": true, - "type": "string", - "maxLength": 4000 - }, - "priority": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "dueAt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - }, - "completed": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "todoUpdateResponseSchema": { - "type": "object", - "properties": { - "success": { - "type": "boolean" + "alreadySubscribedCount": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 }, - "todo": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "content": { - "nullable": true, - "type": "string" - }, - "priority": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "completed": { - "type": "boolean" - }, - "dueAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "id", - "title", - "content", - "priority", - "completed", - "dueAt", - "createdAt", - "updatedAt" - ], - "additionalProperties": false - } - }, - "required": [ - "success", - "todo" - ], - "additionalProperties": false - }, - "todoCompletionBatchRequestSchema": { - "type": "object", - "properties": { - "items": { - "minItems": 1, - "maxItems": 100, + "alreadySubscribedSections": { "type": "array", "items": { "type": "object", "properties": { - "todoId": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "sourceLastSeenAt": { + "nullable": true, "type": "string", - "minLength": 1 + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "retiredAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "code": { + "type": "string" + }, + "bizTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "credits": { + "nullable": true, + "type": "number" + }, + "period": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "periodsPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "timesPerWeek": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "stdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "limitCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, + "type": "string" + }, + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, + "type": "string" + }, + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { + "nullable": true, + "type": "string" + }, + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { + "nullable": true, + "type": "string" + }, + "scheduleRemark": { + "nullable": true, + "type": "string" + }, + "courseId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "semesterId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "completed": { - "type": "boolean" - } - }, - "required": [ - "todoId", - "completed" - ], - "additionalProperties": false - } - } - }, - "required": [ - "items" - ], - "additionalProperties": false - }, - "todoCompletionBatchResponseSchema": { - "type": "object", - "properties": { - "results": { - "type": "array", - "items": { - "oneOf": [ - { + "campusId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "examModeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "openDepartmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { - "success": { - "type": "boolean", - "enum": [ - true - ] + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "todoId": { + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { "type": "string" }, - "completed": { - "type": "boolean" + "nameCn": { + "type": "string" }, - "todo": { + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, "type": "object", "properties": { "id": { - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "title": { + "nameCn": { "type": "string" }, - "content": { + "nameEn": { "nullable": true, "type": "string" - }, - "priority": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "completed": { - "type": "boolean" - }, - "dueAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": [ "id", - "title", - "content", - "priority", - "completed", - "dueAt", - "createdAt", - "updatedAt" + "nameCn", + "nameEn" ], "additionalProperties": false - } - }, - "required": [ - "success", - "todoId", - "completed", - "todo" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "enum": [ - false - ] - }, - "todoId": { - "type": "string" - }, - "completed": { - "type": "boolean" }, - "error": { + "classType": { + "nullable": true, "type": "object", "properties": { - "code": { - "type": "string", - "enum": [ - "not_found", - "forbidden" - ] + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "message": { + "nameCn": { "type": "string" - } - }, - "required": [ - "code", - "message" - ], - "additionalProperties": false - } - }, - "required": [ - "success", - "todoId", - "completed", - "error" - ], - "additionalProperties": false - } - ], - "type": "object" - } - } - }, - "required": [ - "results" - ], - "additionalProperties": false - }, - "todoBatchDeleteRequestSchema": { - "type": "object", - "properties": { - "ids": { - "minItems": 1, - "maxItems": 100, - "type": "array", - "items": { - "type": "string", - "minLength": 1 - } - } - }, - "required": [ - "ids" - ], - "additionalProperties": false - }, - "todoBatchDeleteResponseSchema": { - "type": "object", - "properties": { - "results": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "enum": [ - true - ] - }, - "id": { - "type": "string" - } - }, - "required": [ - "success", - "id" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "enum": [ - false - ] - }, - "id": { - "type": "string" - }, - "error": { - "type": "object", - "properties": { - "code": { - "type": "string", - "enum": [ - "not_found", - "forbidden" - ] }, - "message": { + "nameEn": { + "nullable": true, "type": "string" } }, "required": [ - "code", - "message" - ], - "additionalProperties": false - } - }, - "required": [ - "success", - "id", - "error" - ], - "additionalProperties": false - } - ], - "type": "object" - } - } - }, - "required": [ - "results" - ], - "additionalProperties": false - }, - "uploadRenameRequestSchema": { - "type": "object", - "properties": { - "filename": { - "type": "string", - "minLength": 1, - "maxLength": 255 - } - }, - "required": [ - "filename" - ], - "additionalProperties": false - }, - "uploadRenameResponseSchema": { - "type": "object", - "properties": { - "upload": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "key": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "size": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "id", - "key", - "filename", - "size", - "createdAt" - ], - "additionalProperties": false - } - }, - "required": [ - "upload" - ], - "additionalProperties": false - }, - "uploadDeleteResponseSchema": { - "type": "object", - "properties": { - "deletedId": { - "type": "string" - }, - "deletedSize": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "deletedId", - "deletedSize" - ], - "additionalProperties": false - }, - "uploadCompleteRequestSchema": { - "type": "object", - "properties": { - "key": { - "type": "string", - "minLength": 1 - }, - "filename": { - "type": "string", - "minLength": 1 - }, - "contentType": { - "type": "string" - } - }, - "required": [ - "key", - "filename" - ], - "additionalProperties": false - }, - "uploadCompleteResponseSchema": { - "type": "object", - "properties": { - "upload": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "key": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "size": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "id", - "key", - "filename", - "size", - "createdAt" - ], - "additionalProperties": false - }, - "usedBytes": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "quotaBytes": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - }, - "required": [ - "upload", - "usedBytes", - "quotaBytes" - ], - "additionalProperties": false - }, - "publicUserProfileResponseSchema": { - "type": "object", - "properties": { - "user": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "_count": { - "type": "object", - "properties": { - "comments": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "uploads": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "homeworksCreated": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } }, - "subscribedSections": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false }, - "required": [ - "comments", - "uploads", - "homeworksCreated", - "subscribedSections" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "username", - "name", - "image", - "createdAt", - "_count" - ], - "additionalProperties": false - }, - "sectionCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - }, - "weeks": { - "type": "array", - "items": { - "type": "array", - "items": { - "type": "object", - "properties": { - "date": { - "type": "string", - "pattern": "^\\d{4}-\\d{2}-\\d{2}$" - }, - "count": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] }, - "required": [ - "date", - "count" - ], - "additionalProperties": false - } - } - }, - "totalContributions": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": [ - "user", - "sectionCount", - "weeks", - "totalContributions" - ], - "additionalProperties": false - }, - "adminModerateCommentRequestSchema": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "active", - "softbanned", - "deleted" - ] - }, - "moderationNote": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "status" - ], - "additionalProperties": false - }, - "adminModeratedCommentResponseSchema": { - "type": "object", - "properties": { - "comment": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "body": { - "type": "string" - }, - "visibility": { - "type": "string", - "enum": [ - "public", - "logged_in_only" - ] - }, - "status": { - "type": "string", - "enum": [ - "active", - "softbanned", - "deleted" - ] - }, - "isAnonymous": { - "type": "boolean" - }, - "authorName": { - "nullable": true, - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "deletedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "moderatedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "moderationNote": { - "nullable": true, - "type": "string" - }, - "userId": { - "nullable": true, - "type": "string" - }, - "moderatedById": { - "nullable": true, - "type": "string" - }, - "parentId": { - "nullable": true, - "type": "string" - }, - "rootId": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sectionTeacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "body", - "visibility", - "status", - "isAnonymous", - "authorName", - "createdAt", - "updatedAt", - "deletedAt", - "moderatedAt", - "moderationNote", - "userId", - "moderatedById", - "parentId", - "rootId", - "sectionId", - "courseId", - "teacherId", - "sectionTeacherId", - "homeworkId" - ], - "additionalProperties": false - } - }, - "required": [ - "comment" - ], - "additionalProperties": false - }, - "adminModerateDescriptionRequestSchema": { - "type": "object", - "properties": { - "content": { - "type": "string", - "maxLength": 4000 - } - }, - "required": [ - "content" - ], - "additionalProperties": false - }, - "adminModeratedDescriptionResponseSchema": { - "type": "object", - "properties": { - "description": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "content": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedById": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - }, - "lastEditedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } }, - "username": { - "nullable": true, - "type": "string" + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "openDepartment": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } }, - "image": { - "nullable": true, - "type": "string" - } + "required": [ + "id", + "code", + "nameCn", + "nameEn", + "isCollege", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "section": { - "nullable": true, - "type": "object", - "properties": { - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "nullable": true, - "type": "string" - }, - "course": { - "nullable": true, + "teachers": { + "type": "array", + "items": { "type": "object", "properties": { - "jwId": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { - "type": "string" + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - } - }, - "required": [ - "jwId", - "code", - "course" - ], - "additionalProperties": false - }, - "course": { - "nullable": true, - "type": "object", - "properties": { - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - }, - "teacher": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "id", - "nameCn" - ], - "additionalProperties": false - }, - "homework": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "section": { - "nullable": true, - "type": "object", - "properties": { - "jwId": { + "teacherId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, @@ -31208,544 +30986,145 @@ "nullable": true, "type": "string" }, - "course": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, - "type": "object", - "properties": { - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - } - }, - "required": [ - "jwId", - "code", - "nameCn" - ], - "additionalProperties": false - } - }, - "required": [ - "jwId", - "code", - "course" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "title", - "section" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "content", - "createdAt", - "updatedAt", - "lastEditedAt", - "lastEditedById", - "sectionId", - "courseId", - "teacherId", - "homeworkId", - "lastEditedBy", - "section", - "course", - "teacher", - "homework" - ], - "additionalProperties": false - } - }, - "required": [ - "description" - ], - "additionalProperties": false - }, - "adminUpdateUserRequestSchema": { - "type": "object", - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - }, - "username": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "nullable": true, - "enum": [ - null - ] - } - ] - }, - "isAdmin": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "adminUserResponseSchema": { - "type": "object", - "properties": { - "user": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "isAdmin": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "email": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "isAdmin", - "createdAt", - "email" - ], - "additionalProperties": false - } - }, - "required": [ - "user" - ], - "additionalProperties": false - }, - "oauthDeviceAuthorizationRequestSchema": { - "type": "object", - "properties": { - "client_id": { - "type": "string", - "minLength": 1 - }, - "resource": { - "anyOf": [ - { - "type": "string", - "minLength": 1 - }, - { - "type": "array", - "items": { - "type": "string", - "minLength": 1 - } - } - ] - }, - "scope": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "client_id" - ], - "additionalProperties": false - }, - "oauthDeviceAuthorizationResponseSchema": { - "type": "object", - "properties": { - "device_code": { - "type": "string" - }, - "user_code": { - "type": "string" - }, - "verification_uri": { - "type": "string", - "format": "uri" - }, - "verification_uri_complete": { - "type": "string", - "format": "uri" - }, - "expires_in": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - }, - "interval": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - } - }, - "required": [ - "device_code", - "user_code", - "verification_uri", - "verification_uri_complete", - "expires_in", - "interval" - ], - "additionalProperties": false - }, - "oauthErrorResponseSchema": { - "type": "object", - "properties": { - "error": { - "type": "string" - }, - "error_description": { - "type": "string" - } - }, - "required": [ - "error" - ], - "additionalProperties": false - }, - "oauthTokenRequestSchema": { - "type": "object", - "properties": { - "grant_type": { - "type": "string", - "minLength": 1 - }, - "client_id": { - "type": "string", - "minLength": 1 - }, - "client_secret": { - "type": "string" - }, - "code": { - "type": "string", - "minLength": 1 - }, - "code_verifier": { - "type": "string", - "minLength": 1 - }, - "device_code": { - "type": "string", - "minLength": 1 - }, - "redirect_uri": { - "type": "string", - "minLength": 1 - }, - "refresh_token": { - "type": "string", - "minLength": 1 - }, - "resource": { - "anyOf": [ - { - "type": "string", - "minLength": 1 - }, - { - "type": "array", - "items": { - "type": "string", - "minLength": 1 - } - } - ] - }, - "scope": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "grant_type" - ], - "additionalProperties": false - }, - "oauthTokenResponseSchema": { - "type": "object", - "properties": { - "access_token": { - "type": "string" - }, - "token_type": { - "type": "string", - "enum": [ - "Bearer" - ] - }, - "expires_in": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - }, - "expires_at": { - "type": "integer", - "exclusiveMinimum": true, - "maximum": 9007199254740991 - }, - "refresh_token": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "id_token": { - "type": "string" - } - }, - "required": [ - "access_token", - "token_type", - "expires_in" - ], - "additionalProperties": false - }, - "commentReactionRequestSchema": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "upvote", - "downvote", - "heart", - "laugh", - "hooray", - "confused", - "rocket", - "eyes" - ] - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "dashboardLinkPinBatchRequestSchema": { - "type": "object", - "properties": { - "items": { - "minItems": 1, - "maxItems": 10, - "type": "array", - "items": { - "type": "object", - "properties": { - "slug": { - "type": "string", - "minLength": 1 - }, - "action": { - "type": "string", - "enum": [ - "pin", - "unpin" - ] + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } } }, "required": [ - "slug", - "action" + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "teachers" ], "additionalProperties": false } - } - }, - "required": [ - "items" - ], - "additionalProperties": false - }, - "homeworkCompletionRequestSchema": { - "type": "object", - "properties": { - "completed": { - "type": "boolean" - } - }, - "required": [ - "completed" - ], - "additionalProperties": false - }, - "homeworkCompletionResponseSchema": { - "type": "object", - "properties": { - "completed": { - "type": "boolean" }, - "completedAt": { + "subscription": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "completed", - "completedAt" - ], - "additionalProperties": false - }, - "subscribedHomeworksResponseSchema": { - "type": "object", - "properties": { - "viewer": { "type": "object", "properties": { "userId": { - "nullable": true, - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - }, - "isAdmin": { - "type": "boolean" - }, - "isAuthenticated": { - "type": "boolean" - }, - "isSuspended": { - "type": "boolean" - }, - "suspensionReason": { - "nullable": true, "type": "string" }, - "suspensionExpiresAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "userId", - "name", - "image", - "isAdmin", - "isAuthenticated", - "isSuspended", - "suspensionReason", - "suspensionExpiresAt" - ], - "additionalProperties": false - }, - "homeworks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "isMajor": { - "type": "boolean" - }, - "requiresTeam": { - "type": "boolean" - }, - "publishedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "submissionStartAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "submissionDueAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "deletedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "createdById": { - "nullable": true, - "type": "string" - }, - "updatedById": { - "nullable": true, - "type": "string" - }, - "deletedById": { - "nullable": true, - "type": "string" - }, - "section": { + "sections": { + "type": "array", + "items": { "type": "object", "properties": { "id": { @@ -31911,19 +31290,262 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "teachLanguageId": { + "teachLanguageId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "roomTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "categoryId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classTypeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "classifyId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "educationLevelId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "gradationId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "typeId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "category": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "educationLevel": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "semester": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] }, - "roomTypeId": { + "campus": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { "type": "object", "properties": { "id": { @@ -31932,13 +31554,11 @@ "maximum": 9007199254740991 }, "jwId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "code": { - "type": "string" - }, "nameCn": { "type": "string" }, @@ -31946,41 +31566,51 @@ "nullable": true, "type": "string" }, - "categoryId": { + "code": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "namePrimary": { + "type": "string" }, - "classifyId": { + "nameSecondary": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "openDepartment": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "code": { + "type": "string" }, - "gradationId": { + "nameCn": { + "type": "string" + }, + "nameEn": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string" }, - "typeId": { + "isCollege": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "boolean" }, "namePrimary": { "type": "string" @@ -31992,28 +31622,124 @@ }, "required": [ "id", - "jwId", "code", "nameCn", "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", + "isCollege", "namePrimary", "nameSecondary" ], "additionalProperties": false }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] + "teachers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "personId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "nullable": true, + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "age": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "email": { + "nullable": true, + "type": "string" + }, + "telephone": { + "nullable": true, + "type": "string" + }, + "mobile": { + "nullable": true, + "type": "string" + }, + "address": { + "nullable": true, + "type": "string" + }, + "postcode": { + "nullable": true, + "type": "string" + }, + "qq": { + "nullable": true, + "type": "string" + }, + "wechat": { + "nullable": true, + "type": "string" + }, + "departmentId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "teacherTitleId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "personId", + "teacherId", + "code", + "nameCn", + "nameEn", + "age", + "email", + "telephone", + "mobile", + "address", + "postcode", + "qq", + "wechat", + "departmentId", + "teacherTitleId", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + } } }, "required": [ @@ -32052,387 +31778,329 @@ "teachLanguageId", "roomTypeId", "course", - "semester" - ], - "additionalProperties": false - }, - "description": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "content": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "lastEditedById": { - "nullable": true, - "type": "string" - }, - "sectionId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "courseId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teacherId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "homeworkId": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "content", - "createdAt", - "updatedAt", - "lastEditedAt", - "lastEditedById", - "sectionId", - "courseId", - "teacherId", - "homeworkId" - ], - "additionalProperties": false - }, - "createdBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "updatedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "deletedBy": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - }, - "completion": { - "nullable": true, - "type": "object", - "properties": { - "completedAt": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - } - }, - "required": [ - "completedAt" + "semester", + "campus", + "openDepartment", + "teachers" ], "additionalProperties": false - }, - "commentCount": { - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 } }, - "required": [ - "id", - "title", - "isMajor", - "requiresTeam", - "publishedAt", - "submissionStartAt", - "submissionDueAt", - "createdAt", - "updatedAt", - "deletedAt", - "sectionId", - "createdById", - "updatedById", - "deletedById", - "section", - "description", - "createdBy", - "updatedBy", - "deletedBy", - "completion", - "commentCount" - ], - "additionalProperties": false + "calendarPath": { + "type": "string" + }, + "calendarUrl": { + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": [ + "userId", + "sections", + "calendarPath", + "calendarUrl", + "note" + ], + "additionalProperties": false + } + }, + "required": [ + "success", + "semester", + "matchedCodes", + "unmatchedCodes", + "ambiguousCodes", + "sections", + "addedCount", + "addedSections", + "alreadySubscribedCount", + "alreadySubscribedSections", + "subscription" + ], + "additionalProperties": false + }, + "calendarSubscriptionQueryRequestSchema": { + "type": "object", + "properties": { + "sectionIds": { + "maxItems": 500, + "type": "array", + "items": { + "type": "integer", + "maximum": 9007199254740991, + "minimum": 1 + } + }, + "codes": { + "maxItems": 500, + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "maxLength": 64 + } + }, + "semesterId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + } + }, + "additionalProperties": false + }, + "calendarSubscriptionQueryResponseSchema": { + "type": "object", + "properties": { + "semester": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "code" + ], + "additionalProperties": false + }, + "matchedCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "unmatchedCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "matchedSectionIds": { + "type": "array", + "items": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 } }, - "auditLogs": { + "unmatchedSectionIds": { + "type": "array", + "items": { + "type": "integer", + "exclusiveMinimum": true, + "maximum": 9007199254740991 + } + }, + "suggestions": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "sections": { "type": "array", "items": { "type": "object", "properties": { "id": { - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "action": { - "type": "string", - "enum": [ - "created", - "deleted" - ] + "jwId": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "titleSnapshot": { - "type": "string" + "sourceLastSeenAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "createdAt": { + "retiredAt": { + "nullable": true, "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "sectionId": { + "code": { + "type": "string" + }, + "bizTypeId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "homeworkId": { + "credits": { "nullable": true, - "type": "string" + "type": "number" }, - "actorId": { + "period": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "actor": { + "periodsPerWeek": { "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "nullable": true, - "type": "string" - }, - "username": { - "nullable": true, - "type": "string" - }, - "image": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "name", - "username", - "image" - ], - "additionalProperties": false - } - }, - "required": [ - "id", - "action", - "titleSnapshot", - "createdAt", - "sectionId", - "homeworkId", - "actorId", - "actor" - ], - "additionalProperties": false - } - }, - "sectionIds": { - "type": "array", - "items": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - } - } - }, - "required": [ - "viewer", - "homeworks", - "auditLogs", - "sectionIds" - ], - "additionalProperties": false - }, - "subscribedSchedulesResponseSchema": { - "type": "object", - "properties": { - "schedules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "periods": { + "timesPerWeek": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "date": { + "stdCount": { "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "weekday": { + "limitCount": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "startTime": { + "graduateAndPostgraduate": { + "nullable": true, + "type": "boolean" + }, + "dateTimePlaceText": { + "nullable": true, "type": "string" }, - "endTime": { + "dateTimePlacePersonText": { + "nullable": true + }, + "actualPeriods": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "theoryPeriods": { + "nullable": true, + "type": "number" + }, + "practicePeriods": { + "nullable": true, + "type": "number" + }, + "experimentPeriods": { + "nullable": true, + "type": "number" + }, + "machinePeriods": { + "nullable": true, + "type": "number" + }, + "designPeriods": { + "nullable": true, + "type": "number" + }, + "testPeriods": { + "nullable": true, + "type": "number" + }, + "scheduleState": { + "nullable": true, "type": "string" }, - "experiment": { + "suggestScheduleWeeks": { + "nullable": true + }, + "suggestScheduleWeekInfo": { "nullable": true, "type": "string" }, - "customPlace": { + "scheduleJsonParams": { + "nullable": true + }, + "selectedStdCount": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "remark": { "nullable": true, "type": "string" }, - "lessonType": { + "scheduleRemark": { "nullable": true, "type": "string" }, - "weekIndex": { + "courseId": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "exerciseClass": { + "semesterId": { "nullable": true, - "type": "boolean" - }, - "startUnit": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "endUnit": { + "campusId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "roomId": { + "examModeId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "sectionId": { + "openDepartmentId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "scheduleGroupId": { + "teachLanguageId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "room": { + "roomTypeId": { "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "course": { "type": "object", "properties": { "id": { @@ -32445,6 +32113,9 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "code": { + "type": "string" + }, "nameCn": { "type": "string" }, @@ -32452,52 +32123,43 @@ "nullable": true, "type": "string" }, - "code": { - "type": "string" - }, - "floor": { + "categoryId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "virtual": { - "type": "boolean" - }, - "seatsForSection": { + "classTypeId": { + "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "remark": { + "classifyId": { "nullable": true, - "type": "string" - }, - "seats": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "buildingId": { + "educationLevelId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "roomTypeId": { + "gradationId": { "nullable": true, "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { + "typeId": { "nullable": true, - "type": "string" + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "building": { + "category": { "nullable": true, "type": "object", "properties": { @@ -32506,94 +32168,70 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, "nameCn": { "type": "string" }, "nameEn": { "nullable": true, "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classType": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "code": { + "nameCn": { "type": "string" }, - "campusId": { + "nameEn": { "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "classify": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "namePrimary": { + "nameCn": { "type": "string" }, - "nameSecondary": { + "nameEn": { "nullable": true, "type": "string" - }, - "campus": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "code": { - "nullable": true, - "type": "string" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "jwId", - "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false } }, "required": [ "id", - "jwId", "nameCn", - "nameEn", - "code", - "campusId", - "namePrimary", - "nameSecondary", - "campus" + "nameEn" ], "additionalProperties": false }, - "roomType": { + "educationLevel": { "nullable": true, "type": "object", "properties": { @@ -32602,7 +32240,26 @@ "minimum": -9007199254740991, "maximum": 9007199254740991 }, - "jwId": { + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "gradation": { + "nullable": true, + "type": "object", + "properties": { + "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 @@ -32613,47 +32270,162 @@ "nameEn": { "nullable": true, "type": "string" + } + }, + "required": [ + "id", + "nameCn", + "nameEn" + ], + "additionalProperties": false + }, + "type": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 }, - "code": { - "type": "string" - }, - "namePrimary": { + "nameCn": { "type": "string" }, - "nameSecondary": { + "nameEn": { "nullable": true, "type": "string" } }, "required": [ "id", - "jwId", "nameCn", - "nameEn", - "code", - "namePrimary", - "nameSecondary" + "nameEn" ], "additionalProperties": false + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "code", + "nameCn", + "nameEn", + "categoryId", + "classTypeId", + "classifyId", + "educationLevelId", + "gradationId", + "typeId", + "category", + "classType", + "classify", + "educationLevel", + "gradation", + "type", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "semester": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/semesterSchema" + } + ] + }, + "campus": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "jwId": { + "nullable": true, + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "code": { + "nullable": true, + "type": "string" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" + } + }, + "required": [ + "id", + "jwId", + "nameCn", + "nameEn", + "code", + "namePrimary", + "nameSecondary" + ], + "additionalProperties": false + }, + "openDepartment": { + "nullable": true, + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "code": { + "type": "string" + }, + "nameCn": { + "type": "string" + }, + "nameEn": { + "nullable": true, + "type": "string" + }, + "isCollege": { + "nullable": true, + "type": "boolean" + }, + "namePrimary": { + "type": "string" + }, + "nameSecondary": { + "nullable": true, + "type": "string" } }, "required": [ "id", - "jwId", + "code", "nameCn", "nameEn", - "code", - "floor", - "virtual", - "seatsForSection", - "remark", - "seats", - "buildingId", - "roomTypeId", + "isCollege", "namePrimary", - "nameSecondary", - "building", - "roomType" + "nameSecondary" ], "additionalProperties": false }, @@ -32742,48 +32514,6 @@ "nameSecondary": { "nullable": true, "type": "string" - }, - "department": { - "nullable": true, - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { - "type": "string" - }, - "nameCn": { - "type": "string" - }, - "nameEn": { - "nullable": true, - "type": "string" - }, - "isCollege": { - "nullable": true, - "type": "boolean" - }, - "namePrimary": { - "type": "string" - }, - "nameSecondary": { - "nullable": true, - "type": "string" - } - }, - "required": [ - "id", - "code", - "nameCn", - "nameEn", - "isCollege", - "namePrimary", - "nameSecondary" - ], - "additionalProperties": false } }, "required": [ @@ -32804,406 +32534,676 @@ "departmentId", "teacherTitleId", "namePrimary", - "nameSecondary", - "department" + "nameSecondary" ], "additionalProperties": false } + } + }, + "required": [ + "id", + "jwId", + "code", + "bizTypeId", + "credits", + "period", + "periodsPerWeek", + "timesPerWeek", + "stdCount", + "limitCount", + "graduateAndPostgraduate", + "dateTimePlaceText", + "dateTimePlacePersonText", + "actualPeriods", + "theoryPeriods", + "practicePeriods", + "experimentPeriods", + "machinePeriods", + "designPeriods", + "testPeriods", + "scheduleState", + "suggestScheduleWeeks", + "suggestScheduleWeekInfo", + "scheduleJsonParams", + "selectedStdCount", + "remark", + "scheduleRemark", + "courseId", + "semesterId", + "campusId", + "examModeId", + "openDepartmentId", + "teachLanguageId", + "roomTypeId", + "course", + "semester", + "campus", + "openDepartment", + "teachers" + ], + "additionalProperties": false + } + }, + "total": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "semester", + "matchedCodes", + "unmatchedCodes", + "matchedSectionIds", + "unmatchedSectionIds", + "suggestions", + "sections", + "total" + ], + "additionalProperties": false + }, + "todoUpdateRequestSchema": { + "type": "object", + "properties": { + "title": { + "type": "string", + "minLength": 1, + "maxLength": 200 + }, + "content": { + "nullable": true, + "type": "string", + "maxLength": 4000 + }, + "priority": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] + }, + "dueAt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "nullable": true, + "enum": [ + null + ] + } + ] + }, + "completed": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "todoUpdateResponseSchema": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "todo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "content": { + "nullable": true, + "type": "string" + }, + "priority": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] + }, + "completed": { + "type": "boolean" + }, + "dueAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "id", + "title", + "content", + "priority", + "completed", + "dueAt", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + } + }, + "required": [ + "success", + "todo" + ], + "additionalProperties": false + }, + "todoCompletionBatchRequestSchema": { + "type": "object", + "properties": { + "items": { + "minItems": 1, + "maxItems": 100, + "type": "array", + "items": { + "type": "object", + "properties": { + "todoId": { + "type": "string", + "minLength": 1 }, - "section": { + "completed": { + "type": "boolean" + } + }, + "required": [ + "todoId", + "completed" + ], + "additionalProperties": false + } + } + }, + "required": [ + "items" + ], + "additionalProperties": false + }, + "todoCompletionBatchResponseSchema": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "oneOf": [ + { "type": "object", "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "sourceLastSeenAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - }, - "retiredAt": { - "nullable": true, - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + "success": { + "type": "boolean", + "enum": [ + true + ] }, - "code": { + "todoId": { "type": "string" }, - "bizTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "credits": { - "nullable": true, - "type": "number" - }, - "period": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "periodsPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "timesPerWeek": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "stdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "limitCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "graduateAndPostgraduate": { - "nullable": true, + "completed": { "type": "boolean" }, - "dateTimePlaceText": { - "nullable": true, - "type": "string" - }, - "dateTimePlacePersonText": { - "nullable": true - }, - "actualPeriods": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "theoryPeriods": { - "nullable": true, - "type": "number" - }, - "practicePeriods": { - "nullable": true, - "type": "number" - }, - "experimentPeriods": { - "nullable": true, - "type": "number" - }, - "machinePeriods": { - "nullable": true, - "type": "number" - }, - "designPeriods": { - "nullable": true, - "type": "number" - }, - "testPeriods": { - "nullable": true, - "type": "number" - }, - "scheduleState": { - "nullable": true, - "type": "string" - }, - "suggestScheduleWeeks": { - "nullable": true - }, - "suggestScheduleWeekInfo": { - "nullable": true, - "type": "string" - }, - "scheduleJsonParams": { - "nullable": true - }, - "selectedStdCount": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "remark": { - "nullable": true, - "type": "string" - }, - "scheduleRemark": { - "nullable": true, - "type": "string" - }, - "courseId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "semesterId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "campusId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "examModeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "openDepartmentId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "teachLanguageId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "roomTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "course": { + "todo": { "type": "object", "properties": { "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "code": { "type": "string" }, - "nameCn": { + "title": { "type": "string" }, - "nameEn": { + "content": { "nullable": true, "type": "string" }, - "categoryId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classTypeId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "classifyId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "educationLevelId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "priority": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] }, - "gradationId": { - "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "completed": { + "type": "boolean" }, - "typeId": { + "dueAt": { "nullable": true, - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "namePrimary": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, - "nameSecondary": { - "nullable": true, - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" } }, "required": [ "id", - "jwId", - "code", - "nameCn", - "nameEn", - "categoryId", - "classTypeId", - "classifyId", - "educationLevelId", - "gradationId", - "typeId", - "namePrimary", - "nameSecondary" + "title", + "content", + "priority", + "completed", + "dueAt", + "createdAt", + "updatedAt" ], "additionalProperties": false - }, - "semester": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/semesterSchema" - } - ] } }, "required": [ - "id", - "jwId", - "code", - "bizTypeId", - "credits", - "period", - "periodsPerWeek", - "timesPerWeek", - "stdCount", - "limitCount", - "graduateAndPostgraduate", - "dateTimePlaceText", - "dateTimePlacePersonText", - "actualPeriods", - "theoryPeriods", - "practicePeriods", - "experimentPeriods", - "machinePeriods", - "designPeriods", - "testPeriods", - "scheduleState", - "suggestScheduleWeeks", - "suggestScheduleWeekInfo", - "scheduleJsonParams", - "selectedStdCount", - "remark", - "scheduleRemark", - "courseId", - "semesterId", - "campusId", - "examModeId", - "openDepartmentId", - "teachLanguageId", - "roomTypeId", - "course", - "semester" + "success", + "todoId", + "completed", + "todo" ], "additionalProperties": false }, - "scheduleGroup": { + { "type": "object", "properties": { - "id": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 - }, - "jwId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "success": { + "type": "boolean", + "enum": [ + false + ] }, - "no": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "todoId": { + "type": "string" }, - "limitCount": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "completed": { + "type": "boolean" }, - "stdCount": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "enum": [ + "not_found", + "forbidden" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "additionalProperties": false + } + }, + "required": [ + "success", + "todoId", + "completed", + "error" + ], + "additionalProperties": false + } + ], + "type": "object" + } + } + }, + "required": [ + "results" + ], + "additionalProperties": false + }, + "todoBatchDeleteRequestSchema": { + "type": "object", + "properties": { + "ids": { + "minItems": 1, + "maxItems": 100, + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + } + }, + "required": [ + "ids" + ], + "additionalProperties": false + }, + "todoBatchDeleteResponseSchema": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + true + ] }, - "actualPeriods": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "id": { + "type": "string" + } + }, + "required": [ + "success", + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "enum": [ + false + ] }, - "isDefault": { - "type": "boolean" + "id": { + "type": "string" }, - "sectionId": { - "type": "integer", - "minimum": -9007199254740991, - "maximum": 9007199254740991 + "error": { + "type": "object", + "properties": { + "code": { + "type": "string", + "enum": [ + "not_found", + "forbidden" + ] + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "additionalProperties": false } }, "required": [ + "success", "id", - "jwId", - "no", - "limitCount", - "stdCount", - "actualPeriods", - "isDefault", - "sectionId" + "error" ], "additionalProperties": false } + ], + "type": "object" + } + } + }, + "required": [ + "results" + ], + "additionalProperties": false + }, + "uploadRenameRequestSchema": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "minLength": 1, + "maxLength": 255 + } + }, + "required": [ + "filename" + ], + "additionalProperties": false + }, + "uploadRenameResponseSchema": { + "type": "object", + "properties": { + "upload": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "size": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "id", + "key", + "filename", + "size", + "createdAt" + ], + "additionalProperties": false + } + }, + "required": [ + "upload" + ], + "additionalProperties": false + }, + "uploadDeleteResponseSchema": { + "type": "object", + "properties": { + "deletedId": { + "type": "string" + }, + "deletedSize": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "deletedId", + "deletedSize" + ], + "additionalProperties": false + }, + "uploadCompleteRequestSchema": { + "type": "object", + "properties": { + "key": { + "type": "string", + "minLength": 1 + }, + "filename": { + "type": "string", + "minLength": 1 + }, + "contentType": { + "type": "string" + } + }, + "required": [ + "key", + "filename" + ], + "additionalProperties": false + }, + "uploadCompleteResponseSchema": { + "type": "object", + "properties": { + "upload": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "key": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "size": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "createdAt": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "id", + "key", + "filename", + "size", + "createdAt" + ], + "additionalProperties": false + }, + "usedBytes": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "quotaBytes": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": [ + "upload", + "usedBytes", + "quotaBytes" + ], + "additionalProperties": false + }, + "commentReactionRequestSchema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "upvote", + "downvote", + "heart", + "laugh", + "hooray", + "confused", + "rocket", + "eyes" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + "homeworkCompletionRequestSchema": { + "type": "object", + "properties": { + "completed": { + "type": "boolean" + } + }, + "required": [ + "completed" + ], + "additionalProperties": false + }, + "homeworkCompletionResponseSchema": { + "type": "object", + "properties": { + "completed": { + "type": "boolean" + }, + "completedAt": { + "nullable": true, + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" + } + }, + "required": [ + "completed", + "completedAt" + ], + "additionalProperties": false + }, + "dashboardLinkPinBatchRequestSchema": { + "type": "object", + "properties": { + "items": { + "minItems": 1, + "maxItems": 10, + "type": "array", + "items": { + "type": "object", + "properties": { + "slug": { + "type": "string", + "minLength": 1 + }, + "action": { + "type": "string", + "enum": [ + "pin", + "unpin" + ] + } }, "required": [ - "id", - "periods", - "date", - "weekday", - "startTime", - "endTime", - "experiment", - "customPlace", - "lessonType", - "weekIndex", - "exerciseClass", - "startUnit", - "endUnit", - "roomId", - "sectionId", - "scheduleGroupId", - "room", - "teachers", - "section", - "scheduleGroup" + "slug", + "action" ], "additionalProperties": false } } }, "required": [ - "schedules" + "items" ], "additionalProperties": false } diff --git a/internal/api/typed_test.go b/internal/api/typed_test.go index cb7b98d..2e7f391 100644 --- a/internal/api/typed_test.go +++ b/internal/api/typed_test.go @@ -69,7 +69,7 @@ func TestAuthTransportRetriesWithFreshBody(t *testing.T) { }), } - req, err := http.NewRequest(http.MethodPost, "https://example.test/api/todos", strings.NewReader(`{"title":"first"}`)) + req, err := http.NewRequest(http.MethodPost, "https://example.test/api/workspace/todos", strings.NewReader(`{"title":"first"}`)) if err != nil { t.Fatal(err) } @@ -93,7 +93,7 @@ func TestReadResponseFormatsJSONErrors(t *testing.T) { Body: io.NopCloser(strings.NewReader(`{"message":"bad input","ignored":true}`)), Request: &http.Request{ Method: http.MethodPost, - URL: &url.URL{Path: "/api/todos"}, + URL: &url.URL{Path: "/api/workspace/todos"}, }, } @@ -101,7 +101,7 @@ func TestReadResponseFormatsJSONErrors(t *testing.T) { if err == nil { t.Fatal("expected error") } - if got, want := err.Error(), "POST /api/todos → 400: bad input"; got != want { + if got, want := err.Error(), "POST /api/workspace/todos → 400: bad input"; got != want { t.Fatalf("error = %q, want %q", got, want) } } diff --git a/internal/cmd/account/account.go b/internal/cmd/account/account.go new file mode 100644 index 0000000..bfed544 --- /dev/null +++ b/internal/cmd/account/account.go @@ -0,0 +1,58 @@ +package account + +import ( + "fmt" + + "github.com/spf13/cobra" + + "github.com/Life-USTC/CLI/internal/api" + "github.com/Life-USTC/CLI/internal/cmd/authcmd" + "github.com/Life-USTC/CLI/internal/cmd/cmdutil" + "github.com/Life-USTC/CLI/internal/cmd/me" + openapi "github.com/Life-USTC/CLI/internal/openapi" + "github.com/Life-USTC/CLI/internal/output" +) + +func NewCmdAccount() *cobra.Command { + cmd := &cobra.Command{ + Use: "account ", + Short: "Manage identity, sessions, and preferences", + Args: cobra.NoArgs, + } + cmd.AddCommand( + me.NewCmdProfile(), + authcmd.NewCmdLogin(), + authcmd.NewCmdLogout(), + authcmd.NewCmdSession(), + authcmd.NewCmdToken(), + newCmdLocale(), + ) + return cmd +} + +func newCmdLocale() *cobra.Command { + return &cobra.Command{ + Use: "locale ", + Short: "Set your preferred locale", + Args: cobra.ExactArgs(1), + ValidArgs: []string{ + "zh-cn", + "en-us", + }, + RunE: func(cmd *cobra.Command, args []string) error { + locale := openapi.LocaleUpdateRequestSchemaLocale(args[0]) + if locale != "zh-cn" && locale != "en-us" { + return fmt.Errorf("locale must be zh-cn or en-us") + } + c, err := api.NewTypedClient(cmdutil.ServerFromCmd(cmd), true) + if err != nil { + return err + } + if _, err := api.ParseResponseRaw(c.SetLocale(api.Ctx(), openapi.LocaleUpdateRequestSchema{Locale: locale})); err != nil { + return err + } + output.Success("Locale updated.") + return nil + }, + } +} diff --git a/internal/cmd/apicmd/api.go b/internal/cmd/apicmd/api.go index f69d930..dea9b97 100644 --- a/internal/cmd/apicmd/api.go +++ b/internal/cmd/apicmd/api.go @@ -39,16 +39,16 @@ This is the escape hatch for endpoints that do not have a first-class command yet. It follows the same design intent as 'gh api': keep the command model clean, but always leave a low-level path open for scripting and exploration.`, Example: ` # Fetch the current semester - life-ustc api semesters/current + life-ustc api catalog/semesters/current # Create a todo with form-like fields - life-ustc api todos -F title='Write report' -F priority=high + life-ustc api workspace/todos -F title='Write report' -F priority=high # Send an exact JSON body from a file life-ustc api -X POST todos --input ./todo.json # Script a response with jq - life-ustc api sections --jq '.data[].code'`, + life-ustc api catalog/sections --jq '.data[].code'`, Args: cobra.ExactArgs(1), ValidArgsFunction: completeAPIPaths, RunE: func(cmd *cobra.Command, args []string) error { @@ -178,7 +178,7 @@ func completeAPIPaths(cmd *cobra.Command, args []string, toComplete string) ([]s } } if len(completions) == 0 { - completions = cobra.AppendActiveHelp(completions, "Use a raw path like '/api/courses' or a shorthand like 'courses'.") + completions = cobra.AppendActiveHelp(completions, "Use a raw path like '/api/catalog/courses' or a shorthand like 'courses'.") } return completions, cobra.ShellCompDirectiveNoFileComp } diff --git a/internal/cmd/apicmd/api_paths_gen.go b/internal/cmd/apicmd/api_paths_gen.go index 33b215e..00928be 100644 --- a/internal/cmd/apicmd/api_paths_gen.go +++ b/internal/cmd/apicmd/api_paths_gen.go @@ -11,6 +11,9 @@ var generatedAPIPaths = []string{ "/.well-known/openid-configuration", "/.well-known/openid-configuration/api/auth", "/.well-known/openid-configuration/api/mcp", + "/api/account", + "/api/account/preferences", + "/api/account/profile", "/api/admin/comments", "/api/admin/comments/{id}", "/api/admin/descriptions", @@ -24,60 +27,57 @@ var generatedAPIPaths = []string{ "/api/auth/.well-known/openid-configuration", "/api/auth/oauth2/device-authorization", "/api/auth/oauth2/token", - "/api/bus", - "/api/bus/next", - "/api/bus/preferences", - "/api/bus/routes", - "/api/calendar-subscriptions", - "/api/calendar-subscriptions/batch", - "/api/calendar-subscriptions/current", - "/api/calendar-subscriptions/import-codes", - "/api/calendar-subscriptions/query", - "/api/comments", - "/api/comments/batch", - "/api/comments/{id}", - "/api/comments/{id}/reactions", - "/api/courses", - "/api/courses/{jwId}", - "/api/dashboard-links/pin", - "/api/dashboard-links/pin/batch", - "/api/dashboard-links/visit", - "/api/descriptions", + "/api/catalog/bus", + "/api/catalog/bus/next", + "/api/catalog/bus/routes", + "/api/catalog/courses", + "/api/catalog/courses/{jwId}", + "/api/catalog/metadata", + "/api/catalog/schedules", + "/api/catalog/sections", + "/api/catalog/sections/calendar.ics", + "/api/catalog/sections/match-codes", + "/api/catalog/sections/{jwId}", + "/api/catalog/sections/{jwId}/calendar.ics", + "/api/catalog/sections/{jwId}/schedule-groups", + "/api/catalog/sections/{jwId}/schedules", + "/api/catalog/semesters", + "/api/catalog/semesters/current", + "/api/catalog/teachers", + "/api/catalog/teachers/{id}", + "/api/community/comments", + "/api/community/comments/batch", + "/api/community/comments/{id}", + "/api/community/comments/{id}/reactions", + "/api/community/descriptions", + "/api/community/homeworks", + "/api/community/homeworks/{id}", + "/api/community/users/{userId}/calendar.ics", "/api/health", - "/api/homeworks", - "/api/homeworks/completions", - "/api/homeworks/{id}", - "/api/homeworks/{id}/completion", - "/api/locale", "/api/mcp", "/api/mcp/.well-known/oauth-authorization-server", "/api/mcp/.well-known/openid-configuration", - "/api/me", - "/api/me/overview", - "/api/me/subscriptions/homeworks", - "/api/me/subscriptions/schedules", - "/api/metadata", "/api/openapi", - "/api/schedules", - "/api/sections", - "/api/sections/calendar.ics", - "/api/sections/match-codes", - "/api/sections/{jwId}", - "/api/sections/{jwId}/calendar.ics", - "/api/sections/{jwId}/schedule-groups", - "/api/sections/{jwId}/schedules", - "/api/semesters", - "/api/semesters/current", - "/api/teachers", - "/api/teachers/{id}", - "/api/todos", - "/api/todos/batch", - "/api/todos/{id}", - "/api/uploads", - "/api/uploads/complete", - "/api/uploads/object", - "/api/uploads/{id}", - "/api/uploads/{id}/download", - "/api/users/profile", - "/api/users/{userId}/calendar.ics", + "/api/workspace/bus-preferences", + "/api/workspace/homeworks", + "/api/workspace/homeworks/completions", + "/api/workspace/homeworks/{id}/completion", + "/api/workspace/links/pin", + "/api/workspace/links/pin/batch", + "/api/workspace/links/visit", + "/api/workspace/overview", + "/api/workspace/schedules", + "/api/workspace/subscriptions", + "/api/workspace/subscriptions/batch", + "/api/workspace/subscriptions/current", + "/api/workspace/subscriptions/import-codes", + "/api/workspace/subscriptions/query", + "/api/workspace/todos", + "/api/workspace/todos/batch", + "/api/workspace/todos/{id}", + "/api/workspace/uploads", + "/api/workspace/uploads/complete", + "/api/workspace/uploads/object", + "/api/workspace/uploads/{id}", + "/api/workspace/uploads/{id}/download", } diff --git a/internal/cmd/apicmd/api_test.go b/internal/cmd/apicmd/api_test.go index 7e495b5..d72b485 100644 --- a/internal/cmd/apicmd/api_test.go +++ b/internal/cmd/apicmd/api_test.go @@ -10,9 +10,9 @@ import ( func TestNormalizeAPIPath(t *testing.T) { cases := map[string]string{ - "metadata": "/api/metadata", - "api/metadata": "/api/metadata", - "/api/metadata": "/api/metadata", + "catalog/metadata": "/api/catalog/metadata", + "api/catalog/metadata": "/api/catalog/metadata", + "/api/catalog/metadata": "/api/catalog/metadata", "/.well-known/openid-configuration": "/.well-known/openid-configuration", // Empty string produces a trailing slash; callers should avoid passing "". "": "/api/", diff --git a/internal/cmd/authcmd/auth.go b/internal/cmd/authcmd/auth.go index b66d8a6..3576f5f 100644 --- a/internal/cmd/authcmd/auth.go +++ b/internal/cmd/authcmd/auth.go @@ -11,31 +11,6 @@ import ( "github.com/Life-USTC/CLI/internal/output" ) -func NewCmdAuth() *cobra.Command { - cmd := &cobra.Command{ - Use: "auth [command]", - Short: "Authenticate with a Life@USTC server", - Long: "Log in, log out, and inspect authentication status for a Life@USTC server.", - Example: ` # Check auth status - life-ustc auth - - # Log in via browser - life-ustc auth login - - # Print the current access token - life-ustc auth token`, - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - return runAuthStatus(cmd) - }, - } - cmd.AddCommand(newCmdLogin()) - cmd.AddCommand(newCmdLogout()) - cmd.AddCommand(newCmdStatus()) - cmd.AddCommand(newCmdToken()) - return cmd -} - func runAuthStatus(cmd *cobra.Command) error { server := cmdutil.ServerFromCmd(cmd) cred, err := config.LoadCredentials(server) @@ -68,7 +43,7 @@ func runAuthStatus(cmd *cobra.Command) error { return nil } -func newCmdLogin() *cobra.Command { +func NewCmdLogin() *cobra.Command { var useDeviceCode bool cmd := &cobra.Command{ @@ -100,7 +75,7 @@ func newCmdLogin() *cobra.Command { return cmd } -func newCmdLogout() *cobra.Command { +func NewCmdLogout() *cobra.Command { return &cobra.Command{ Use: "logout", Short: "Log out and remove stored credentials", @@ -120,9 +95,9 @@ func newCmdLogout() *cobra.Command { } } -func newCmdStatus() *cobra.Command { +func NewCmdSession() *cobra.Command { return &cobra.Command{ - Use: "status", + Use: "session", Short: "Show authentication status", RunE: func(cmd *cobra.Command, args []string) error { return runAuthStatus(cmd) @@ -130,7 +105,7 @@ func newCmdStatus() *cobra.Command { } } -func newCmdToken() *cobra.Command { +func NewCmdToken() *cobra.Command { return &cobra.Command{ Use: "token", Short: "Print the current access token", @@ -141,7 +116,7 @@ func newCmdToken() *cobra.Command { return err } if cred == nil { - return fmt.Errorf("not logged in. Run `life-ustc auth login` first") + return fmt.Errorf("not logged in. Run `life-ustc account login` first") } if config.IsTokenExpired(cred) { newCred, err := auth.RefreshToken(server, cred) diff --git a/internal/cmd/bus/bus.go b/internal/cmd/bus/bus.go index 4fda44f..553e67d 100644 --- a/internal/cmd/bus/bus.go +++ b/internal/cmd/bus/bus.go @@ -26,27 +26,38 @@ func NewCmdBus() *cobra.Command { cmd := &cobra.Command{ Use: "bus [command]", Short: "Shuttle bus schedules", - Long: "Query shuttle bus schedules between campuses, and manage your bus preferences.", + Long: "Query public shuttle bus schedules between campuses.", Example: ` # Query upcoming buses - life-ustc bus + life-ustc catalog bus # Filter by route - life-ustc bus query --from 1 --to 2 + life-ustc catalog bus timetable --from 1 --to 2 # Show departed trips too - life-ustc bus --show-departed - - # Show saved preferences - life-ustc bus preferences`, + life-ustc catalog bus --show-departed`, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runBusQuery(cmd, origin, destination, dayType, now, showDeparted, includeAll, limit) }, } addBusQueryFlags(cmd, &origin, &destination, &dayType, &now, &showDeparted, &includeAll, &limit) - cmd.AddCommand(newCmdQuery()) - cmd.AddCommand(newCmdPreferences()) - cmd.AddCommand(newCmdSetPreferences()) + timetable := newCmdQuery() + timetable.Use = "timetable" + cmd.AddCommand(timetable) + return cmd +} + +func NewCmdBusPreferences() *cobra.Command { + cmd := &cobra.Command{ + Use: "bus-preferences [command]", + Short: "Manage your shuttle bus preferences", + Args: cobra.NoArgs, + } + get := newCmdPreferences() + get.Use = "get" + set := newCmdSetPreferences() + set.Use = "set" + cmd.AddCommand(get, set) return cmd } @@ -112,13 +123,13 @@ func newCmdQuery() *cobra.Command { Aliases: []string{"q"}, Short: "Query shuttle bus schedules", Example: ` # Show all upcoming buses - life-ustc bus query + life-ustc catalog bus timetable # Filter by origin and destination campus ID - life-ustc bus query --from 1 --to 2 + life-ustc catalog bus timetable --from 1 --to 2 # Show departed trips - life-ustc bus query --show-departed`, + life-ustc catalog bus timetable --show-departed`, RunE: func(cmd *cobra.Command, args []string) error { return runBusQuery(cmd, origin, destination, dayType, now, showDeparted, includeAll, limit) }, @@ -450,13 +461,13 @@ func newCmdSetPreferences() *cobra.Command { Use: "set-preferences", Short: "Update bus preferences", Example: ` # Set preferred origin and destination - life-ustc bus set-preferences --origin 1 --destination 2 + life-ustc workspace bus-preferences set --origin 1 --destination 2 # Enable showing departed trips - life-ustc bus set-preferences --show-departed + life-ustc workspace bus-preferences set --show-departed # Set from raw JSON - life-ustc bus set-preferences --raw-json '{"showDepartedTrips":true}'`, + life-ustc workspace bus-preferences set --raw-json '{"showDepartedTrips":true}'`, RunE: func(cmd *cobra.Command, args []string) error { c, err := api.NewTypedClient(cmdutil.ServerFromCmd(cmd), true) if err != nil { diff --git a/internal/cmd/calendar/calendar.go b/internal/cmd/calendar/calendar.go index ee2f673..6fb0798 100644 --- a/internal/cmd/calendar/calendar.go +++ b/internal/cmd/calendar/calendar.go @@ -13,21 +13,43 @@ import ( "github.com/Life-USTC/CLI/internal/output" ) -func NewCmdCalendar() *cobra.Command { +func NewCmdSubscription() *cobra.Command { cmd := &cobra.Command{ - Use: "calendar [command]", - Short: "Manage calendar subscriptions", + Use: "subscription [command]", + Short: "Manage section subscriptions", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runCalendarGet(cmd) }, } - cmd.AddCommand(newCmdGet()) - cmd.AddCommand(newCmdQuery()) + list := newCmdGet() + list.Use = "list" + preview := newCmdQuery() + preview.Use = "preview ..." + importCmd := newCmdImportCodes() + importCmd.Use = "import ..." + cmd.AddCommand(list) + cmd.AddCommand(preview) cmd.AddCommand(newCmdAdd()) cmd.AddCommand(newCmdRemove()) cmd.AddCommand(newCmdSet()) - cmd.AddCommand(newCmdImportCodes()) + cmd.AddCommand(importCmd) + return cmd +} + +func NewCmdCalendar() *cobra.Command { + cmd := &cobra.Command{ + Use: "calendar [command]", + Short: "View calendar exports", + Args: cobra.NoArgs, + } + feed := newCmdGet() + feed.Use = "feed" + feed.Short = "Show your iCal feed" + export := newCmdGet() + export.Use = "export" + export.Short = "Export your iCal feed URL" + cmd.AddCommand(feed, export) return cmd } diff --git a/internal/cmd/catalog/catalog.go b/internal/cmd/catalog/catalog.go new file mode 100644 index 0000000..4fb69eb --- /dev/null +++ b/internal/cmd/catalog/catalog.go @@ -0,0 +1,31 @@ +package catalog + +import ( + "github.com/spf13/cobra" + + "github.com/Life-USTC/CLI/internal/cmd/bus" + "github.com/Life-USTC/CLI/internal/cmd/course" + "github.com/Life-USTC/CLI/internal/cmd/metadata" + "github.com/Life-USTC/CLI/internal/cmd/schedule" + "github.com/Life-USTC/CLI/internal/cmd/section" + "github.com/Life-USTC/CLI/internal/cmd/semester" + "github.com/Life-USTC/CLI/internal/cmd/teacher" +) + +func NewCmdCatalog() *cobra.Command { + cmd := &cobra.Command{ + Use: "catalog ", + Short: "Browse public campus data", + Args: cobra.NoArgs, + } + cmd.AddCommand( + metadata.NewCmdMetadata(), + semester.NewCmdSemester(), + course.NewCmdCourse(), + section.NewCmdSection(), + teacher.NewCmdTeacher(), + schedule.NewCmdSchedule(), + bus.NewCmdBus(), + ) + return cmd +} diff --git a/internal/cmd/cmdutil/helpers.go b/internal/cmd/cmdutil/helpers.go index 582dcc7..e661349 100644 --- a/internal/cmd/cmdutil/helpers.go +++ b/internal/cmd/cmdutil/helpers.go @@ -158,14 +158,6 @@ func AddListFlags(cmd *cobra.Command, page, limit *int) { cmd.Flags().IntVarP(page, "page", "p", 0, "Page number for paginated results") } -// DoneVerb returns the appropriate verb for completed/uncompleted toggles. -func DoneVerb(undo bool) string { - if undo { - return "reopen" - } - return "complete" -} - // IsInteractive reports whether stdin and stdout are both terminals. func IsInteractive() bool { return term.IsTerminal(int(os.Stdin.Fd())) && term.IsTerminal(int(os.Stdout.Fd())) diff --git a/internal/cmd/comment/comment.go b/internal/cmd/comment/comment.go index 6ec6edd..30ba232 100644 --- a/internal/cmd/comment/comment.go +++ b/internal/cmd/comment/comment.go @@ -249,7 +249,7 @@ func newCmdList() *cobra.Command { func newCmdView() *cobra.Command { return &cobra.Command{ - Use: "view ", + Use: "get ", Aliases: []string{"show"}, Short: "View a comment thread", Args: cobra.ExactArgs(1), diff --git a/internal/cmd/community/community.go b/internal/cmd/community/community.go new file mode 100644 index 0000000..b532dfd --- /dev/null +++ b/internal/cmd/community/community.go @@ -0,0 +1,25 @@ +package community + +import ( + "github.com/spf13/cobra" + + "github.com/Life-USTC/CLI/internal/cmd/comment" + "github.com/Life-USTC/CLI/internal/cmd/description" + "github.com/Life-USTC/CLI/internal/cmd/homework" +) + +func NewCmdCommunity() *cobra.Command { + cmd := &cobra.Command{ + Use: "community ", + Short: "Manage shared campus content", + Args: cobra.NoArgs, + } + sectionHomework := homework.NewCmdSectionHomework() + sectionHomework.Use = "section-homework " + cmd.AddCommand( + comment.NewCmdComment(), + description.NewCmdDescription(), + sectionHomework, + ) + return cmd +} diff --git a/internal/cmd/course/course.go b/internal/cmd/course/course.go index c21ea38..9d0542f 100644 --- a/internal/cmd/course/course.go +++ b/internal/cmd/course/course.go @@ -7,8 +7,6 @@ import ( "github.com/Life-USTC/CLI/internal/api" "github.com/Life-USTC/CLI/internal/cmd/cmdutil" - "github.com/Life-USTC/CLI/internal/cmd/comment" - "github.com/Life-USTC/CLI/internal/cmd/description" openapi "github.com/Life-USTC/CLI/internal/openapi" "github.com/Life-USTC/CLI/internal/output" "github.com/Life-USTC/CLI/internal/tui" @@ -21,16 +19,16 @@ func NewCmdCourse() *cobra.Command { Short: "Browse courses", Long: "List and view courses offered at USTC.", Example: ` # List all courses - life-ustc course + life-ustc catalog course # Search courses by keyword - life-ustc course -s "linear algebra" + life-ustc catalog course -s "linear algebra" # Open course search TUI in an interactive terminal - life-ustc course + life-ustc catalog course # View a specific course - life-ustc course view `, + life-ustc catalog course get `, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runCourseList(cmd, opts) @@ -39,8 +37,6 @@ func NewCmdCourse() *cobra.Command { addCourseListFlags(cmd, &opts) cmd.AddCommand(newCmdList()) cmd.AddCommand(newCmdView()) - cmd.AddCommand(comment.NewCmdCommentFor("course")) - cmd.AddCommand(description.NewCmdDescriptionFor("course")) return cmd } @@ -159,7 +155,7 @@ func newCmdList() *cobra.Command { func newCmdView() *cobra.Command { return &cobra.Command{ - Use: "view ", + Use: "get ", Aliases: []string{"show"}, Short: "View course details", Args: cobra.ExactArgs(1), diff --git a/internal/cmd/homework/homework.go b/internal/cmd/homework/homework.go index 87bfad6..9724ccc 100644 --- a/internal/cmd/homework/homework.go +++ b/internal/cmd/homework/homework.go @@ -23,14 +23,14 @@ func NewCmdSectionHomework() *cobra.Command { Short: "Manage section homeworks", Long: "List, create, update, and delete homeworks for a course section.", Example: ` # List homeworks for a section - life-ustc section homework list + life-ustc community section-homework list # Create a homework - life-ustc section homework create --title "Problem Set 1" + life-ustc community section-homework create --title "Problem Set 1" # Delete a homework (omit ID to pick interactively) - life-ustc section homework delete - life-ustc section homework delete `, + life-ustc community section-homework delete + life-ustc community section-homework delete `, } cmd.AddCommand(newCmdSectionList()) cmd.AddCommand(newCmdSectionCreate()) @@ -301,20 +301,17 @@ func NewCmdMyHomework() *cobra.Command { Short: "View and manage your homeworks", Long: "List your assigned homeworks and mark them as complete.\nWhen no --section-id is given, aggregates homework from all your subscribed sections.", Example: ` # List all your homeworks (from subscribed sections) - life-ustc homework + life-ustc workspace homework # Show only pending homeworks - life-ustc homework --pending + life-ustc workspace homework --pending # Filter to a specific section - life-ustc homework list --section-id - - # Add homework to a section - life-ustc homework create --title "Problem Set 1" + life-ustc workspace homework list --section-id # Mark a homework as done (omit ID to pick interactively) - life-ustc homework done - life-ustc homework done `, + life-ustc workspace homework complete + life-ustc workspace homework complete `, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runMyHomeworkList(cmd, opts) @@ -322,8 +319,8 @@ func NewCmdMyHomework() *cobra.Command { } addMyHomeworkListFlags(cmd, &opts) cmd.AddCommand(newCmdMyList()) - cmd.AddCommand(newCmdSectionCreate()) - cmd.AddCommand(newCmdComplete()) + cmd.AddCommand(newCmdCompletion(true)) + cmd.AddCommand(newCmdCompletion(false)) return cmd } @@ -333,10 +330,10 @@ func newCmdMyList() *cobra.Command { Use: "list", Aliases: []string{"ls"}, Short: "List your homeworks", - Example: ` life-ustc homework list - life-ustc homework list --section-id - life-ustc homework list --pending - life-ustc homework list --before 2025-06-01`, + Example: ` life-ustc workspace homework list + life-ustc workspace homework list --section-id + life-ustc workspace homework list --pending + life-ustc workspace homework list --before 2025-06-01`, RunE: func(cmd *cobra.Command, args []string) error { return runMyHomeworkList(cmd, opts) }, @@ -366,7 +363,7 @@ func runMyHomeworkList(cmd *cobra.Command, opts myHomeworkListOpts) error { var data any if opts.sectionID != "" { - // Single section — use /api/homeworks with sectionId filter + // Single section — use /api/community/homeworks with sectionId filter sectionID, err := cmdutil.Int64PtrIfSet(opts.sectionID) if err != nil { return err @@ -742,14 +739,18 @@ func newCmdDelete() *cobra.Command { return cmd } -func newCmdComplete() *cobra.Command { - var undo bool +func newCmdCompletion(completed bool) *cobra.Command { + action := "complete" + short := "Mark homework(s) as complete" + if !completed { + action = "reopen" + short = "Mark homework(s) as incomplete" + } cmd := &cobra.Command{ - Use: "done [homework-id]...", - Aliases: []string{"complete", "finish"}, - Short: "Mark homework(s) as complete", - Long: "Mark one or more homeworks as complete. When run interactively without IDs, shows matching homeworks and lets you pick one.", - Args: cobra.ArbitraryArgs, + Use: action + " [homework-id]...", + Short: short, + Long: short + ". When run interactively without IDs, shows matching homeworks and lets you pick one.", + Args: cobra.ArbitraryArgs, RunE: func(cmd *cobra.Command, args []string) error { var ids []string var rows []map[string]any @@ -763,12 +764,12 @@ func newCmdComplete() *cobra.Command { return fmt.Errorf("homework id is required in non-interactive mode") } opts := myHomeworkListOpts{limit: 20} - if undo { + if !completed { opts.done = true } else { opts.pending = true } - picked, err := promptHomeworkPick(cmd, opts, "Pick a homework to "+cmdutil.DoneVerb(undo)) + picked, err := promptHomeworkPick(cmd, opts, "Pick a homework to "+action) if err != nil { return err } @@ -779,10 +780,9 @@ func newCmdComplete() *cobra.Command { ids = []string{id} rows = []map[string]any{picked} } - return setHomeworksCompleted(cmd, ids, rows, !undo) + return setHomeworksCompleted(cmd, ids, rows, completed) }, } - cmd.Flags().BoolVar(&undo, "undo", false, "Mark as not completed") return cmd } diff --git a/internal/cmd/me/me.go b/internal/cmd/me/me.go index 2c12ce6..7f1ce83 100644 --- a/internal/cmd/me/me.go +++ b/internal/cmd/me/me.go @@ -8,17 +8,17 @@ import ( "github.com/Life-USTC/CLI/internal/output" ) -func NewCmdMe() *cobra.Command { +func NewCmdProfile() *cobra.Command { cmd := &cobra.Command{ - Use: "me", + Use: "profile", Short: "Show your profile", Long: "Show the account currently authenticated with the active Life@USTC server.", Example: ` # Show your profile - life-ustc me + life-ustc account profile # Use the dedicated personal commands - life-ustc todo --pending - life-ustc homework --pending`, + life-ustc workspace todo --pending + life-ustc workspace homework --pending`, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { c, err := api.NewTypedClient(cmdutil.ServerFromCmd(cmd), true) diff --git a/internal/cmd/metadata/metadata.go b/internal/cmd/metadata/metadata.go index d1552c0..0e63693 100644 --- a/internal/cmd/metadata/metadata.go +++ b/internal/cmd/metadata/metadata.go @@ -39,10 +39,10 @@ class types, gradations, course types, exam modes, teaching languages, and course classifies. These values are used as filters and identifiers in other commands.`, Example: ` # Show all metadata tables - life-ustc metadata + life-ustc catalog metadata # Output as JSON for scripting - life-ustc metadata --json`, + life-ustc catalog metadata --json`, RunE: func(cmd *cobra.Command, args []string) error { c, err := api.NewTypedClient(cmdutil.ServerFromCmd(cmd), false) if err != nil { diff --git a/internal/cmd/root/completions.go b/internal/cmd/root/completions.go index 9c89332..dac8b4a 100644 --- a/internal/cmd/root/completions.go +++ b/internal/cmd/root/completions.go @@ -42,16 +42,16 @@ func registerCompletionMetadata(root *cobra.Command) { return filterCompletions(candidates, toComplete, ""), cobra.ShellCompDirectiveNoFileComp }) - registerFlagCompletion(root, []string{"todo"}, "priority", []string{ + registerFlagCompletion(root, []string{"workspace", "todo"}, "priority", []string{ "low\tLow priority", "medium\tMedium priority", "high\tHigh priority", }) - registerFlagCompletion(root, []string{"comment", "list"}, "target-type", commentTargetTypeCompletions) - registerFlagCompletion(root, []string{"comment", "create"}, "target-type", commentTargetTypeCompletions) - registerFlagCompletion(root, []string{"description", "get"}, "target-type", descriptionTargetTypeCompletions) - registerFlagCompletion(root, []string{"description", "set"}, "target-type", descriptionTargetTypeCompletions) + registerFlagCompletion(root, []string{"community", "comment", "list"}, "target-type", commentTargetTypeCompletions) + registerFlagCompletion(root, []string{"community", "comment", "create"}, "target-type", commentTargetTypeCompletions) + registerFlagCompletion(root, []string{"community", "description", "get"}, "target-type", descriptionTargetTypeCompletions) + registerFlagCompletion(root, []string{"community", "description", "set"}, "target-type", descriptionTargetTypeCompletions) registerFlagCompletion(root, []string{"api"}, "method", []string{ "GET\tFetch a resource", "POST\tCreate or invoke an action", @@ -60,7 +60,7 @@ func registerCompletionMetadata(root *cobra.Command) { "DELETE\tDelete a resource", }) _ = markFlagFilename(root, []string{"api"}, "input") - _ = markFlagFilename(root, []string{"upload", "download"}, "output") + _ = markFlagFilename(root, []string{"workspace", "upload", "download"}, "output") } func registerFlagCompletion(root *cobra.Command, path []string, flag string, completions []string) { diff --git a/internal/cmd/root/root.go b/internal/cmd/root/root.go index 441fac0..7861adf 100644 --- a/internal/cmd/root/root.go +++ b/internal/cmd/root/root.go @@ -7,26 +7,14 @@ import ( "github.com/fatih/color" "github.com/spf13/cobra" + "github.com/Life-USTC/CLI/internal/cmd/account" "github.com/Life-USTC/CLI/internal/cmd/admin" "github.com/Life-USTC/CLI/internal/cmd/apicmd" - "github.com/Life-USTC/CLI/internal/cmd/authcmd" - "github.com/Life-USTC/CLI/internal/cmd/bus" - "github.com/Life-USTC/CLI/internal/cmd/calendar" + "github.com/Life-USTC/CLI/internal/cmd/catalog" "github.com/Life-USTC/CLI/internal/cmd/cmdutil" - "github.com/Life-USTC/CLI/internal/cmd/comment" + "github.com/Life-USTC/CLI/internal/cmd/community" "github.com/Life-USTC/CLI/internal/cmd/configcmd" - "github.com/Life-USTC/CLI/internal/cmd/course" - "github.com/Life-USTC/CLI/internal/cmd/description" - "github.com/Life-USTC/CLI/internal/cmd/homework" - "github.com/Life-USTC/CLI/internal/cmd/me" - "github.com/Life-USTC/CLI/internal/cmd/metadata" - "github.com/Life-USTC/CLI/internal/cmd/schedule" - schoolcmd "github.com/Life-USTC/CLI/internal/cmd/school" - "github.com/Life-USTC/CLI/internal/cmd/section" - "github.com/Life-USTC/CLI/internal/cmd/semester" - "github.com/Life-USTC/CLI/internal/cmd/teacher" - "github.com/Life-USTC/CLI/internal/cmd/todo" - "github.com/Life-USTC/CLI/internal/cmd/upload" + "github.com/Life-USTC/CLI/internal/cmd/workspace" "github.com/Life-USTC/CLI/internal/output" ) @@ -34,13 +22,8 @@ var version = "dev" // Command group IDs const ( - groupStart = "start" - groupPersonal = "personal" - groupBrowse = "browse" - groupCommunity = "community" - groupRef = "reference" - groupAdmin = "admin" - groupPlumbing = "plumbing" + groupMain = "main" + groupPlumbing = "plumbing" ) func grouped(groupID string, cmd *cobra.Command) *cobra.Command { @@ -65,23 +48,23 @@ func NewCmdRoot() *cobra.Command { Short: "Life@USTC in your terminal", Long: `Work seamlessly with the USTC campus platform from the command line. -Browse courses, sections, and teachers. Manage your todos, homework, -calendar, uploads, comments, and descriptions. Use --json or --jq for -scripting, or drop down to 'life-ustc api' for raw endpoint access.`, +Browse the catalog and manage your workspace, community content, and account. +Use --json or --jq for scripting, or drop down to 'life-ustc api' for raw +endpoint access.`, Example: ` # Show your profile - life-ustc me + life-ustc account profile # Check your pending todos - life-ustc todo --pending + life-ustc workspace todo --pending # Browse sections and filter with jq - life-ustc section list --limit 5 --jq '.data[].code' + life-ustc catalog section list --limit 5 --jq '.data[].code' # View a course and its sections - life-ustc course view + life-ustc catalog course get # Call a raw API endpoint - life-ustc api semesters/current --jq '.currentSemester.id' + life-ustc api catalog/semesters/current --jq '.currentSemester.id' # Install shell completion into your current shell life-ustc completion install`, @@ -118,37 +101,16 @@ scripting, or drop down to 'life-ustc api' for raw endpoint access.`, // Command groups cmd.AddGroup( - &cobra.Group{ID: groupStart, Title: "Start here:"}, - &cobra.Group{ID: groupPersonal, Title: "Personal:"}, - &cobra.Group{ID: groupBrowse, Title: "Browse:"}, - &cobra.Group{ID: groupCommunity, Title: "Community:"}, - &cobra.Group{ID: groupRef, Title: "Reference:"}, - &cobra.Group{ID: groupAdmin, Title: "Administration:"}, + &cobra.Group{ID: groupMain, Title: "Domains:"}, &cobra.Group{ID: groupPlumbing, Title: "Setup and automation:"}, ) cmd.AddCommand( - grouped(groupStart, authcmd.NewCmdAuth()), - grouped(groupStart, me.NewCmdMe()), - - grouped(groupPersonal, todo.NewCmdTodo()), - grouped(groupPersonal, homework.NewCmdMyHomework()), - grouped(groupPersonal, calendar.NewCmdCalendar()), - grouped(groupPersonal, upload.NewCmdUpload()), - - grouped(groupBrowse, course.NewCmdCourse()), - grouped(groupBrowse, section.NewCmdSection()), - grouped(groupBrowse, teacher.NewCmdTeacher()), - grouped(groupBrowse, semester.NewCmdSemester()), - grouped(groupBrowse, schedule.NewCmdSchedule()), - grouped(groupBrowse, bus.NewCmdBus()), - grouped(groupBrowse, schoolcmd.NewCmdSchool()), - - grouped(groupCommunity, comment.NewCmdComment()), - grouped(groupCommunity, description.NewCmdDescription()), - - grouped(groupRef, metadata.NewCmdMetadata()), - grouped(groupAdmin, admin.NewCmdAdmin()), + grouped(groupMain, catalog.NewCmdCatalog()), + grouped(groupMain, workspace.NewCmdWorkspace()), + grouped(groupMain, community.NewCmdCommunity()), + grouped(groupMain, account.NewCmdAccount()), + grouped(groupMain, admin.NewCmdAdmin()), grouped(groupPlumbing, configcmd.NewCmdConfig()), grouped(groupPlumbing, newCmdCompletion()), diff --git a/internal/cmd/root/root_test.go b/internal/cmd/root/root_test.go index 6f10ac1..5938e05 100644 --- a/internal/cmd/root/root_test.go +++ b/internal/cmd/root/root_test.go @@ -8,31 +8,69 @@ import ( "github.com/spf13/cobra" ) -func TestPersonalCommandsAreTopLevel(t *testing.T) { +func TestCommandsUseUnifiedDomainHierarchy(t *testing.T) { cmd := NewCmdRoot() - todo := findCommand(cmd, "todo") + todo := findCommand(cmd, "workspace", "todo") if todo == nil { - t.Fatal("top-level todo command missing") + t.Fatal("workspace todo command missing") } - if findCommand(todo, "done") == nil { - t.Fatal("todo done command missing") + if findCommand(todo, "complete") == nil { + t.Fatal("todo complete command missing") } - homework := findCommand(cmd, "homework") + if findCommand(todo, "reopen") == nil { + t.Fatal("todo reopen command missing") + } + homework := findCommand(cmd, "workspace", "homework") if homework == nil { - t.Fatal("top-level homework command missing") + t.Fatal("workspace homework command missing") + } + if findCommand(homework, "complete") == nil { + t.Fatal("homework complete command missing") + } + if findCommand(homework, "reopen") == nil { + t.Fatal("homework reopen command missing") + } + for _, stale := range []string{"me", "auth", "todo", "homework", "calendar", "upload", "course", "section", "bus", "comment"} { + if findCommand(cmd, stale) != nil { + t.Fatalf("stale top-level %q command still registered", stale) + } } - if findCommand(homework, "create") == nil { - t.Fatal("top-level homework create command missing") +} + +func TestUnifiedDomainContents(t *testing.T) { + cmd := NewCmdRoot() + expected := map[string][]string{ + "catalog": { + "metadata", "semester", "course", "section", "teacher", "schedule", "bus", + }, + "workspace": { + "overview", "calendar", "schedule", "exam", "todo", "homework", + "subscription", "bus-preferences", "upload", "school", + }, + "community": { + "comment", "description", "section-homework", + }, + "account": { + "profile", "login", "logout", "session", "token", "locale", + }, + } + for scope, children := range expected { + for _, child := range children { + if findCommand(cmd, scope, child) == nil { + t.Errorf("expected %s %s command is missing", scope, child) + } + } } - if findCommand(homework, "done") == nil { - t.Fatal("homework done command missing") + + if findCommand(cmd, "catalog", "bus", "preferences") != nil { + t.Error("personal bus preferences leaked into catalog") } - if findCommand(cmd, "me", "todo") != nil { - t.Fatal("stale me todo command still registered") + if findCommand(cmd, "workspace", "homework", "create") != nil { + t.Error("shared homework creation leaked into workspace") } - if findCommand(cmd, "me", "homework") != nil { - t.Fatal("stale me homework command still registered") + if findCommand(cmd, "workspace", "calendar", "set") != nil { + t.Error("section subscriptions leaked into calendar") } } @@ -86,13 +124,7 @@ func TestBashCompletionIncludesDescriptionPatch(t *testing.T) { func TestAllExpectedCommandsPresent(t *testing.T) { cmd := NewCmdRoot() for _, name := range []string{ - "auth", "me", - "todo", "homework", "calendar", "upload", - "course", "section", "teacher", "semester", "schedule", "bus", - "school", - "comment", "description", - "metadata", - "admin", + "catalog", "workspace", "community", "account", "admin", "config", "completion", "api", } { if findCommand(cmd, name) == nil { @@ -105,26 +137,14 @@ func TestAllExpectedCommandsPresent(t *testing.T) { func TestCommandGroupAssignments(t *testing.T) { cmd := NewCmdRoot() checks := map[string]string{ - "auth": groupStart, - "me": groupStart, - "todo": groupPersonal, - "homework": groupPersonal, - "calendar": groupPersonal, - "upload": groupPersonal, - "course": groupBrowse, - "section": groupBrowse, - "teacher": groupBrowse, - "semester": groupBrowse, - "schedule": groupBrowse, - "bus": groupBrowse, - "school": groupBrowse, - "comment": groupCommunity, - "description": groupCommunity, - "metadata": groupRef, - "admin": groupAdmin, - "config": groupPlumbing, - "completion": groupPlumbing, - "api": groupPlumbing, + "catalog": groupMain, + "workspace": groupMain, + "community": groupMain, + "account": groupMain, + "admin": groupMain, + "config": groupPlumbing, + "completion": groupPlumbing, + "api": groupPlumbing, } for name, wantGroup := range checks { child := findCommand(cmd, name) diff --git a/internal/cmd/schedule/schedule.go b/internal/cmd/schedule/schedule.go index fa9632a..bdfd54d 100644 --- a/internal/cmd/schedule/schedule.go +++ b/internal/cmd/schedule/schedule.go @@ -26,10 +26,10 @@ func NewCmdSchedule() *cobra.Command { Short: "Browse schedules", Long: "List class schedules with optional filters for section, teacher, date range, and weekday.", Example: ` # List all schedules - life-ustc schedule + life-ustc catalog schedule # Filter by weekday - life-ustc schedule list --weekday 3`, + life-ustc catalog schedule list --weekday 3`, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runScheduleList(cmd, opts) @@ -40,6 +40,48 @@ func NewCmdSchedule() *cobra.Command { return cmd } +func NewCmdWorkspaceSchedule() *cobra.Command { + var dateFrom, dateTo string + var weekday, limit int + cmd := &cobra.Command{ + Use: "schedule", + Short: "List schedules from your subscribed sections", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + c, err := api.NewTypedClient(cmdutil.ServerFromCmd(cmd), true) + if err != nil { + return err + } + params := &openapi.GetApiMeSubscriptionsSchedulesParams{ + DateFrom: cmdutil.StringPtrIfSet(dateFrom), + DateTo: cmdutil.StringPtrIfSet(dateTo), + Weekday: cmdutil.Int64PtrIfPositive(weekday), + Limit: cmdutil.Int64PtrIfPositive(limit), + } + data, err := api.ParseResponseRaw(c.GetApiMeSubscriptionsSchedules(api.Ctx(), params)) + if err != nil { + return err + } + list := cmdutil.NewListResult(data, "schedules").FinalizeServerSide(limit) + for _, row := range list.Rows { + normalizeScheduleListRow(row) + } + return output.OutputList(list.Raw, list.Rows, []output.Column{ + {Header: "Course", Key: "section.course.namePrimary"}, + {Header: "Section", Key: "section.code"}, + {Header: "Day", Key: "weekday"}, + {Header: "Time", Key: "timeRange"}, + {Header: "Place", Key: "customPlace"}, + }, list.Total, list.Page) + }, + } + cmd.Flags().StringVar(&dateFrom, "date-from", "", "Start date") + cmd.Flags().StringVar(&dateTo, "date-to", "", "End date") + cmd.Flags().IntVar(&weekday, "weekday", 0, "Weekday (1=Mon, 7=Sun)") + cmd.Flags().IntVar(&limit, "limit", 0, "Maximum schedules to return") + return cmd +} + func addScheduleListFlags(cmd *cobra.Command, opts *scheduleListOpts) { cmd.Flags().StringVar(&opts.sectionID, "section-id", "", "Section ID") cmd.Flags().StringVar(&opts.teacherID, "teacher-id", "", "Teacher ID") diff --git a/internal/cmd/section/section.go b/internal/cmd/section/section.go index c98bb2f..737460a 100644 --- a/internal/cmd/section/section.go +++ b/internal/cmd/section/section.go @@ -9,9 +9,6 @@ import ( "github.com/Life-USTC/CLI/internal/api" "github.com/Life-USTC/CLI/internal/cmd/cmdutil" - "github.com/Life-USTC/CLI/internal/cmd/comment" - "github.com/Life-USTC/CLI/internal/cmd/description" - "github.com/Life-USTC/CLI/internal/cmd/homework" openapi "github.com/Life-USTC/CLI/internal/openapi" "github.com/Life-USTC/CLI/internal/output" "github.com/Life-USTC/CLI/internal/tui" @@ -36,16 +33,16 @@ func NewCmdSection() *cobra.Command { Short: "Browse class sections", Long: "List, view, and manage class sections including schedules and calendars.", Example: ` # List all sections - life-ustc section + life-ustc catalog section # Search sections by keyword - life-ustc section -s "calculus" + life-ustc catalog section -s "calculus" # Open section search TUI in an interactive terminal - life-ustc section + life-ustc catalog section # View a specific section - life-ustc section view `, + life-ustc catalog section get `, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runSectionList(cmd, opts) @@ -57,9 +54,6 @@ func NewCmdSection() *cobra.Command { cmd.AddCommand(newCmdSchedules()) cmd.AddCommand(newCmdCalendar()) cmd.AddCommand(newCmdMatchCodes()) - cmd.AddCommand(homework.NewCmdSectionHomework()) - cmd.AddCommand(comment.NewCmdCommentFor("section")) - cmd.AddCommand(description.NewCmdDescriptionFor("section")) return cmd } @@ -192,7 +186,7 @@ func newCmdList() *cobra.Command { func newCmdView() *cobra.Command { return &cobra.Command{ - Use: "view ", + Use: "get ", Aliases: []string{"show"}, Short: "View section details", Args: cobra.ExactArgs(1), @@ -332,7 +326,7 @@ func newCmdCalendar() *cobra.Command { func newCmdMatchCodes() *cobra.Command { var semesterID string cmd := &cobra.Command{ - Use: "match-codes ...", + Use: "match ...", Short: "Match section codes", Args: cobra.MinimumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { diff --git a/internal/cmd/semester/semester.go b/internal/cmd/semester/semester.go index 8ad63f2..930a676 100644 --- a/internal/cmd/semester/semester.go +++ b/internal/cmd/semester/semester.go @@ -30,10 +30,10 @@ func NewCmdSemester() *cobra.Command { Short: "Browse semesters", Long: "List and inspect academic semesters.", Example: ` # List all semesters - life-ustc semester + life-ustc catalog semester # Show the current semester - life-ustc semester current`, + life-ustc catalog semester current`, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runSemesterList(cmd, opts) diff --git a/internal/cmd/teacher/teacher.go b/internal/cmd/teacher/teacher.go index 764b844..a090ef2 100644 --- a/internal/cmd/teacher/teacher.go +++ b/internal/cmd/teacher/teacher.go @@ -8,8 +8,6 @@ import ( "github.com/Life-USTC/CLI/internal/api" "github.com/Life-USTC/CLI/internal/cmd/cmdutil" - "github.com/Life-USTC/CLI/internal/cmd/comment" - "github.com/Life-USTC/CLI/internal/cmd/description" openapi "github.com/Life-USTC/CLI/internal/openapi" "github.com/Life-USTC/CLI/internal/output" "github.com/Life-USTC/CLI/internal/tui" @@ -22,16 +20,16 @@ func NewCmdTeacher() *cobra.Command { Short: "Browse teachers", Long: "List and view teacher profiles and their associated sections.", Example: ` # List all teachers - life-ustc teacher + life-ustc catalog teacher # Search teachers by name - life-ustc teacher -s "zhang" + life-ustc catalog teacher -s "zhang" # Open teacher search TUI in an interactive terminal - life-ustc teacher + life-ustc catalog teacher # View a specific teacher - life-ustc teacher view `, + life-ustc catalog teacher get `, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runTeacherList(cmd, opts) @@ -40,8 +38,6 @@ func NewCmdTeacher() *cobra.Command { addTeacherListFlags(cmd, &opts) cmd.AddCommand(newCmdList()) cmd.AddCommand(newCmdView()) - cmd.AddCommand(comment.NewCmdCommentFor("teacher")) - cmd.AddCommand(description.NewCmdDescriptionFor("teacher")) return cmd } @@ -150,7 +146,7 @@ func newCmdList() *cobra.Command { func newCmdView() *cobra.Command { return &cobra.Command{ - Use: "view ", + Use: "get ", Aliases: []string{"show"}, Short: "View teacher details", Args: cobra.ExactArgs(1), diff --git a/internal/cmd/todo/todo.go b/internal/cmd/todo/todo.go index e64a44c..e70f29d 100644 --- a/internal/cmd/todo/todo.go +++ b/internal/cmd/todo/todo.go @@ -23,21 +23,21 @@ func NewCmdTodo() *cobra.Command { Short: "Manage personal todos", Long: "Create, list, update, and delete personal todo items.", Example: ` # List all pending todos - life-ustc todo --pending + life-ustc workspace todo --pending # Create a new todo - life-ustc todo create --title "Review notes" --priority high --due 2025-06-01 + life-ustc workspace todo create --title "Review notes" --priority high --due 2025-06-01 # Mark a todo as done (omit ID to pick interactively) - life-ustc todo done - life-ustc todo done + life-ustc workspace todo complete + life-ustc workspace todo complete # Delete a todo (omit ID to pick interactively) - life-ustc todo delete - life-ustc todo delete + life-ustc workspace todo delete + life-ustc workspace todo delete # Get todo IDs for scripting - life-ustc todo --jq '.todos[].id'`, + life-ustc workspace todo --jq '.todos[].id'`, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { return runTodoList(cmd, opts) @@ -46,7 +46,8 @@ func NewCmdTodo() *cobra.Command { addTodoListFlags(cmd, &opts) cmd.AddCommand(newCmdList()) cmd.AddCommand(newCmdCreate()) - cmd.AddCommand(newCmdDone()) + cmd.AddCommand(newCmdCompletion(true)) + cmd.AddCommand(newCmdCompletion(false)) cmd.AddCommand(newCmdUpdate()) cmd.AddCommand(newCmdDelete()) return cmd @@ -349,9 +350,9 @@ func newCmdList() *cobra.Command { Use: "list", Aliases: []string{"ls"}, Short: "List your todos", - Example: ` life-ustc todo list --pending --priority high - life-ustc todo list --done --sort due - life-ustc todo list --before 2025-06-01 --limit 10`, + Example: ` life-ustc workspace todo list --pending --priority high + life-ustc workspace todo list --done --sort due + life-ustc workspace todo list --before 2025-06-01 --limit 10`, RunE: func(cmd *cobra.Command, args []string) error { return runTodoList(cmd, opts) }, @@ -427,14 +428,18 @@ func newCmdCreate() *cobra.Command { return cmd } -func newCmdDone() *cobra.Command { - var undo bool +func newCmdCompletion(completed bool) *cobra.Command { + action := "complete" + short := "Mark todo(s) as complete" + if !completed { + action = "reopen" + short = "Mark todo(s) as incomplete" + } cmd := &cobra.Command{ - Use: "done [todo-id]...", - Aliases: []string{"complete", "finish"}, - Short: "Mark todo(s) as done", - Long: "Mark one or more todos as done. When run interactively without IDs, shows matching todos and lets you pick one.", - Args: cobra.ArbitraryArgs, + Use: action + " [todo-id]...", + Short: short, + Long: short + ". When run interactively without IDs, shows matching todos and lets you pick one.", + Args: cobra.ArbitraryArgs, RunE: func(cmd *cobra.Command, args []string) error { var ids []string var rows []map[string]any @@ -448,12 +453,12 @@ func newCmdDone() *cobra.Command { return fmt.Errorf("todo id is required in non-interactive mode") } opts := todoListOpts{sort: "due", limit: 20} - if undo { + if !completed { opts.done = true } else { opts.pending = true } - picked, err := promptTodoPick(cmd, opts, "Pick a todo to "+cmdutil.DoneVerb(undo)) + picked, err := promptTodoPick(cmd, opts, "Pick a todo to "+action) if err != nil { return err } @@ -464,10 +469,9 @@ func newCmdDone() *cobra.Command { ids = []string{id} rows = []map[string]any{picked} } - return setTodosCompleted(cmd, ids, rows, !undo) + return setTodosCompleted(cmd, ids, rows, completed) }, } - cmd.Flags().BoolVar(&undo, "undo", false, "Mark as not completed") return cmd } diff --git a/internal/cmd/upload/upload.go b/internal/cmd/upload/upload.go index cbbd923..4a72b03 100644 --- a/internal/cmd/upload/upload.go +++ b/internal/cmd/upload/upload.go @@ -78,10 +78,9 @@ func newCmdList() *cobra.Command { func newCmdFile() *cobra.Command { var contentType string cmd := &cobra.Command{ - Use: "file ", - Aliases: []string{"add"}, - Short: "Upload a file", - Args: cobra.ExactArgs(1), + Use: "create ", + Short: "Upload a file", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { filePath := args[0] f, err := os.Open(filePath) diff --git a/internal/cmd/workspace/workspace.go b/internal/cmd/workspace/workspace.go new file mode 100644 index 0000000..b999d46 --- /dev/null +++ b/internal/cmd/workspace/workspace.go @@ -0,0 +1,143 @@ +package workspace + +import ( + "fmt" + + "github.com/spf13/cobra" + + "github.com/Life-USTC/CLI/internal/api" + "github.com/Life-USTC/CLI/internal/cmd/bus" + "github.com/Life-USTC/CLI/internal/cmd/calendar" + "github.com/Life-USTC/CLI/internal/cmd/cmdutil" + "github.com/Life-USTC/CLI/internal/cmd/homework" + "github.com/Life-USTC/CLI/internal/cmd/schedule" + schoolcmd "github.com/Life-USTC/CLI/internal/cmd/school" + "github.com/Life-USTC/CLI/internal/cmd/todo" + "github.com/Life-USTC/CLI/internal/cmd/upload" + openapi "github.com/Life-USTC/CLI/internal/openapi" + "github.com/Life-USTC/CLI/internal/output" +) + +func NewCmdWorkspace() *cobra.Command { + cmd := &cobra.Command{ + Use: "workspace ", + Short: "Manage your campus work", + Args: cobra.NoArgs, + } + cmd.AddCommand( + newCmdOverview(), + newCmdCalendar(), + schedule.NewCmdWorkspaceSchedule(), + newCmdExam(), + todo.NewCmdTodo(), + homework.NewCmdMyHomework(), + calendar.NewCmdSubscription(), + bus.NewCmdBusPreferences(), + upload.NewCmdUpload(), + schoolcmd.NewCmdSchool(), + ) + return cmd +} + +func newCmdOverview() *cobra.Command { + return &cobra.Command{ + Use: "overview", + Short: "Show a compact workspace overview", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + data, err := getOverview(cmd) + if err != nil { + return err + } + if output.IsJSON() { + return output.JSON(data) + } + counts := cmdutil.AsMap(cmdutil.AsMap(data)["counts"]) + todos := cmdutil.AsMap(counts["todos"]) + return output.OutputDetail(map[string]any{ + "todaySchedules": counts["todaySchedules"], + "upcomingExams": counts["upcomingExams"], + "pendingHomeworks": counts["pendingHomeworks"], + "incompleteTodos": todos["incomplete"], + "overdueTodos": todos["overdue"], + }, []output.FieldDef{ + {Key: "todaySchedules", Label: "Today's classes"}, + {Key: "upcomingExams", Label: "Upcoming exams"}, + {Key: "pendingHomeworks", Label: "Pending homeworks"}, + {Key: "incompleteTodos", Label: "Incomplete todos"}, + {Key: "overdueTodos", Label: "Overdue todos"}, + }, "Workspace overview") + }, + } +} + +func newCmdCalendar() *cobra.Command { + cmd := calendar.NewCmdCalendar() + events := &cobra.Command{ + Use: "events", + Short: "Show today's aggregated calendar events", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + data, err := getOverview(cmd) + if err != nil { + return err + } + if output.IsJSON() { + return output.JSON(data) + } + m := cmdutil.AsMap(data) + for _, group := range []struct { + key, title string + cols []output.Column + }{ + {"schedules", "Schedules", []output.Column{{Header: "Course", Key: "section.course.namePrimary"}, {Header: "Time", Key: "startTime"}, {Header: "Place", Key: "customPlace"}}}, + {"exams", "Exams", []output.Column{{Header: "Course", Key: "section.course.namePrimary"}, {Header: "Date", Key: "examDate"}, {Header: "Mode", Key: "examMode"}}}, + {"homeworks", "Homeworks", []output.Column{{Header: "Title", Key: "title"}, {Header: "Due", Key: "submissionDueAt"}, {Header: "Course", Key: "section.course.namePrimary"}}}, + {"dueTodos", "Due todos", []output.Column{{Header: "Title", Key: "title"}, {Header: "Due", Key: "dueAt"}, {Header: "Priority", Key: "priority"}}}, + } { + part := cmdutil.AsMap(m[group.key]) + rows := cmdutil.RowsFromAny(part["items"]) + if len(rows) == 0 { + continue + } + fmt.Println() + output.Bold(" " + group.title) + output.Table(rows, group.cols) + } + return nil + }, + } + cmd.AddCommand(events) + return cmd +} + +func newCmdExam() *cobra.Command { + return &cobra.Command{ + Use: "exam", + Short: "List your upcoming exams", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + data, err := getOverview(cmd) + if err != nil { + return err + } + exams := cmdutil.AsMap(cmdutil.AsMap(data)["exams"]) + rows := cmdutil.RowsFromAny(exams["items"]) + return output.OutputList(exams, rows, []output.Column{ + {Header: "Course", Key: "section.course.namePrimary"}, + {Header: "Date", Key: "examDate"}, + {Header: "Start", Key: "startTime"}, + {Header: "End", Key: "endTime"}, + {Header: "Mode", Key: "examMode"}, + }, len(rows), 1) + }, + } +} + +func getOverview(cmd *cobra.Command) (any, error) { + c, err := api.NewTypedClient(cmdutil.ServerFromCmd(cmd), true) + if err != nil { + return nil, err + } + return api.ParseResponseRaw(c.GetApiMeOverview(api.Ctx(), &openapi.GetApiMeOverviewParams{})) +} diff --git a/internal/openapi/client.gen.go b/internal/openapi/client.gen.go index 4519a3b..e3a70ac 100644 --- a/internal/openapi/client.gen.go +++ b/internal/openapi/client.gen.go @@ -1241,15 +1241,15 @@ func (e ListAdminHomeworksParamsStatus) Valid() bool { } } -// Defines values for GetApiBusNextParamsDayType. +// Defines values for GetApiCatalogBusNextParamsDayType. const ( - Auto GetApiBusNextParamsDayType = "auto" - Weekday GetApiBusNextParamsDayType = "weekday" - Weekend GetApiBusNextParamsDayType = "weekend" + Auto GetApiCatalogBusNextParamsDayType = "auto" + Weekday GetApiCatalogBusNextParamsDayType = "weekday" + Weekend GetApiCatalogBusNextParamsDayType = "weekend" ) -// Valid indicates whether the value is a known member of the GetApiBusNextParamsDayType enum. -func (e GetApiBusNextParamsDayType) Valid() bool { +// Valid indicates whether the value is a known member of the GetApiCatalogBusNextParamsDayType enum. +func (e GetApiCatalogBusNextParamsDayType) Valid() bool { switch e { case Auto: return true @@ -1262,36 +1262,36 @@ func (e GetApiBusNextParamsDayType) Valid() bool { } } -// Defines values for GetApiBusNextParamsIncludeDeparted. +// Defines values for GetApiCatalogBusNextParamsIncludeDeparted. const ( - GetApiBusNextParamsIncludeDepartedFalse GetApiBusNextParamsIncludeDeparted = "false" - GetApiBusNextParamsIncludeDepartedTrue GetApiBusNextParamsIncludeDeparted = "true" + GetApiCatalogBusNextParamsIncludeDepartedFalse GetApiCatalogBusNextParamsIncludeDeparted = "false" + GetApiCatalogBusNextParamsIncludeDepartedTrue GetApiCatalogBusNextParamsIncludeDeparted = "true" ) -// Valid indicates whether the value is a known member of the GetApiBusNextParamsIncludeDeparted enum. -func (e GetApiBusNextParamsIncludeDeparted) Valid() bool { +// Valid indicates whether the value is a known member of the GetApiCatalogBusNextParamsIncludeDeparted enum. +func (e GetApiCatalogBusNextParamsIncludeDeparted) Valid() bool { switch e { - case GetApiBusNextParamsIncludeDepartedFalse: + case GetApiCatalogBusNextParamsIncludeDepartedFalse: return true - case GetApiBusNextParamsIncludeDepartedTrue: + case GetApiCatalogBusNextParamsIncludeDepartedTrue: return true default: return false } } -// Defines values for GetApiBusNextParamsLocale. +// Defines values for GetApiCatalogBusNextParamsLocale. const ( - GetApiBusNextParamsLocaleEnUs GetApiBusNextParamsLocale = "en-us" - GetApiBusNextParamsLocaleZhCn GetApiBusNextParamsLocale = "zh-cn" + GetApiCatalogBusNextParamsLocaleEnUs GetApiCatalogBusNextParamsLocale = "en-us" + GetApiCatalogBusNextParamsLocaleZhCn GetApiCatalogBusNextParamsLocale = "zh-cn" ) -// Valid indicates whether the value is a known member of the GetApiBusNextParamsLocale enum. -func (e GetApiBusNextParamsLocale) Valid() bool { +// Valid indicates whether the value is a known member of the GetApiCatalogBusNextParamsLocale enum. +func (e GetApiCatalogBusNextParamsLocale) Valid() bool { switch e { - case GetApiBusNextParamsLocaleEnUs: + case GetApiCatalogBusNextParamsLocaleEnUs: return true - case GetApiBusNextParamsLocaleZhCn: + case GetApiCatalogBusNextParamsLocaleZhCn: return true default: return false @@ -1316,69 +1316,6 @@ func (e GetApiBusRoutesParamsLocale) Valid() bool { } } -// Defines values for ListCommentsParamsTargetType. -const ( - ListCommentsParamsTargetTypeCourse ListCommentsParamsTargetType = "course" - ListCommentsParamsTargetTypeHomework ListCommentsParamsTargetType = "homework" - ListCommentsParamsTargetTypeSection ListCommentsParamsTargetType = "section" - ListCommentsParamsTargetTypeSectionTeacher ListCommentsParamsTargetType = "section-teacher" - ListCommentsParamsTargetTypeTeacher ListCommentsParamsTargetType = "teacher" -) - -// Valid indicates whether the value is a known member of the ListCommentsParamsTargetType enum. -func (e ListCommentsParamsTargetType) Valid() bool { - switch e { - case ListCommentsParamsTargetTypeCourse: - return true - case ListCommentsParamsTargetTypeHomework: - return true - case ListCommentsParamsTargetTypeSection: - return true - case ListCommentsParamsTargetTypeSectionTeacher: - return true - case ListCommentsParamsTargetTypeTeacher: - return true - default: - return false - } -} - -// Defines values for RemoveCommentReactionParamsType. -const ( - RemoveCommentReactionParamsTypeConfused RemoveCommentReactionParamsType = "confused" - RemoveCommentReactionParamsTypeDownvote RemoveCommentReactionParamsType = "downvote" - RemoveCommentReactionParamsTypeEyes RemoveCommentReactionParamsType = "eyes" - RemoveCommentReactionParamsTypeHeart RemoveCommentReactionParamsType = "heart" - RemoveCommentReactionParamsTypeHooray RemoveCommentReactionParamsType = "hooray" - RemoveCommentReactionParamsTypeLaugh RemoveCommentReactionParamsType = "laugh" - RemoveCommentReactionParamsTypeRocket RemoveCommentReactionParamsType = "rocket" - RemoveCommentReactionParamsTypeUpvote RemoveCommentReactionParamsType = "upvote" -) - -// Valid indicates whether the value is a known member of the RemoveCommentReactionParamsType enum. -func (e RemoveCommentReactionParamsType) Valid() bool { - switch e { - case RemoveCommentReactionParamsTypeConfused: - return true - case RemoveCommentReactionParamsTypeDownvote: - return true - case RemoveCommentReactionParamsTypeEyes: - return true - case RemoveCommentReactionParamsTypeHeart: - return true - case RemoveCommentReactionParamsTypeHooray: - return true - case RemoveCommentReactionParamsTypeLaugh: - return true - case RemoveCommentReactionParamsTypeRocket: - return true - case RemoveCommentReactionParamsTypeUpvote: - return true - default: - return false - } -} - // Defines values for ListCoursesParamsLocale. const ( ListCoursesParamsLocaleEnUs ListCoursesParamsLocale = "en-us" @@ -1415,84 +1352,6 @@ func (e GetCourseParamsLocale) Valid() bool { } } -// Defines values for GetDescriptionParamsTargetType. -const ( - GetDescriptionParamsTargetTypeCourse GetDescriptionParamsTargetType = "course" - GetDescriptionParamsTargetTypeHomework GetDescriptionParamsTargetType = "homework" - GetDescriptionParamsTargetTypeSection GetDescriptionParamsTargetType = "section" - GetDescriptionParamsTargetTypeTeacher GetDescriptionParamsTargetType = "teacher" -) - -// Valid indicates whether the value is a known member of the GetDescriptionParamsTargetType enum. -func (e GetDescriptionParamsTargetType) Valid() bool { - switch e { - case GetDescriptionParamsTargetTypeCourse: - return true - case GetDescriptionParamsTargetTypeHomework: - return true - case GetDescriptionParamsTargetTypeSection: - return true - case GetDescriptionParamsTargetTypeTeacher: - return true - default: - return false - } -} - -// Defines values for ListHomeworksParamsIncludeDeleted. -const ( - ListHomeworksParamsIncludeDeletedFalse ListHomeworksParamsIncludeDeleted = "false" - ListHomeworksParamsIncludeDeletedTrue ListHomeworksParamsIncludeDeleted = "true" -) - -// Valid indicates whether the value is a known member of the ListHomeworksParamsIncludeDeleted enum. -func (e ListHomeworksParamsIncludeDeleted) Valid() bool { - switch e { - case ListHomeworksParamsIncludeDeletedFalse: - return true - case ListHomeworksParamsIncludeDeletedTrue: - return true - default: - return false - } -} - -// Defines values for GetApiMeOverviewParamsLocale. -const ( - GetApiMeOverviewParamsLocaleEnUs GetApiMeOverviewParamsLocale = "en-us" - GetApiMeOverviewParamsLocaleZhCn GetApiMeOverviewParamsLocale = "zh-cn" -) - -// Valid indicates whether the value is a known member of the GetApiMeOverviewParamsLocale enum. -func (e GetApiMeOverviewParamsLocale) Valid() bool { - switch e { - case GetApiMeOverviewParamsLocaleEnUs: - return true - case GetApiMeOverviewParamsLocaleZhCn: - return true - default: - return false - } -} - -// Defines values for GetApiMeSubscriptionsSchedulesParamsLocale. -const ( - GetApiMeSubscriptionsSchedulesParamsLocaleEnUs GetApiMeSubscriptionsSchedulesParamsLocale = "en-us" - GetApiMeSubscriptionsSchedulesParamsLocaleZhCn GetApiMeSubscriptionsSchedulesParamsLocale = "zh-cn" -) - -// Valid indicates whether the value is a known member of the GetApiMeSubscriptionsSchedulesParamsLocale enum. -func (e GetApiMeSubscriptionsSchedulesParamsLocale) Valid() bool { - switch e { - case GetApiMeSubscriptionsSchedulesParamsLocaleEnUs: - return true - case GetApiMeSubscriptionsSchedulesParamsLocaleZhCn: - return true - default: - return false - } -} - // Defines values for ListSchedulesParamsLocale. const ( ListSchedulesParamsLocaleEnUs ListSchedulesParamsLocale = "en-us" @@ -1603,116 +1462,257 @@ func (e ListTeachersParamsLocale) Valid() bool { // Defines values for GetTeacherParamsLocale. const ( - EnUs GetTeacherParamsLocale = "en-us" - ZhCn GetTeacherParamsLocale = "zh-cn" + GetTeacherParamsLocaleEnUs GetTeacherParamsLocale = "en-us" + GetTeacherParamsLocaleZhCn GetTeacherParamsLocale = "zh-cn" ) // Valid indicates whether the value is a known member of the GetTeacherParamsLocale enum. func (e GetTeacherParamsLocale) Valid() bool { switch e { - case EnUs: + case GetTeacherParamsLocaleEnUs: return true - case ZhCn: + case GetTeacherParamsLocaleZhCn: return true default: return false } } -// Defines values for ListTodosParamsCompleted. +// Defines values for ListCommentsParamsTargetType. const ( - False ListTodosParamsCompleted = "false" - True ListTodosParamsCompleted = "true" + ListCommentsParamsTargetTypeCourse ListCommentsParamsTargetType = "course" + ListCommentsParamsTargetTypeHomework ListCommentsParamsTargetType = "homework" + ListCommentsParamsTargetTypeSection ListCommentsParamsTargetType = "section" + ListCommentsParamsTargetTypeSectionTeacher ListCommentsParamsTargetType = "section-teacher" + ListCommentsParamsTargetTypeTeacher ListCommentsParamsTargetType = "teacher" ) -// Valid indicates whether the value is a known member of the ListTodosParamsCompleted enum. -func (e ListTodosParamsCompleted) Valid() bool { +// Valid indicates whether the value is a known member of the ListCommentsParamsTargetType enum. +func (e ListCommentsParamsTargetType) Valid() bool { switch e { - case False: + case ListCommentsParamsTargetTypeCourse: return true - case True: + case ListCommentsParamsTargetTypeHomework: + return true + case ListCommentsParamsTargetTypeSection: + return true + case ListCommentsParamsTargetTypeSectionTeacher: + return true + case ListCommentsParamsTargetTypeTeacher: return true default: return false } } -// Defines values for ListTodosParamsPriority. +// Defines values for RemoveCommentReactionParamsType. const ( - ListTodosParamsPriorityHigh ListTodosParamsPriority = "high" - ListTodosParamsPriorityLow ListTodosParamsPriority = "low" - ListTodosParamsPriorityMedium ListTodosParamsPriority = "medium" + RemoveCommentReactionParamsTypeConfused RemoveCommentReactionParamsType = "confused" + RemoveCommentReactionParamsTypeDownvote RemoveCommentReactionParamsType = "downvote" + RemoveCommentReactionParamsTypeEyes RemoveCommentReactionParamsType = "eyes" + RemoveCommentReactionParamsTypeHeart RemoveCommentReactionParamsType = "heart" + RemoveCommentReactionParamsTypeHooray RemoveCommentReactionParamsType = "hooray" + RemoveCommentReactionParamsTypeLaugh RemoveCommentReactionParamsType = "laugh" + RemoveCommentReactionParamsTypeRocket RemoveCommentReactionParamsType = "rocket" + RemoveCommentReactionParamsTypeUpvote RemoveCommentReactionParamsType = "upvote" ) -// Valid indicates whether the value is a known member of the ListTodosParamsPriority enum. -func (e ListTodosParamsPriority) Valid() bool { +// Valid indicates whether the value is a known member of the RemoveCommentReactionParamsType enum. +func (e RemoveCommentReactionParamsType) Valid() bool { switch e { - case ListTodosParamsPriorityHigh: + case RemoveCommentReactionParamsTypeConfused: return true - case ListTodosParamsPriorityLow: + case RemoveCommentReactionParamsTypeDownvote: return true - case ListTodosParamsPriorityMedium: + case RemoveCommentReactionParamsTypeEyes: + return true + case RemoveCommentReactionParamsTypeHeart: + return true + case RemoveCommentReactionParamsTypeHooray: + return true + case RemoveCommentReactionParamsTypeLaugh: + return true + case RemoveCommentReactionParamsTypeRocket: + return true + case RemoveCommentReactionParamsTypeUpvote: return true default: return false } } -// UnderscoreUnderscoreSchema0 defines model for __schema0. -type UnderscoreUnderscoreSchema0 struct { - Attachments []struct { - ContentType *string `json:"contentType"` - Filename string `json:"filename"` - Id string `json:"id"` - Size int `json:"size"` - UploadId string `json:"uploadId"` - Url string `json:"url"` - } `json:"attachments"` - Author *struct { - Id *string `json:"id,omitempty"` - Image *string `json:"image,omitempty"` - IsAdmin bool `json:"isAdmin"` - IsGuest bool `json:"isGuest"` - IsUstcVerified bool `json:"isUstcVerified"` - Name *string `json:"name"` - } `json:"author"` - AuthorHidden bool `json:"authorHidden"` - Body string `json:"body"` - CanDelete bool `json:"canDelete"` - CanEdit bool `json:"canEdit"` - CanModerate bool `json:"canModerate"` - CanReact bool `json:"canReact"` - CanReply bool `json:"canReply"` - CreatedAt time.Time `json:"createdAt"` - Id string `json:"id"` - IsAnonymous bool `json:"isAnonymous"` - IsAuthor bool `json:"isAuthor"` - ParentId *string `json:"parentId"` - Reactions []struct { - Count int `json:"count"` - Type string `json:"type"` - ViewerHasReacted bool `json:"viewerHasReacted"` - } `json:"reactions"` - RenderedBody string `json:"renderedBody"` - Replies []UnderscoreUnderscoreSchema0 `json:"replies"` - RootId *string `json:"rootId"` - Status string `json:"status"` - UpdatedAt time.Time `json:"updatedAt"` - Visibility string `json:"visibility"` -} +// Defines values for GetDescriptionParamsTargetType. +const ( + GetDescriptionParamsTargetTypeCourse GetDescriptionParamsTargetType = "course" + GetDescriptionParamsTargetTypeHomework GetDescriptionParamsTargetType = "homework" + GetDescriptionParamsTargetTypeSection GetDescriptionParamsTargetType = "section" + GetDescriptionParamsTargetTypeTeacher GetDescriptionParamsTargetType = "teacher" +) -// UnderscoreUnderscoreSchema1 defines model for __schema1. -type UnderscoreUnderscoreSchema1 struct { - Attachments []struct { - ContentType *string `json:"contentType"` - Filename string `json:"filename"` - Id string `json:"id"` - Size int `json:"size"` - UploadId string `json:"uploadId"` - Url string `json:"url"` - } `json:"attachments"` - Author *struct { - Id *string `json:"id,omitempty"` +// Valid indicates whether the value is a known member of the GetDescriptionParamsTargetType enum. +func (e GetDescriptionParamsTargetType) Valid() bool { + switch e { + case GetDescriptionParamsTargetTypeCourse: + return true + case GetDescriptionParamsTargetTypeHomework: + return true + case GetDescriptionParamsTargetTypeSection: + return true + case GetDescriptionParamsTargetTypeTeacher: + return true + default: + return false + } +} + +// Defines values for ListHomeworksParamsIncludeDeleted. +const ( + ListHomeworksParamsIncludeDeletedFalse ListHomeworksParamsIncludeDeleted = "false" + ListHomeworksParamsIncludeDeletedTrue ListHomeworksParamsIncludeDeleted = "true" +) + +// Valid indicates whether the value is a known member of the ListHomeworksParamsIncludeDeleted enum. +func (e ListHomeworksParamsIncludeDeleted) Valid() bool { + switch e { + case ListHomeworksParamsIncludeDeletedFalse: + return true + case ListHomeworksParamsIncludeDeletedTrue: + return true + default: + return false + } +} + +// Defines values for GetApiMeOverviewParamsLocale. +const ( + GetApiMeOverviewParamsLocaleEnUs GetApiMeOverviewParamsLocale = "en-us" + GetApiMeOverviewParamsLocaleZhCn GetApiMeOverviewParamsLocale = "zh-cn" +) + +// Valid indicates whether the value is a known member of the GetApiMeOverviewParamsLocale enum. +func (e GetApiMeOverviewParamsLocale) Valid() bool { + switch e { + case GetApiMeOverviewParamsLocaleEnUs: + return true + case GetApiMeOverviewParamsLocaleZhCn: + return true + default: + return false + } +} + +// Defines values for GetApiMeSubscriptionsSchedulesParamsLocale. +const ( + EnUs GetApiMeSubscriptionsSchedulesParamsLocale = "en-us" + ZhCn GetApiMeSubscriptionsSchedulesParamsLocale = "zh-cn" +) + +// Valid indicates whether the value is a known member of the GetApiMeSubscriptionsSchedulesParamsLocale enum. +func (e GetApiMeSubscriptionsSchedulesParamsLocale) Valid() bool { + switch e { + case EnUs: + return true + case ZhCn: + return true + default: + return false + } +} + +// Defines values for ListTodosParamsCompleted. +const ( + False ListTodosParamsCompleted = "false" + True ListTodosParamsCompleted = "true" +) + +// Valid indicates whether the value is a known member of the ListTodosParamsCompleted enum. +func (e ListTodosParamsCompleted) Valid() bool { + switch e { + case False: + return true + case True: + return true + default: + return false + } +} + +// Defines values for ListTodosParamsPriority. +const ( + ListTodosParamsPriorityHigh ListTodosParamsPriority = "high" + ListTodosParamsPriorityLow ListTodosParamsPriority = "low" + ListTodosParamsPriorityMedium ListTodosParamsPriority = "medium" +) + +// Valid indicates whether the value is a known member of the ListTodosParamsPriority enum. +func (e ListTodosParamsPriority) Valid() bool { + switch e { + case ListTodosParamsPriorityHigh: + return true + case ListTodosParamsPriorityLow: + return true + case ListTodosParamsPriorityMedium: + return true + default: + return false + } +} + +// UnderscoreUnderscoreSchema0 defines model for __schema0. +type UnderscoreUnderscoreSchema0 struct { + Attachments []struct { + ContentType *string `json:"contentType"` + Filename string `json:"filename"` + Id string `json:"id"` + Size int `json:"size"` + UploadId string `json:"uploadId"` + Url string `json:"url"` + } `json:"attachments"` + Author *struct { + Id *string `json:"id,omitempty"` + Image *string `json:"image,omitempty"` + IsAdmin bool `json:"isAdmin"` + IsGuest bool `json:"isGuest"` + IsUstcVerified bool `json:"isUstcVerified"` + Name *string `json:"name"` + } `json:"author"` + AuthorHidden bool `json:"authorHidden"` + Body string `json:"body"` + CanDelete bool `json:"canDelete"` + CanEdit bool `json:"canEdit"` + CanModerate bool `json:"canModerate"` + CanReact bool `json:"canReact"` + CanReply bool `json:"canReply"` + CreatedAt time.Time `json:"createdAt"` + Id string `json:"id"` + IsAnonymous bool `json:"isAnonymous"` + IsAuthor bool `json:"isAuthor"` + ParentId *string `json:"parentId"` + Reactions []struct { + Count int `json:"count"` + Type string `json:"type"` + ViewerHasReacted bool `json:"viewerHasReacted"` + } `json:"reactions"` + RenderedBody string `json:"renderedBody"` + Replies []UnderscoreUnderscoreSchema0 `json:"replies"` + RootId *string `json:"rootId"` + Status string `json:"status"` + UpdatedAt time.Time `json:"updatedAt"` + Visibility string `json:"visibility"` +} + +// UnderscoreUnderscoreSchema1 defines model for __schema1. +type UnderscoreUnderscoreSchema1 struct { + Attachments []struct { + ContentType *string `json:"contentType"` + Filename string `json:"filename"` + Id string `json:"id"` + Size int `json:"size"` + UploadId string `json:"uploadId"` + Url string `json:"url"` + } `json:"attachments"` + Author *struct { + Id *string `json:"id,omitempty"` Image *string `json:"image,omitempty"` IsAdmin bool `json:"isAdmin"` IsGuest bool `json:"isGuest"` @@ -7100,6 +7100,12 @@ type UploadsListResponseSchema struct { } `json:"pagination"` } +// GetApiAccountProfileParams defines parameters for GetApiAccountProfile. +type GetApiAccountProfileParams struct { + Username *string `form:"username,omitempty" json:"username,omitempty"` + UserId *string `form:"userId,omitempty" json:"userId,omitempty"` +} + // ListAdminCommentsParams defines parameters for ListAdminComments. type ListAdminCommentsParams struct { Status *ListAdminCommentsParamsStatus `form:"status,omitempty" json:"status,omitempty"` @@ -7168,26 +7174,26 @@ type QueryBusParams struct { VersionKey *string `form:"versionKey,omitempty" json:"versionKey,omitempty"` } -// GetApiBusNextParams defines parameters for GetApiBusNext. -type GetApiBusNextParams struct { - OriginCampusId int64 `form:"originCampusId" json:"originCampusId"` - DestinationCampusId int64 `form:"destinationCampusId" json:"destinationCampusId"` - AtTime *string `form:"atTime,omitempty" json:"atTime,omitempty"` - DayType *GetApiBusNextParamsDayType `form:"dayType,omitempty" json:"dayType,omitempty"` - IncludeDeparted *GetApiBusNextParamsIncludeDeparted `form:"includeDeparted,omitempty" json:"includeDeparted,omitempty"` - Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` - VersionKey *string `form:"versionKey,omitempty" json:"versionKey,omitempty"` - Locale *GetApiBusNextParamsLocale `form:"locale,omitempty" json:"locale,omitempty"` +// GetApiCatalogBusNextParams defines parameters for GetApiCatalogBusNext. +type GetApiCatalogBusNextParams struct { + OriginCampusId int64 `form:"originCampusId" json:"originCampusId"` + DestinationCampusId int64 `form:"destinationCampusId" json:"destinationCampusId"` + AtTime *string `form:"atTime,omitempty" json:"atTime,omitempty"` + DayType *GetApiCatalogBusNextParamsDayType `form:"dayType,omitempty" json:"dayType,omitempty"` + IncludeDeparted *GetApiCatalogBusNextParamsIncludeDeparted `form:"includeDeparted,omitempty" json:"includeDeparted,omitempty"` + Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` + VersionKey *string `form:"versionKey,omitempty" json:"versionKey,omitempty"` + Locale *GetApiCatalogBusNextParamsLocale `form:"locale,omitempty" json:"locale,omitempty"` } -// GetApiBusNextParamsDayType defines parameters for GetApiBusNext. -type GetApiBusNextParamsDayType string +// GetApiCatalogBusNextParamsDayType defines parameters for GetApiCatalogBusNext. +type GetApiCatalogBusNextParamsDayType string -// GetApiBusNextParamsIncludeDeparted defines parameters for GetApiBusNext. -type GetApiBusNextParamsIncludeDeparted string +// GetApiCatalogBusNextParamsIncludeDeparted defines parameters for GetApiCatalogBusNext. +type GetApiCatalogBusNextParamsIncludeDeparted string -// GetApiBusNextParamsLocale defines parameters for GetApiBusNext. -type GetApiBusNextParamsLocale string +// GetApiCatalogBusNextParamsLocale defines parameters for GetApiCatalogBusNext. +type GetApiCatalogBusNextParamsLocale string // GetApiBusRoutesParams defines parameters for GetApiBusRoutes. type GetApiBusRoutesParams struct { @@ -7200,36 +7206,6 @@ type GetApiBusRoutesParams struct { // GetApiBusRoutesParamsLocale defines parameters for GetApiBusRoutes. type GetApiBusRoutesParamsLocale string -// ListCommentsParams defines parameters for ListComments. -type ListCommentsParams struct { - TargetType ListCommentsParamsTargetType `form:"targetType" json:"targetType"` - TargetId *string `form:"targetId,omitempty" json:"targetId,omitempty"` - SectionId *int64 `form:"sectionId,omitempty" json:"sectionId,omitempty"` - SectionJwId *int64 `form:"sectionJwId,omitempty" json:"sectionJwId,omitempty"` - CourseJwId *int64 `form:"courseJwId,omitempty" json:"courseJwId,omitempty"` - TeacherId *int64 `form:"teacherId,omitempty" json:"teacherId,omitempty"` - HomeworkId *string `form:"homeworkId,omitempty" json:"homeworkId,omitempty"` - SectionTeacherId *int64 `form:"sectionTeacherId,omitempty" json:"sectionTeacherId,omitempty"` - Page *int64 `form:"page,omitempty" json:"page,omitempty"` - - // PageSize Number of items per page. - PageSize *int64 `form:"pageSize,omitempty" json:"pageSize,omitempty"` - - // Limit Deprecated alias for pageSize. pageSize takes precedence when both are supplied. - Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` -} - -// ListCommentsParamsTargetType defines parameters for ListComments. -type ListCommentsParamsTargetType string - -// RemoveCommentReactionParams defines parameters for RemoveCommentReaction. -type RemoveCommentReactionParams struct { - Type RemoveCommentReactionParamsType `form:"type" json:"type"` -} - -// RemoveCommentReactionParamsType defines parameters for RemoveCommentReaction. -type RemoveCommentReactionParamsType string - // ListCoursesParams defines parameters for ListCourses. type ListCoursesParams struct { Locale *ListCoursesParamsLocale `form:"locale,omitempty" json:"locale,omitempty"` @@ -7257,58 +7233,6 @@ type GetCourseParams struct { // GetCourseParamsLocale defines parameters for GetCourse. type GetCourseParamsLocale string -// VisitDashboardLinkParams defines parameters for VisitDashboardLink. -type VisitDashboardLinkParams struct { - Slug string `form:"slug" json:"slug"` -} - -// GetDescriptionParams defines parameters for GetDescription. -type GetDescriptionParams struct { - TargetType GetDescriptionParamsTargetType `form:"targetType" json:"targetType"` - TargetId *string `form:"targetId,omitempty" json:"targetId,omitempty"` - SectionJwId *int64 `form:"sectionJwId,omitempty" json:"sectionJwId,omitempty"` - CourseJwId *int64 `form:"courseJwId,omitempty" json:"courseJwId,omitempty"` - TeacherId *int64 `form:"teacherId,omitempty" json:"teacherId,omitempty"` - HomeworkId *string `form:"homeworkId,omitempty" json:"homeworkId,omitempty"` -} - -// GetDescriptionParamsTargetType defines parameters for GetDescription. -type GetDescriptionParamsTargetType string - -// ListHomeworksParams defines parameters for ListHomeworks. -type ListHomeworksParams struct { - SectionId *int64 `form:"sectionId,omitempty" json:"sectionId,omitempty"` - SectionIds *string `form:"sectionIds,omitempty" json:"sectionIds,omitempty"` - SectionJwId *int64 `form:"sectionJwId,omitempty" json:"sectionJwId,omitempty"` - IncludeDeleted *ListHomeworksParamsIncludeDeleted `form:"includeDeleted,omitempty" json:"includeDeleted,omitempty"` -} - -// ListHomeworksParamsIncludeDeleted defines parameters for ListHomeworks. -type ListHomeworksParamsIncludeDeleted string - -// GetApiMeOverviewParams defines parameters for GetApiMeOverview. -type GetApiMeOverviewParams struct { - AtTime *string `form:"atTime,omitempty" json:"atTime,omitempty"` - HomeworkWindowDays *int64 `form:"homeworkWindowDays,omitempty" json:"homeworkWindowDays,omitempty"` - Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` - Locale *GetApiMeOverviewParamsLocale `form:"locale,omitempty" json:"locale,omitempty"` -} - -// GetApiMeOverviewParamsLocale defines parameters for GetApiMeOverview. -type GetApiMeOverviewParamsLocale string - -// GetApiMeSubscriptionsSchedulesParams defines parameters for GetApiMeSubscriptionsSchedules. -type GetApiMeSubscriptionsSchedulesParams struct { - DateFrom *string `form:"dateFrom,omitempty" json:"dateFrom,omitempty"` - DateTo *string `form:"dateTo,omitempty" json:"dateTo,omitempty"` - Weekday *int64 `form:"weekday,omitempty" json:"weekday,omitempty"` - Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` - Locale *GetApiMeSubscriptionsSchedulesParamsLocale `form:"locale,omitempty" json:"locale,omitempty"` -} - -// GetApiMeSubscriptionsSchedulesParamsLocale defines parameters for GetApiMeSubscriptionsSchedules. -type GetApiMeSubscriptionsSchedulesParamsLocale string - // ListSchedulesParams defines parameters for ListSchedules. type ListSchedulesParams struct { Locale *ListSchedulesParamsLocale `form:"locale,omitempty" json:"locale,omitempty"` @@ -7428,16 +7352,104 @@ type GetTeacherParams struct { // GetTeacherParamsLocale defines parameters for GetTeacher. type GetTeacherParamsLocale string -// ListTodosParams defines parameters for ListTodos. -type ListTodosParams struct { - Completed *ListTodosParamsCompleted `form:"completed,omitempty" json:"completed,omitempty"` - Priority *ListTodosParamsPriority `form:"priority,omitempty" json:"priority,omitempty"` - DueBefore *string `form:"dueBefore,omitempty" json:"dueBefore,omitempty"` - DueAfter *string `form:"dueAfter,omitempty" json:"dueAfter,omitempty"` - Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` -} - -// ListTodosParamsCompleted defines parameters for ListTodos. +// ListCommentsParams defines parameters for ListComments. +type ListCommentsParams struct { + TargetType ListCommentsParamsTargetType `form:"targetType" json:"targetType"` + TargetId *string `form:"targetId,omitempty" json:"targetId,omitempty"` + SectionId *int64 `form:"sectionId,omitempty" json:"sectionId,omitempty"` + SectionJwId *int64 `form:"sectionJwId,omitempty" json:"sectionJwId,omitempty"` + CourseJwId *int64 `form:"courseJwId,omitempty" json:"courseJwId,omitempty"` + TeacherId *int64 `form:"teacherId,omitempty" json:"teacherId,omitempty"` + HomeworkId *string `form:"homeworkId,omitempty" json:"homeworkId,omitempty"` + SectionTeacherId *int64 `form:"sectionTeacherId,omitempty" json:"sectionTeacherId,omitempty"` + Page *int64 `form:"page,omitempty" json:"page,omitempty"` + + // PageSize Number of items per page. + PageSize *int64 `form:"pageSize,omitempty" json:"pageSize,omitempty"` + + // Limit Deprecated alias for pageSize. pageSize takes precedence when both are supplied. + Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` +} + +// ListCommentsParamsTargetType defines parameters for ListComments. +type ListCommentsParamsTargetType string + +// RemoveCommentReactionParams defines parameters for RemoveCommentReaction. +type RemoveCommentReactionParams struct { + Type RemoveCommentReactionParamsType `form:"type" json:"type"` +} + +// RemoveCommentReactionParamsType defines parameters for RemoveCommentReaction. +type RemoveCommentReactionParamsType string + +// GetDescriptionParams defines parameters for GetDescription. +type GetDescriptionParams struct { + TargetType GetDescriptionParamsTargetType `form:"targetType" json:"targetType"` + TargetId *string `form:"targetId,omitempty" json:"targetId,omitempty"` + SectionJwId *int64 `form:"sectionJwId,omitempty" json:"sectionJwId,omitempty"` + CourseJwId *int64 `form:"courseJwId,omitempty" json:"courseJwId,omitempty"` + TeacherId *int64 `form:"teacherId,omitempty" json:"teacherId,omitempty"` + HomeworkId *string `form:"homeworkId,omitempty" json:"homeworkId,omitempty"` +} + +// GetDescriptionParamsTargetType defines parameters for GetDescription. +type GetDescriptionParamsTargetType string + +// ListHomeworksParams defines parameters for ListHomeworks. +type ListHomeworksParams struct { + SectionId *int64 `form:"sectionId,omitempty" json:"sectionId,omitempty"` + SectionIds *string `form:"sectionIds,omitempty" json:"sectionIds,omitempty"` + SectionJwId *int64 `form:"sectionJwId,omitempty" json:"sectionJwId,omitempty"` + IncludeDeleted *ListHomeworksParamsIncludeDeleted `form:"includeDeleted,omitempty" json:"includeDeleted,omitempty"` +} + +// ListHomeworksParamsIncludeDeleted defines parameters for ListHomeworks. +type ListHomeworksParamsIncludeDeleted string + +// GetUserCalendarParams defines parameters for GetUserCalendar. +type GetUserCalendarParams struct { + // Token Calendar feed token for anonymous personal iCal access. + Token *string `form:"token,omitempty" json:"token,omitempty"` +} + +// VisitDashboardLinkParams defines parameters for VisitDashboardLink. +type VisitDashboardLinkParams struct { + Slug string `form:"slug" json:"slug"` +} + +// GetApiMeOverviewParams defines parameters for GetApiMeOverview. +type GetApiMeOverviewParams struct { + AtTime *string `form:"atTime,omitempty" json:"atTime,omitempty"` + HomeworkWindowDays *int64 `form:"homeworkWindowDays,omitempty" json:"homeworkWindowDays,omitempty"` + Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` + Locale *GetApiMeOverviewParamsLocale `form:"locale,omitempty" json:"locale,omitempty"` +} + +// GetApiMeOverviewParamsLocale defines parameters for GetApiMeOverview. +type GetApiMeOverviewParamsLocale string + +// GetApiMeSubscriptionsSchedulesParams defines parameters for GetApiMeSubscriptionsSchedules. +type GetApiMeSubscriptionsSchedulesParams struct { + DateFrom *string `form:"dateFrom,omitempty" json:"dateFrom,omitempty"` + DateTo *string `form:"dateTo,omitempty" json:"dateTo,omitempty"` + Weekday *int64 `form:"weekday,omitempty" json:"weekday,omitempty"` + Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` + Locale *GetApiMeSubscriptionsSchedulesParamsLocale `form:"locale,omitempty" json:"locale,omitempty"` +} + +// GetApiMeSubscriptionsSchedulesParamsLocale defines parameters for GetApiMeSubscriptionsSchedules. +type GetApiMeSubscriptionsSchedulesParamsLocale string + +// ListTodosParams defines parameters for ListTodos. +type ListTodosParams struct { + Completed *ListTodosParamsCompleted `form:"completed,omitempty" json:"completed,omitempty"` + Priority *ListTodosParamsPriority `form:"priority,omitempty" json:"priority,omitempty"` + DueBefore *string `form:"dueBefore,omitempty" json:"dueBefore,omitempty"` + DueAfter *string `form:"dueAfter,omitempty" json:"dueAfter,omitempty"` + Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"` +} + +// ListTodosParamsCompleted defines parameters for ListTodos. type ListTodosParamsCompleted string // ListTodosParamsPriority defines parameters for ListTodos. @@ -7459,11 +7471,8 @@ type PutApiUploadsObjectParams struct { Key string `form:"key" json:"key"` } -// GetUserCalendarParams defines parameters for GetUserCalendar. -type GetUserCalendarParams struct { - // Token Calendar feed token for anonymous personal iCal access. - Token *string `form:"token,omitempty" json:"token,omitempty"` -} +// SetLocaleJSONRequestBody defines body for SetLocale for application/json ContentType. +type SetLocaleJSONRequestBody = LocaleUpdateRequestSchema // ModerateAdminCommentJSONRequestBody defines body for ModerateAdminComment for application/json ContentType. type ModerateAdminCommentJSONRequestBody = AdminModerateCommentRequestSchema @@ -7477,26 +7486,8 @@ type CreateAdminSuspensionJSONRequestBody = AdminCreateSuspensionRequestSchema // UpdateAdminUserJSONRequestBody defines body for UpdateAdminUser for application/json ContentType. type UpdateAdminUserJSONRequestBody = AdminUpdateUserRequestSchema -// SetBusPreferencesJSONRequestBody defines body for SetBusPreferences for application/json ContentType. -type SetBusPreferencesJSONRequestBody = BusPreferenceRequestSchema - -// DeleteApiCalendarSubscriptionsJSONRequestBody defines body for DeleteApiCalendarSubscriptions for application/json ContentType. -type DeleteApiCalendarSubscriptionsJSONRequestBody = CalendarSubscriptionRemoveRequestSchema - -// AppendCalendarSubscriptionSectionsJSONRequestBody defines body for AppendCalendarSubscriptionSections for application/json ContentType. -type AppendCalendarSubscriptionSectionsJSONRequestBody = CalendarSubscriptionAppendRequestSchema - -// SetCalendarSubscriptionJSONRequestBody defines body for SetCalendarSubscription for application/json ContentType. -type SetCalendarSubscriptionJSONRequestBody = CalendarSubscriptionCreateRequestSchema - -// BatchUpdateCalendarSubscriptionJSONRequestBody defines body for BatchUpdateCalendarSubscription for application/json ContentType. -type BatchUpdateCalendarSubscriptionJSONRequestBody = CalendarSubscriptionBatchRequestSchema - -// PostApiCalendarSubscriptionsImportCodesJSONRequestBody defines body for PostApiCalendarSubscriptionsImportCodes for application/json ContentType. -type PostApiCalendarSubscriptionsImportCodesJSONRequestBody = MatchSectionCodesRequestSchema - -// QueryCalendarSubscriptionSectionsJSONRequestBody defines body for QueryCalendarSubscriptionSections for application/json ContentType. -type QueryCalendarSubscriptionSectionsJSONRequestBody = CalendarSubscriptionQueryRequestSchema +// MatchSectionCodesJSONRequestBody defines body for MatchSectionCodes for application/json ContentType. +type MatchSectionCodesJSONRequestBody = MatchSectionCodesRequestSchema // CreateCommentJSONRequestBody defines body for CreateComment for application/json ContentType. type CreateCommentJSONRequestBody = CommentCreateRequestSchema @@ -7510,35 +7501,50 @@ type UpdateCommentJSONRequestBody = CommentUpdateRequestSchema // AddCommentReactionJSONRequestBody defines body for AddCommentReaction for application/json ContentType. type AddCommentReactionJSONRequestBody = CommentReactionRequestSchema -// PinDashboardLinkFormdataRequestBody defines body for PinDashboardLink for application/x-www-form-urlencoded ContentType. -type PinDashboardLinkFormdataRequestBody = DashboardLinkPinRequestSchema - -// PostApiDashboardLinksPinBatchJSONRequestBody defines body for PostApiDashboardLinksPinBatch for application/json ContentType. -type PostApiDashboardLinksPinBatchJSONRequestBody = DashboardLinkPinBatchRequestSchema - -// RecordDashboardLinkVisitFormdataRequestBody defines body for RecordDashboardLinkVisit for application/x-www-form-urlencoded ContentType. -type RecordDashboardLinkVisitFormdataRequestBody = DashboardLinkVisitRequestSchema - // UpsertDescriptionJSONRequestBody defines body for UpsertDescription for application/json ContentType. type UpsertDescriptionJSONRequestBody = DescriptionUpsertRequestSchema // CreateHomeworkJSONRequestBody defines body for CreateHomework for application/json ContentType. type CreateHomeworkJSONRequestBody = HomeworkCreateRequestSchema -// PutApiHomeworksCompletionsJSONRequestBody defines body for PutApiHomeworksCompletions for application/json ContentType. -type PutApiHomeworksCompletionsJSONRequestBody = HomeworkCompletionBatchRequestSchema - // UpdateHomeworkJSONRequestBody defines body for UpdateHomework for application/json ContentType. type UpdateHomeworkJSONRequestBody = HomeworkUpdateRequestSchema +// SetBusPreferencesJSONRequestBody defines body for SetBusPreferences for application/json ContentType. +type SetBusPreferencesJSONRequestBody = BusPreferenceRequestSchema + +// PutApiHomeworksCompletionsJSONRequestBody defines body for PutApiHomeworksCompletions for application/json ContentType. +type PutApiHomeworksCompletionsJSONRequestBody = HomeworkCompletionBatchRequestSchema + // SetHomeworkCompletionJSONRequestBody defines body for SetHomeworkCompletion for application/json ContentType. type SetHomeworkCompletionJSONRequestBody = HomeworkCompletionRequestSchema -// SetLocaleJSONRequestBody defines body for SetLocale for application/json ContentType. -type SetLocaleJSONRequestBody = LocaleUpdateRequestSchema +// PinDashboardLinkFormdataRequestBody defines body for PinDashboardLink for application/x-www-form-urlencoded ContentType. +type PinDashboardLinkFormdataRequestBody = DashboardLinkPinRequestSchema -// MatchSectionCodesJSONRequestBody defines body for MatchSectionCodes for application/json ContentType. -type MatchSectionCodesJSONRequestBody = MatchSectionCodesRequestSchema +// PostApiWorkspaceLinksPinBatchJSONRequestBody defines body for PostApiWorkspaceLinksPinBatch for application/json ContentType. +type PostApiWorkspaceLinksPinBatchJSONRequestBody = DashboardLinkPinBatchRequestSchema + +// RecordDashboardLinkVisitFormdataRequestBody defines body for RecordDashboardLinkVisit for application/x-www-form-urlencoded ContentType. +type RecordDashboardLinkVisitFormdataRequestBody = DashboardLinkVisitRequestSchema + +// DeleteApiWorkspaceSubscriptionsJSONRequestBody defines body for DeleteApiWorkspaceSubscriptions for application/json ContentType. +type DeleteApiWorkspaceSubscriptionsJSONRequestBody = CalendarSubscriptionRemoveRequestSchema + +// AppendCalendarSubscriptionSectionsJSONRequestBody defines body for AppendCalendarSubscriptionSections for application/json ContentType. +type AppendCalendarSubscriptionSectionsJSONRequestBody = CalendarSubscriptionAppendRequestSchema + +// SetCalendarSubscriptionJSONRequestBody defines body for SetCalendarSubscription for application/json ContentType. +type SetCalendarSubscriptionJSONRequestBody = CalendarSubscriptionCreateRequestSchema + +// BatchUpdateCalendarSubscriptionJSONRequestBody defines body for BatchUpdateCalendarSubscription for application/json ContentType. +type BatchUpdateCalendarSubscriptionJSONRequestBody = CalendarSubscriptionBatchRequestSchema + +// PostApiWorkspaceSubscriptionsImportCodesJSONRequestBody defines body for PostApiWorkspaceSubscriptionsImportCodes for application/json ContentType. +type PostApiWorkspaceSubscriptionsImportCodesJSONRequestBody = MatchSectionCodesRequestSchema + +// QueryCalendarSubscriptionSectionsJSONRequestBody defines body for QueryCalendarSubscriptionSections for application/json ContentType. +type QueryCalendarSubscriptionSectionsJSONRequestBody = CalendarSubscriptionQueryRequestSchema // CreateTodoJSONRequestBody defines body for CreateTodo for application/json ContentType. type CreateTodoJSONRequestBody = TodoCreateRequestSchema @@ -10394,6 +10400,17 @@ func WithRequestEditorFn(fn RequestEditorFn) ClientOption { // The interface specification for the client above. type ClientInterface interface { + // GetMe request + GetMe(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + + // SetLocaleWithBody request with any body + SetLocaleWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + SetLocale(ctx context.Context, body SetLocaleJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetApiAccountProfile request + GetApiAccountProfile(ctx context.Context, params *GetApiAccountProfileParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListAdminComments request ListAdminComments(ctx context.Context, params *ListAdminCommentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -10438,52 +10455,58 @@ type ClientInterface interface { // QueryBus request QueryBus(ctx context.Context, params *QueryBusParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetApiBusNext request - GetApiBusNext(ctx context.Context, params *GetApiBusNextParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetApiCatalogBusNext request + GetApiCatalogBusNext(ctx context.Context, params *GetApiCatalogBusNextParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetBusPreferences request - GetBusPreferences(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetApiBusRoutes request + GetApiBusRoutes(ctx context.Context, params *GetApiBusRoutesParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // SetBusPreferencesWithBody request with any body - SetBusPreferencesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListCourses request + ListCourses(ctx context.Context, params *ListCoursesParams, reqEditors ...RequestEditorFn) (*http.Response, error) - SetBusPreferences(ctx context.Context, body SetBusPreferencesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetCourse request + GetCourse(ctx context.Context, jwId int64, params *GetCourseParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetApiBusRoutes request - GetApiBusRoutes(ctx context.Context, params *GetApiBusRoutesParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetMetadata request + GetMetadata(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) - // DeleteApiCalendarSubscriptionsWithBody request with any body - DeleteApiCalendarSubscriptionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListSchedules request + ListSchedules(ctx context.Context, params *ListSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) - DeleteApiCalendarSubscriptions(ctx context.Context, body DeleteApiCalendarSubscriptionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListSections request + ListSections(ctx context.Context, params *ListSectionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // AppendCalendarSubscriptionSectionsWithBody request with any body - AppendCalendarSubscriptionSectionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetSectionsCalendar request + GetSectionsCalendar(ctx context.Context, params *GetSectionsCalendarParams, reqEditors ...RequestEditorFn) (*http.Response, error) - AppendCalendarSubscriptionSections(ctx context.Context, body AppendCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // MatchSectionCodesWithBody request with any body + MatchSectionCodesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - // SetCalendarSubscriptionWithBody request with any body - SetCalendarSubscriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + MatchSectionCodes(ctx context.Context, body MatchSectionCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - SetCalendarSubscription(ctx context.Context, body SetCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetSection request + GetSection(ctx context.Context, jwId int64, params *GetSectionParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // BatchUpdateCalendarSubscriptionWithBody request with any body - BatchUpdateCalendarSubscriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetSectionCalendar request + GetSectionCalendar(ctx context.Context, jwId int64, reqEditors ...RequestEditorFn) (*http.Response, error) - BatchUpdateCalendarSubscription(ctx context.Context, body BatchUpdateCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetSectionScheduleGroups request + GetSectionScheduleGroups(ctx context.Context, jwId int64, params *GetSectionScheduleGroupsParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetCurrentCalendarSubscription request - GetCurrentCalendarSubscription(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetSectionSchedules request + GetSectionSchedules(ctx context.Context, jwId int64, params *GetSectionSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // PostApiCalendarSubscriptionsImportCodesWithBody request with any body - PostApiCalendarSubscriptionsImportCodesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListSemesters request + ListSemesters(ctx context.Context, params *ListSemestersParams, reqEditors ...RequestEditorFn) (*http.Response, error) - PostApiCalendarSubscriptionsImportCodes(ctx context.Context, body PostApiCalendarSubscriptionsImportCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetCurrentSemester request + GetCurrentSemester(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) - // QueryCalendarSubscriptionSectionsWithBody request with any body - QueryCalendarSubscriptionSectionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListTeachers request + ListTeachers(ctx context.Context, params *ListTeachersParams, reqEditors ...RequestEditorFn) (*http.Response, error) - QueryCalendarSubscriptionSections(ctx context.Context, body QueryCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetTeacher request + GetTeacher(ctx context.Context, id int64, params *GetTeacherParams, reqEditors ...RequestEditorFn) (*http.Response, error) // ListComments request ListComments(ctx context.Context, params *ListCommentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -10517,30 +10540,6 @@ type ClientInterface interface { AddCommentReaction(ctx context.Context, id string, body AddCommentReactionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // ListCourses request - ListCourses(ctx context.Context, params *ListCoursesParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // GetCourse request - GetCourse(ctx context.Context, jwId int64, params *GetCourseParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // PinDashboardLinkWithBody request with any body - PinDashboardLinkWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - - PinDashboardLinkWithFormdataBody(ctx context.Context, body PinDashboardLinkFormdataRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - - // PostApiDashboardLinksPinBatchWithBody request with any body - PostApiDashboardLinksPinBatchWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - - PostApiDashboardLinksPinBatch(ctx context.Context, body PostApiDashboardLinksPinBatchJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - - // VisitDashboardLink request - VisitDashboardLink(ctx context.Context, params *VisitDashboardLinkParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // RecordDashboardLinkVisitWithBody request with any body - RecordDashboardLinkVisitWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - - RecordDashboardLinkVisitWithFormdataBody(ctx context.Context, body RecordDashboardLinkVisitFormdataRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetDescription request GetDescription(ctx context.Context, params *GetDescriptionParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -10557,11 +10556,6 @@ type ClientInterface interface { CreateHomework(ctx context.Context, body CreateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // PutApiHomeworksCompletionsWithBody request with any body - PutApiHomeworksCompletionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - - PutApiHomeworksCompletions(ctx context.Context, body PutApiHomeworksCompletionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // DeleteHomework request DeleteHomework(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -10570,71 +10564,89 @@ type ClientInterface interface { UpdateHomework(ctx context.Context, id string, body UpdateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // SetHomeworkCompletionWithBody request with any body - SetHomeworkCompletionWithBody(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetUserCalendar request + GetUserCalendar(ctx context.Context, userId string, params *GetUserCalendarParams, reqEditors ...RequestEditorFn) (*http.Response, error) - SetHomeworkCompletion(ctx context.Context, id string, body SetHomeworkCompletionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - - // SetLocaleWithBody request with any body - SetLocaleWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetOpenApiSpec request + GetOpenApiSpec(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) - SetLocale(ctx context.Context, body SetLocaleJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetBusPreferences request + GetBusPreferences(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetMe request - GetMe(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + // SetBusPreferencesWithBody request with any body + SetBusPreferencesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetApiMeOverview request - GetApiMeOverview(ctx context.Context, params *GetApiMeOverviewParams, reqEditors ...RequestEditorFn) (*http.Response, error) + SetBusPreferences(ctx context.Context, body SetBusPreferencesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) // GetSubscribedHomeworks request GetSubscribedHomeworks(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetApiMeSubscriptionsSchedules request - GetApiMeSubscriptionsSchedules(ctx context.Context, params *GetApiMeSubscriptionsSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // PutApiHomeworksCompletionsWithBody request with any body + PutApiHomeworksCompletionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetMetadata request - GetMetadata(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + PutApiHomeworksCompletions(ctx context.Context, body PutApiHomeworksCompletionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetOpenApiSpec request - GetOpenApiSpec(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + // SetHomeworkCompletionWithBody request with any body + SetHomeworkCompletionWithBody(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - // ListSchedules request - ListSchedules(ctx context.Context, params *ListSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) + SetHomeworkCompletion(ctx context.Context, id string, body SetHomeworkCompletionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // ListSections request - ListSections(ctx context.Context, params *ListSectionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // PinDashboardLinkWithBody request with any body + PinDashboardLinkWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetSectionsCalendar request - GetSectionsCalendar(ctx context.Context, params *GetSectionsCalendarParams, reqEditors ...RequestEditorFn) (*http.Response, error) + PinDashboardLinkWithFormdataBody(ctx context.Context, body PinDashboardLinkFormdataRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // MatchSectionCodesWithBody request with any body - MatchSectionCodesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // PostApiWorkspaceLinksPinBatchWithBody request with any body + PostApiWorkspaceLinksPinBatchWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - MatchSectionCodes(ctx context.Context, body MatchSectionCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + PostApiWorkspaceLinksPinBatch(ctx context.Context, body PostApiWorkspaceLinksPinBatchJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetSection request - GetSection(ctx context.Context, jwId int64, params *GetSectionParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // VisitDashboardLink request + VisitDashboardLink(ctx context.Context, params *VisitDashboardLinkParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetSectionCalendar request - GetSectionCalendar(ctx context.Context, jwId int64, reqEditors ...RequestEditorFn) (*http.Response, error) + // RecordDashboardLinkVisitWithBody request with any body + RecordDashboardLinkVisitWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetSectionScheduleGroups request - GetSectionScheduleGroups(ctx context.Context, jwId int64, params *GetSectionScheduleGroupsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + RecordDashboardLinkVisitWithFormdataBody(ctx context.Context, body RecordDashboardLinkVisitFormdataRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetSectionSchedules request - GetSectionSchedules(ctx context.Context, jwId int64, params *GetSectionSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetApiMeOverview request + GetApiMeOverview(ctx context.Context, params *GetApiMeOverviewParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // ListSemesters request - ListSemesters(ctx context.Context, params *ListSemestersParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetApiMeSubscriptionsSchedules request + GetApiMeSubscriptionsSchedules(ctx context.Context, params *GetApiMeSubscriptionsSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetCurrentSemester request - GetCurrentSemester(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + // DeleteApiWorkspaceSubscriptionsWithBody request with any body + DeleteApiWorkspaceSubscriptionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - // ListTeachers request - ListTeachers(ctx context.Context, params *ListTeachersParams, reqEditors ...RequestEditorFn) (*http.Response, error) + DeleteApiWorkspaceSubscriptions(ctx context.Context, body DeleteApiWorkspaceSubscriptionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetTeacher request - GetTeacher(ctx context.Context, id int64, params *GetTeacherParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // AppendCalendarSubscriptionSectionsWithBody request with any body + AppendCalendarSubscriptionSectionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + AppendCalendarSubscriptionSections(ctx context.Context, body AppendCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // SetCalendarSubscriptionWithBody request with any body + SetCalendarSubscriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + SetCalendarSubscription(ctx context.Context, body SetCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // BatchUpdateCalendarSubscriptionWithBody request with any body + BatchUpdateCalendarSubscriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + BatchUpdateCalendarSubscription(ctx context.Context, body BatchUpdateCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetCurrentCalendarSubscription request + GetCurrentCalendarSubscription(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PostApiWorkspaceSubscriptionsImportCodesWithBody request with any body + PostApiWorkspaceSubscriptionsImportCodesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PostApiWorkspaceSubscriptionsImportCodes(ctx context.Context, body PostApiWorkspaceSubscriptionsImportCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // QueryCalendarSubscriptionSectionsWithBody request with any body + QueryCalendarSubscriptionSectionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + QueryCalendarSubscriptionSections(ctx context.Context, body QueryCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) // ListTodos request ListTodos(ctx context.Context, params *ListTodosParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -10688,9 +10700,54 @@ type ClientInterface interface { // DownloadUpload request DownloadUpload(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*http.Response, error) +} - // GetUserCalendar request - GetUserCalendar(ctx context.Context, userId string, params *GetUserCalendarParams, reqEditors ...RequestEditorFn) (*http.Response, error) +func (c *Client) GetMe(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetMeRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) SetLocaleWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetLocaleRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) SetLocale(ctx context.Context, body SetLocaleJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetLocaleRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetApiAccountProfile(ctx context.Context, params *GetApiAccountProfileParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetApiAccountProfileRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) } func (c *Client) ListAdminComments(ctx context.Context, params *ListAdminCommentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { @@ -10885,8 +10942,8 @@ func (c *Client) QueryBus(ctx context.Context, params *QueryBusParams, reqEditor return c.Client.Do(req) } -func (c *Client) GetApiBusNext(ctx context.Context, params *GetApiBusNextParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetApiBusNextRequest(c.Server, params) +func (c *Client) GetApiCatalogBusNext(ctx context.Context, params *GetApiCatalogBusNextParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetApiCatalogBusNextRequest(c.Server, params) if err != nil { return nil, err } @@ -10897,8 +10954,8 @@ func (c *Client) GetApiBusNext(ctx context.Context, params *GetApiBusNextParams, return c.Client.Do(req) } -func (c *Client) GetBusPreferences(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetBusPreferencesRequest(c.Server) +func (c *Client) GetApiBusRoutes(ctx context.Context, params *GetApiBusRoutesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetApiBusRoutesRequest(c.Server, params) if err != nil { return nil, err } @@ -10909,8 +10966,8 @@ func (c *Client) GetBusPreferences(ctx context.Context, reqEditors ...RequestEdi return c.Client.Do(req) } -func (c *Client) SetBusPreferencesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewSetBusPreferencesRequestWithBody(c.Server, contentType, body) +func (c *Client) ListCourses(ctx context.Context, params *ListCoursesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListCoursesRequest(c.Server, params) if err != nil { return nil, err } @@ -10921,8 +10978,8 @@ func (c *Client) SetBusPreferencesWithBody(ctx context.Context, contentType stri return c.Client.Do(req) } -func (c *Client) SetBusPreferences(ctx context.Context, body SetBusPreferencesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewSetBusPreferencesRequest(c.Server, body) +func (c *Client) GetCourse(ctx context.Context, jwId int64, params *GetCourseParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetCourseRequest(c.Server, jwId, params) if err != nil { return nil, err } @@ -10933,8 +10990,8 @@ func (c *Client) SetBusPreferences(ctx context.Context, body SetBusPreferencesJS return c.Client.Do(req) } -func (c *Client) GetApiBusRoutes(ctx context.Context, params *GetApiBusRoutesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetApiBusRoutesRequest(c.Server, params) +func (c *Client) GetMetadata(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetMetadataRequest(c.Server) if err != nil { return nil, err } @@ -10945,8 +11002,8 @@ func (c *Client) GetApiBusRoutes(ctx context.Context, params *GetApiBusRoutesPar return c.Client.Do(req) } -func (c *Client) DeleteApiCalendarSubscriptionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewDeleteApiCalendarSubscriptionsRequestWithBody(c.Server, contentType, body) +func (c *Client) ListSchedules(ctx context.Context, params *ListSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListSchedulesRequest(c.Server, params) if err != nil { return nil, err } @@ -10957,8 +11014,8 @@ func (c *Client) DeleteApiCalendarSubscriptionsWithBody(ctx context.Context, con return c.Client.Do(req) } -func (c *Client) DeleteApiCalendarSubscriptions(ctx context.Context, body DeleteApiCalendarSubscriptionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewDeleteApiCalendarSubscriptionsRequest(c.Server, body) +func (c *Client) ListSections(ctx context.Context, params *ListSectionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListSectionsRequest(c.Server, params) if err != nil { return nil, err } @@ -10969,8 +11026,8 @@ func (c *Client) DeleteApiCalendarSubscriptions(ctx context.Context, body Delete return c.Client.Do(req) } -func (c *Client) AppendCalendarSubscriptionSectionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewAppendCalendarSubscriptionSectionsRequestWithBody(c.Server, contentType, body) +func (c *Client) GetSectionsCalendar(ctx context.Context, params *GetSectionsCalendarParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetSectionsCalendarRequest(c.Server, params) if err != nil { return nil, err } @@ -10981,8 +11038,8 @@ func (c *Client) AppendCalendarSubscriptionSectionsWithBody(ctx context.Context, return c.Client.Do(req) } -func (c *Client) AppendCalendarSubscriptionSections(ctx context.Context, body AppendCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewAppendCalendarSubscriptionSectionsRequest(c.Server, body) +func (c *Client) MatchSectionCodesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewMatchSectionCodesRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -10993,8 +11050,8 @@ func (c *Client) AppendCalendarSubscriptionSections(ctx context.Context, body Ap return c.Client.Do(req) } -func (c *Client) SetCalendarSubscriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewSetCalendarSubscriptionRequestWithBody(c.Server, contentType, body) +func (c *Client) MatchSectionCodes(ctx context.Context, body MatchSectionCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewMatchSectionCodesRequest(c.Server, body) if err != nil { return nil, err } @@ -11005,8 +11062,8 @@ func (c *Client) SetCalendarSubscriptionWithBody(ctx context.Context, contentTyp return c.Client.Do(req) } -func (c *Client) SetCalendarSubscription(ctx context.Context, body SetCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewSetCalendarSubscriptionRequest(c.Server, body) +func (c *Client) GetSection(ctx context.Context, jwId int64, params *GetSectionParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetSectionRequest(c.Server, jwId, params) if err != nil { return nil, err } @@ -11017,8 +11074,8 @@ func (c *Client) SetCalendarSubscription(ctx context.Context, body SetCalendarSu return c.Client.Do(req) } -func (c *Client) BatchUpdateCalendarSubscriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewBatchUpdateCalendarSubscriptionRequestWithBody(c.Server, contentType, body) +func (c *Client) GetSectionCalendar(ctx context.Context, jwId int64, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetSectionCalendarRequest(c.Server, jwId) if err != nil { return nil, err } @@ -11029,8 +11086,8 @@ func (c *Client) BatchUpdateCalendarSubscriptionWithBody(ctx context.Context, co return c.Client.Do(req) } -func (c *Client) BatchUpdateCalendarSubscription(ctx context.Context, body BatchUpdateCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewBatchUpdateCalendarSubscriptionRequest(c.Server, body) +func (c *Client) GetSectionScheduleGroups(ctx context.Context, jwId int64, params *GetSectionScheduleGroupsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetSectionScheduleGroupsRequest(c.Server, jwId, params) if err != nil { return nil, err } @@ -11041,8 +11098,8 @@ func (c *Client) BatchUpdateCalendarSubscription(ctx context.Context, body Batch return c.Client.Do(req) } -func (c *Client) GetCurrentCalendarSubscription(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetCurrentCalendarSubscriptionRequest(c.Server) +func (c *Client) GetSectionSchedules(ctx context.Context, jwId int64, params *GetSectionSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetSectionSchedulesRequest(c.Server, jwId, params) if err != nil { return nil, err } @@ -11053,8 +11110,8 @@ func (c *Client) GetCurrentCalendarSubscription(ctx context.Context, reqEditors return c.Client.Do(req) } -func (c *Client) PostApiCalendarSubscriptionsImportCodesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewPostApiCalendarSubscriptionsImportCodesRequestWithBody(c.Server, contentType, body) +func (c *Client) ListSemesters(ctx context.Context, params *ListSemestersParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListSemestersRequest(c.Server, params) if err != nil { return nil, err } @@ -11065,8 +11122,8 @@ func (c *Client) PostApiCalendarSubscriptionsImportCodesWithBody(ctx context.Con return c.Client.Do(req) } -func (c *Client) PostApiCalendarSubscriptionsImportCodes(ctx context.Context, body PostApiCalendarSubscriptionsImportCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewPostApiCalendarSubscriptionsImportCodesRequest(c.Server, body) +func (c *Client) GetCurrentSemester(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetCurrentSemesterRequest(c.Server) if err != nil { return nil, err } @@ -11077,8 +11134,8 @@ func (c *Client) PostApiCalendarSubscriptionsImportCodes(ctx context.Context, bo return c.Client.Do(req) } -func (c *Client) QueryCalendarSubscriptionSectionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewQueryCalendarSubscriptionSectionsRequestWithBody(c.Server, contentType, body) +func (c *Client) ListTeachers(ctx context.Context, params *ListTeachersParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListTeachersRequest(c.Server, params) if err != nil { return nil, err } @@ -11089,8 +11146,8 @@ func (c *Client) QueryCalendarSubscriptionSectionsWithBody(ctx context.Context, return c.Client.Do(req) } -func (c *Client) QueryCalendarSubscriptionSections(ctx context.Context, body QueryCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewQueryCalendarSubscriptionSectionsRequest(c.Server, body) +func (c *Client) GetTeacher(ctx context.Context, id int64, params *GetTeacherParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetTeacherRequest(c.Server, id, params) if err != nil { return nil, err } @@ -11245,8 +11302,8 @@ func (c *Client) AddCommentReaction(ctx context.Context, id string, body AddComm return c.Client.Do(req) } -func (c *Client) ListCourses(ctx context.Context, params *ListCoursesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListCoursesRequest(c.Server, params) +func (c *Client) GetDescription(ctx context.Context, params *GetDescriptionParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetDescriptionRequest(c.Server, params) if err != nil { return nil, err } @@ -11257,8 +11314,8 @@ func (c *Client) ListCourses(ctx context.Context, params *ListCoursesParams, req return c.Client.Do(req) } -func (c *Client) GetCourse(ctx context.Context, jwId int64, params *GetCourseParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetCourseRequest(c.Server, jwId, params) +func (c *Client) UpsertDescriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpsertDescriptionRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11269,8 +11326,8 @@ func (c *Client) GetCourse(ctx context.Context, jwId int64, params *GetCoursePar return c.Client.Do(req) } -func (c *Client) PinDashboardLinkWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewPinDashboardLinkRequestWithBody(c.Server, contentType, body) +func (c *Client) UpsertDescription(ctx context.Context, body UpsertDescriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpsertDescriptionRequest(c.Server, body) if err != nil { return nil, err } @@ -11281,8 +11338,8 @@ func (c *Client) PinDashboardLinkWithBody(ctx context.Context, contentType strin return c.Client.Do(req) } -func (c *Client) PinDashboardLinkWithFormdataBody(ctx context.Context, body PinDashboardLinkFormdataRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewPinDashboardLinkRequestWithFormdataBody(c.Server, body) +func (c *Client) ListHomeworks(ctx context.Context, params *ListHomeworksParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListHomeworksRequest(c.Server, params) if err != nil { return nil, err } @@ -11293,8 +11350,8 @@ func (c *Client) PinDashboardLinkWithFormdataBody(ctx context.Context, body PinD return c.Client.Do(req) } -func (c *Client) PostApiDashboardLinksPinBatchWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewPostApiDashboardLinksPinBatchRequestWithBody(c.Server, contentType, body) +func (c *Client) CreateHomeworkWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateHomeworkRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11305,8 +11362,8 @@ func (c *Client) PostApiDashboardLinksPinBatchWithBody(ctx context.Context, cont return c.Client.Do(req) } -func (c *Client) PostApiDashboardLinksPinBatch(ctx context.Context, body PostApiDashboardLinksPinBatchJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewPostApiDashboardLinksPinBatchRequest(c.Server, body) +func (c *Client) CreateHomework(ctx context.Context, body CreateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateHomeworkRequest(c.Server, body) if err != nil { return nil, err } @@ -11317,8 +11374,8 @@ func (c *Client) PostApiDashboardLinksPinBatch(ctx context.Context, body PostApi return c.Client.Do(req) } -func (c *Client) VisitDashboardLink(ctx context.Context, params *VisitDashboardLinkParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewVisitDashboardLinkRequest(c.Server, params) +func (c *Client) DeleteHomework(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteHomeworkRequest(c.Server, id) if err != nil { return nil, err } @@ -11329,8 +11386,8 @@ func (c *Client) VisitDashboardLink(ctx context.Context, params *VisitDashboardL return c.Client.Do(req) } -func (c *Client) RecordDashboardLinkVisitWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewRecordDashboardLinkVisitRequestWithBody(c.Server, contentType, body) +func (c *Client) UpdateHomeworkWithBody(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateHomeworkRequestWithBody(c.Server, id, contentType, body) if err != nil { return nil, err } @@ -11341,8 +11398,8 @@ func (c *Client) RecordDashboardLinkVisitWithBody(ctx context.Context, contentTy return c.Client.Do(req) } -func (c *Client) RecordDashboardLinkVisitWithFormdataBody(ctx context.Context, body RecordDashboardLinkVisitFormdataRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewRecordDashboardLinkVisitRequestWithFormdataBody(c.Server, body) +func (c *Client) UpdateHomework(ctx context.Context, id string, body UpdateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateHomeworkRequest(c.Server, id, body) if err != nil { return nil, err } @@ -11353,8 +11410,8 @@ func (c *Client) RecordDashboardLinkVisitWithFormdataBody(ctx context.Context, b return c.Client.Do(req) } -func (c *Client) GetDescription(ctx context.Context, params *GetDescriptionParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetDescriptionRequest(c.Server, params) +func (c *Client) GetUserCalendar(ctx context.Context, userId string, params *GetUserCalendarParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetUserCalendarRequest(c.Server, userId, params) if err != nil { return nil, err } @@ -11365,8 +11422,8 @@ func (c *Client) GetDescription(ctx context.Context, params *GetDescriptionParam return c.Client.Do(req) } -func (c *Client) UpsertDescriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUpsertDescriptionRequestWithBody(c.Server, contentType, body) +func (c *Client) GetOpenApiSpec(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetOpenApiSpecRequest(c.Server) if err != nil { return nil, err } @@ -11377,8 +11434,8 @@ func (c *Client) UpsertDescriptionWithBody(ctx context.Context, contentType stri return c.Client.Do(req) } -func (c *Client) UpsertDescription(ctx context.Context, body UpsertDescriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUpsertDescriptionRequest(c.Server, body) +func (c *Client) GetBusPreferences(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetBusPreferencesRequest(c.Server) if err != nil { return nil, err } @@ -11389,8 +11446,8 @@ func (c *Client) UpsertDescription(ctx context.Context, body UpsertDescriptionJS return c.Client.Do(req) } -func (c *Client) ListHomeworks(ctx context.Context, params *ListHomeworksParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListHomeworksRequest(c.Server, params) +func (c *Client) SetBusPreferencesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetBusPreferencesRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11401,8 +11458,8 @@ func (c *Client) ListHomeworks(ctx context.Context, params *ListHomeworksParams, return c.Client.Do(req) } -func (c *Client) CreateHomeworkWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateHomeworkRequestWithBody(c.Server, contentType, body) +func (c *Client) SetBusPreferences(ctx context.Context, body SetBusPreferencesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetBusPreferencesRequest(c.Server, body) if err != nil { return nil, err } @@ -11413,8 +11470,8 @@ func (c *Client) CreateHomeworkWithBody(ctx context.Context, contentType string, return c.Client.Do(req) } -func (c *Client) CreateHomework(ctx context.Context, body CreateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateHomeworkRequest(c.Server, body) +func (c *Client) GetSubscribedHomeworks(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetSubscribedHomeworksRequest(c.Server) if err != nil { return nil, err } @@ -11449,8 +11506,8 @@ func (c *Client) PutApiHomeworksCompletions(ctx context.Context, body PutApiHome return c.Client.Do(req) } -func (c *Client) DeleteHomework(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewDeleteHomeworkRequest(c.Server, id) +func (c *Client) SetHomeworkCompletionWithBody(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetHomeworkCompletionRequestWithBody(c.Server, id, contentType, body) if err != nil { return nil, err } @@ -11461,8 +11518,8 @@ func (c *Client) DeleteHomework(ctx context.Context, id string, reqEditors ...Re return c.Client.Do(req) } -func (c *Client) UpdateHomeworkWithBody(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUpdateHomeworkRequestWithBody(c.Server, id, contentType, body) +func (c *Client) SetHomeworkCompletion(ctx context.Context, id string, body SetHomeworkCompletionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetHomeworkCompletionRequest(c.Server, id, body) if err != nil { return nil, err } @@ -11473,8 +11530,8 @@ func (c *Client) UpdateHomeworkWithBody(ctx context.Context, id string, contentT return c.Client.Do(req) } -func (c *Client) UpdateHomework(ctx context.Context, id string, body UpdateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUpdateHomeworkRequest(c.Server, id, body) +func (c *Client) PinDashboardLinkWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPinDashboardLinkRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11485,8 +11542,8 @@ func (c *Client) UpdateHomework(ctx context.Context, id string, body UpdateHomew return c.Client.Do(req) } -func (c *Client) SetHomeworkCompletionWithBody(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewSetHomeworkCompletionRequestWithBody(c.Server, id, contentType, body) +func (c *Client) PinDashboardLinkWithFormdataBody(ctx context.Context, body PinDashboardLinkFormdataRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPinDashboardLinkRequestWithFormdataBody(c.Server, body) if err != nil { return nil, err } @@ -11497,8 +11554,8 @@ func (c *Client) SetHomeworkCompletionWithBody(ctx context.Context, id string, c return c.Client.Do(req) } -func (c *Client) SetHomeworkCompletion(ctx context.Context, id string, body SetHomeworkCompletionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewSetHomeworkCompletionRequest(c.Server, id, body) +func (c *Client) PostApiWorkspaceLinksPinBatchWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPostApiWorkspaceLinksPinBatchRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11509,8 +11566,8 @@ func (c *Client) SetHomeworkCompletion(ctx context.Context, id string, body SetH return c.Client.Do(req) } -func (c *Client) SetLocaleWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewSetLocaleRequestWithBody(c.Server, contentType, body) +func (c *Client) PostApiWorkspaceLinksPinBatch(ctx context.Context, body PostApiWorkspaceLinksPinBatchJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPostApiWorkspaceLinksPinBatchRequest(c.Server, body) if err != nil { return nil, err } @@ -11521,8 +11578,8 @@ func (c *Client) SetLocaleWithBody(ctx context.Context, contentType string, body return c.Client.Do(req) } -func (c *Client) SetLocale(ctx context.Context, body SetLocaleJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewSetLocaleRequest(c.Server, body) +func (c *Client) VisitDashboardLink(ctx context.Context, params *VisitDashboardLinkParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewVisitDashboardLinkRequest(c.Server, params) if err != nil { return nil, err } @@ -11533,8 +11590,8 @@ func (c *Client) SetLocale(ctx context.Context, body SetLocaleJSONRequestBody, r return c.Client.Do(req) } -func (c *Client) GetMe(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetMeRequest(c.Server) +func (c *Client) RecordDashboardLinkVisitWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewRecordDashboardLinkVisitRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11545,8 +11602,8 @@ func (c *Client) GetMe(ctx context.Context, reqEditors ...RequestEditorFn) (*htt return c.Client.Do(req) } -func (c *Client) GetApiMeOverview(ctx context.Context, params *GetApiMeOverviewParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetApiMeOverviewRequest(c.Server, params) +func (c *Client) RecordDashboardLinkVisitWithFormdataBody(ctx context.Context, body RecordDashboardLinkVisitFormdataRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewRecordDashboardLinkVisitRequestWithFormdataBody(c.Server, body) if err != nil { return nil, err } @@ -11557,8 +11614,8 @@ func (c *Client) GetApiMeOverview(ctx context.Context, params *GetApiMeOverviewP return c.Client.Do(req) } -func (c *Client) GetSubscribedHomeworks(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetSubscribedHomeworksRequest(c.Server) +func (c *Client) GetApiMeOverview(ctx context.Context, params *GetApiMeOverviewParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetApiMeOverviewRequest(c.Server, params) if err != nil { return nil, err } @@ -11581,32 +11638,8 @@ func (c *Client) GetApiMeSubscriptionsSchedules(ctx context.Context, params *Get return c.Client.Do(req) } -func (c *Client) GetMetadata(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetMetadataRequest(c.Server) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - if err := c.applyEditors(ctx, req, reqEditors); err != nil { - return nil, err - } - return c.Client.Do(req) -} - -func (c *Client) GetOpenApiSpec(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetOpenApiSpecRequest(c.Server) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - if err := c.applyEditors(ctx, req, reqEditors); err != nil { - return nil, err - } - return c.Client.Do(req) -} - -func (c *Client) ListSchedules(ctx context.Context, params *ListSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListSchedulesRequest(c.Server, params) +func (c *Client) DeleteApiWorkspaceSubscriptionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteApiWorkspaceSubscriptionsRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11617,8 +11650,8 @@ func (c *Client) ListSchedules(ctx context.Context, params *ListSchedulesParams, return c.Client.Do(req) } -func (c *Client) ListSections(ctx context.Context, params *ListSectionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListSectionsRequest(c.Server, params) +func (c *Client) DeleteApiWorkspaceSubscriptions(ctx context.Context, body DeleteApiWorkspaceSubscriptionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteApiWorkspaceSubscriptionsRequest(c.Server, body) if err != nil { return nil, err } @@ -11629,8 +11662,8 @@ func (c *Client) ListSections(ctx context.Context, params *ListSectionsParams, r return c.Client.Do(req) } -func (c *Client) GetSectionsCalendar(ctx context.Context, params *GetSectionsCalendarParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetSectionsCalendarRequest(c.Server, params) +func (c *Client) AppendCalendarSubscriptionSectionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAppendCalendarSubscriptionSectionsRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11641,8 +11674,8 @@ func (c *Client) GetSectionsCalendar(ctx context.Context, params *GetSectionsCal return c.Client.Do(req) } -func (c *Client) MatchSectionCodesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewMatchSectionCodesRequestWithBody(c.Server, contentType, body) +func (c *Client) AppendCalendarSubscriptionSections(ctx context.Context, body AppendCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewAppendCalendarSubscriptionSectionsRequest(c.Server, body) if err != nil { return nil, err } @@ -11653,8 +11686,8 @@ func (c *Client) MatchSectionCodesWithBody(ctx context.Context, contentType stri return c.Client.Do(req) } -func (c *Client) MatchSectionCodes(ctx context.Context, body MatchSectionCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewMatchSectionCodesRequest(c.Server, body) +func (c *Client) SetCalendarSubscriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetCalendarSubscriptionRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11665,8 +11698,8 @@ func (c *Client) MatchSectionCodes(ctx context.Context, body MatchSectionCodesJS return c.Client.Do(req) } -func (c *Client) GetSection(ctx context.Context, jwId int64, params *GetSectionParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetSectionRequest(c.Server, jwId, params) +func (c *Client) SetCalendarSubscription(ctx context.Context, body SetCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetCalendarSubscriptionRequest(c.Server, body) if err != nil { return nil, err } @@ -11677,8 +11710,8 @@ func (c *Client) GetSection(ctx context.Context, jwId int64, params *GetSectionP return c.Client.Do(req) } -func (c *Client) GetSectionCalendar(ctx context.Context, jwId int64, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetSectionCalendarRequest(c.Server, jwId) +func (c *Client) BatchUpdateCalendarSubscriptionWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewBatchUpdateCalendarSubscriptionRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11689,8 +11722,8 @@ func (c *Client) GetSectionCalendar(ctx context.Context, jwId int64, reqEditors return c.Client.Do(req) } -func (c *Client) GetSectionScheduleGroups(ctx context.Context, jwId int64, params *GetSectionScheduleGroupsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetSectionScheduleGroupsRequest(c.Server, jwId, params) +func (c *Client) BatchUpdateCalendarSubscription(ctx context.Context, body BatchUpdateCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewBatchUpdateCalendarSubscriptionRequest(c.Server, body) if err != nil { return nil, err } @@ -11701,8 +11734,8 @@ func (c *Client) GetSectionScheduleGroups(ctx context.Context, jwId int64, param return c.Client.Do(req) } -func (c *Client) GetSectionSchedules(ctx context.Context, jwId int64, params *GetSectionSchedulesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetSectionSchedulesRequest(c.Server, jwId, params) +func (c *Client) GetCurrentCalendarSubscription(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetCurrentCalendarSubscriptionRequest(c.Server) if err != nil { return nil, err } @@ -11713,8 +11746,8 @@ func (c *Client) GetSectionSchedules(ctx context.Context, jwId int64, params *Ge return c.Client.Do(req) } -func (c *Client) ListSemesters(ctx context.Context, params *ListSemestersParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListSemestersRequest(c.Server, params) +func (c *Client) PostApiWorkspaceSubscriptionsImportCodesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPostApiWorkspaceSubscriptionsImportCodesRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11725,8 +11758,8 @@ func (c *Client) ListSemesters(ctx context.Context, params *ListSemestersParams, return c.Client.Do(req) } -func (c *Client) GetCurrentSemester(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetCurrentSemesterRequest(c.Server) +func (c *Client) PostApiWorkspaceSubscriptionsImportCodes(ctx context.Context, body PostApiWorkspaceSubscriptionsImportCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPostApiWorkspaceSubscriptionsImportCodesRequest(c.Server, body) if err != nil { return nil, err } @@ -11737,8 +11770,8 @@ func (c *Client) GetCurrentSemester(ctx context.Context, reqEditors ...RequestEd return c.Client.Do(req) } -func (c *Client) ListTeachers(ctx context.Context, params *ListTeachersParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListTeachersRequest(c.Server, params) +func (c *Client) QueryCalendarSubscriptionSectionsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewQueryCalendarSubscriptionSectionsRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -11749,8 +11782,8 @@ func (c *Client) ListTeachers(ctx context.Context, params *ListTeachersParams, r return c.Client.Do(req) } -func (c *Client) GetTeacher(ctx context.Context, id int64, params *GetTeacherParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetTeacherRequest(c.Server, id, params) +func (c *Client) QueryCalendarSubscriptionSections(ctx context.Context, body QueryCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewQueryCalendarSubscriptionSectionsRequest(c.Server, body) if err != nil { return nil, err } @@ -12001,16 +12034,136 @@ func (c *Client) DownloadUpload(ctx context.Context, id string, reqEditors ...Re return c.Client.Do(req) } -func (c *Client) GetUserCalendar(ctx context.Context, userId string, params *GetUserCalendarParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetUserCalendarRequest(c.Server, userId, params) +// NewGetMeRequest generates requests for GetMe +func NewGetMeRequest(server string) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) if err != nil { return nil, err } - req = req.WithContext(ctx) - if err := c.applyEditors(ctx, req, reqEditors); err != nil { + + operationPath := fmt.Sprintf("/api/account") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { return nil, err } - return c.Client.Do(req) + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewSetLocaleRequest calls the generic SetLocale builder with application/json body +func NewSetLocaleRequest(server string, body SetLocaleJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewSetLocaleRequestWithBody(server, "application/json", bodyReader) +} + +// NewSetLocaleRequestWithBody generates requests for SetLocale with any type of body +func NewSetLocaleRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/account/preferences") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewGetApiAccountProfileRequest generates requests for GetApiAccountProfile +func NewGetApiAccountProfileRequest(server string, params *GetApiAccountProfileParams) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/account/profile") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.Username != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "username", *params.Username, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.UserId != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "userId", *params.UserId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil } // NewListAdminCommentsRequest generates requests for ListAdminComments @@ -12734,7 +12887,7 @@ func NewQueryBusRequest(server string, params *QueryBusParams) (*http.Request, e return nil, err } - operationPath := fmt.Sprintf("/api/bus") + operationPath := fmt.Sprintf("/api/catalog/bus") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -12774,8 +12927,8 @@ func NewQueryBusRequest(server string, params *QueryBusParams) (*http.Request, e return req, nil } -// NewGetApiBusNextRequest generates requests for GetApiBusNext -func NewGetApiBusNextRequest(server string, params *GetApiBusNextParams) (*http.Request, error) { +// NewGetApiCatalogBusNextRequest generates requests for GetApiCatalogBusNext +func NewGetApiCatalogBusNextRequest(server string, params *GetApiCatalogBusNextParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -12783,7 +12936,7 @@ func NewGetApiBusNextRequest(server string, params *GetApiBusNextParams) (*http. return nil, err } - operationPath := fmt.Sprintf("/api/bus/next") + operationPath := fmt.Sprintf("/api/catalog/bus/next") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -12927,8 +13080,8 @@ func NewGetApiBusNextRequest(server string, params *GetApiBusNextParams) (*http. return req, nil } -// NewGetBusPreferencesRequest generates requests for GetBusPreferences -func NewGetBusPreferencesRequest(server string) (*http.Request, error) { +// NewGetApiBusRoutesRequest generates requests for GetApiBusRoutes +func NewGetApiBusRoutesRequest(server string, params *GetApiBusRoutesParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -12936,7 +13089,7 @@ func NewGetBusPreferencesRequest(server string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/api/bus/preferences") + operationPath := fmt.Sprintf("/api/catalog/bus/routes") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -12946,56 +13099,86 @@ func NewGetBusPreferencesRequest(server string) (*http.Request, error) { return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } + if params != nil { + queryValues := queryURL.Query() - return req, nil -} + if params.OriginCampusId != nil { -// NewSetBusPreferencesRequest calls the generic SetBusPreferences builder with application/json body -func NewSetBusPreferencesRequest(server string, body SetBusPreferencesJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewSetBusPreferencesRequestWithBody(server, "application/json", bodyReader) -} + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "originCampusId", *params.OriginCampusId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// NewSetBusPreferencesRequestWithBody generates requests for SetBusPreferences with any type of body -func NewSetBusPreferencesRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error + } - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + if params.DestinationCampusId != nil { - operationPath := fmt.Sprintf("/api/bus/preferences") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "destinationCampusId", *params.DestinationCampusId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err + } + + if params.VersionKey != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "versionKey", *params.VersionKey, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Locale != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewGetApiBusRoutesRequest generates requests for GetApiBusRoutes -func NewGetApiBusRoutesRequest(server string, params *GetApiBusRoutesParams) (*http.Request, error) { +// NewListCoursesRequest generates requests for ListCourses +func NewListCoursesRequest(server string, params *ListCoursesParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -13003,7 +13186,7 @@ func NewGetApiBusRoutesRequest(server string, params *GetApiBusRoutesParams) (*h return nil, err } - operationPath := fmt.Sprintf("/api/bus/routes") + operationPath := fmt.Sprintf("/api/catalog/courses") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -13016,9 +13199,9 @@ func NewGetApiBusRoutesRequest(server string, params *GetApiBusRoutesParams) (*h if params != nil { queryValues := queryURL.Query() - if params.OriginCampusId != nil { + if params.Locale != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "originCampusId", *params.OriginCampusId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13032,9 +13215,9 @@ func NewGetApiBusRoutesRequest(server string, params *GetApiBusRoutesParams) (*h } - if params.DestinationCampusId != nil { + if params.Search != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "destinationCampusId", *params.DestinationCampusId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "search", *params.Search, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13048,9 +13231,9 @@ func NewGetApiBusRoutesRequest(server string, params *GetApiBusRoutesParams) (*h } - if params.VersionKey != nil { + if params.EducationLevelId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "versionKey", *params.VersionKey, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "educationLevelId", *params.EducationLevelId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13064,9 +13247,9 @@ func NewGetApiBusRoutesRequest(server string, params *GetApiBusRoutesParams) (*h } - if params.Locale != nil { + if params.CategoryId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "categoryId", *params.CategoryId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13080,78 +13263,98 @@ func NewGetApiBusRoutesRequest(server string, params *GetApiBusRoutesParams) (*h } - queryURL.RawQuery = queryValues.Encode() - } + if params.ClassTypeId != nil { - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "classTypeId", *params.ClassTypeId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - return req, nil -} + } -// NewDeleteApiCalendarSubscriptionsRequest calls the generic DeleteApiCalendarSubscriptions builder with application/json body -func NewDeleteApiCalendarSubscriptionsRequest(server string, body DeleteApiCalendarSubscriptionsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewDeleteApiCalendarSubscriptionsRequestWithBody(server, "application/json", bodyReader) -} + if params.Page != nil { -// NewDeleteApiCalendarSubscriptionsRequestWithBody generates requests for DeleteApiCalendarSubscriptions with any type of body -func NewDeleteApiCalendarSubscriptionsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + } - operationPath := fmt.Sprintf("/api/calendar-subscriptions") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + if params.PageSize != nil { - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "pageSize", *params.PageSize, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() } - req, err := http.NewRequest("DELETE", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewAppendCalendarSubscriptionSectionsRequest calls the generic AppendCalendarSubscriptionSections builder with application/json body -func NewAppendCalendarSubscriptionSectionsRequest(server string, body AppendCalendarSubscriptionSectionsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) +// NewGetCourseRequest generates requests for GetCourse +func NewGetCourseRequest(server string, jwId int64, params *GetCourseParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewAppendCalendarSubscriptionSectionsRequestWithBody(server, "application/json", bodyReader) -} - -// NewAppendCalendarSubscriptionSectionsRequestWithBody generates requests for AppendCalendarSubscriptionSections with any type of body -func NewAppendCalendarSubscriptionSectionsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/calendar-subscriptions") + operationPath := fmt.Sprintf("/api/catalog/courses/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -13161,29 +13364,38 @@ func NewAppendCalendarSubscriptionSectionsRequestWithBody(server string, content return nil, err } - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } + if params != nil { + queryValues := queryURL.Query() - req.Header.Add("Content-Type", contentType) + if params.Locale != nil { - return req, nil -} + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// NewSetCalendarSubscriptionRequest calls the generic SetCalendarSubscription builder with application/json body -func NewSetCalendarSubscriptionRequest(server string, body SetCalendarSubscriptionJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - bodyReader = bytes.NewReader(buf) - return NewSetCalendarSubscriptionRequestWithBody(server, "application/json", bodyReader) + + return req, nil } -// NewSetCalendarSubscriptionRequestWithBody generates requests for SetCalendarSubscription with any type of body -func NewSetCalendarSubscriptionRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewGetMetadataRequest generates requests for GetMetadata +func NewGetMetadataRequest(server string) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -13191,7 +13403,7 @@ func NewSetCalendarSubscriptionRequestWithBody(server string, contentType string return nil, err } - operationPath := fmt.Sprintf("/api/calendar-subscriptions") + operationPath := fmt.Sprintf("/api/catalog/metadata") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -13201,29 +13413,16 @@ func NewSetCalendarSubscriptionRequestWithBody(server string, contentType string return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewBatchUpdateCalendarSubscriptionRequest calls the generic BatchUpdateCalendarSubscription builder with application/json body -func NewBatchUpdateCalendarSubscriptionRequest(server string, body BatchUpdateCalendarSubscriptionJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewBatchUpdateCalendarSubscriptionRequestWithBody(server, "application/json", bodyReader) -} - -// NewBatchUpdateCalendarSubscriptionRequestWithBody generates requests for BatchUpdateCalendarSubscription with any type of body -func NewBatchUpdateCalendarSubscriptionRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewListSchedulesRequest generates requests for ListSchedules +func NewListSchedulesRequest(server string, params *ListSchedulesParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -13231,7 +13430,7 @@ func NewBatchUpdateCalendarSubscriptionRequestWithBody(server string, contentTyp return nil, err } - operationPath := fmt.Sprintf("/api/calendar-subscriptions/batch") + operationPath := fmt.Sprintf("/api/catalog/schedules") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -13241,160 +13440,76 @@ func NewBatchUpdateCalendarSubscriptionRequestWithBody(server string, contentTyp return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } + if params != nil { + queryValues := queryURL.Query() - req.Header.Add("Content-Type", contentType) + if params.Locale != nil { - return req, nil -} - -// NewGetCurrentCalendarSubscriptionRequest generates requests for GetCurrentCalendarSubscription -func NewGetCurrentCalendarSubscriptionRequest(server string) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/calendar-subscriptions/current") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewPostApiCalendarSubscriptionsImportCodesRequest calls the generic PostApiCalendarSubscriptionsImportCodes builder with application/json body -func NewPostApiCalendarSubscriptionsImportCodesRequest(server string, body PostApiCalendarSubscriptionsImportCodesJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostApiCalendarSubscriptionsImportCodesRequestWithBody(server, "application/json", bodyReader) -} - -// NewPostApiCalendarSubscriptionsImportCodesRequestWithBody generates requests for PostApiCalendarSubscriptionsImportCodes with any type of body -func NewPostApiCalendarSubscriptionsImportCodesRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/calendar-subscriptions/import-codes") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewQueryCalendarSubscriptionSectionsRequest calls the generic QueryCalendarSubscriptionSections builder with application/json body -func NewQueryCalendarSubscriptionSectionsRequest(server string, body QueryCalendarSubscriptionSectionsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewQueryCalendarSubscriptionSectionsRequestWithBody(server, "application/json", bodyReader) -} - -// NewQueryCalendarSubscriptionSectionsRequestWithBody generates requests for QueryCalendarSubscriptionSections with any type of body -func NewQueryCalendarSubscriptionSectionsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/calendar-subscriptions/query") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } + } - req.Header.Add("Content-Type", contentType) + if params.SectionId != nil { - return req, nil -} + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionId", *params.SectionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// NewListCommentsRequest generates requests for ListComments -func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Request, error) { - var err error + } - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + if params.SectionJwId != nil { - operationPath := fmt.Sprintf("/api/comments") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionJwId", *params.SectionJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + } - if params != nil { - queryValues := queryURL.Query() + if params.SectionCode != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "targetType", params.TargetType, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionCode", *params.SectionCode, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } } } + } - if params.TargetId != nil { + if params.TeacherId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "targetId", *params.TargetId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherId", *params.TeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13408,9 +13523,9 @@ func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Re } - if params.SectionId != nil { + if params.TeacherCode != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionId", *params.SectionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherCode", *params.TeacherCode, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13424,9 +13539,9 @@ func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Re } - if params.SectionJwId != nil { + if params.RoomId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionJwId", *params.SectionJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "roomId", *params.RoomId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13440,9 +13555,9 @@ func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Re } - if params.CourseJwId != nil { + if params.RoomJwId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "courseJwId", *params.CourseJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "roomJwId", *params.RoomJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13456,9 +13571,9 @@ func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Re } - if params.TeacherId != nil { + if params.Weekday != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherId", *params.TeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "weekday", *params.Weekday, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13472,9 +13587,9 @@ func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Re } - if params.HomeworkId != nil { + if params.DateFrom != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "homeworkId", *params.HomeworkId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateFrom", *params.DateFrom, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13488,9 +13603,9 @@ func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Re } - if params.SectionTeacherId != nil { + if params.DateTo != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionTeacherId", *params.SectionTeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateTo", *params.DateTo, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13563,19 +13678,8 @@ func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Re return req, nil } -// NewCreateCommentRequest calls the generic CreateComment builder with application/json body -func NewCreateCommentRequest(server string, body CreateCommentJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewCreateCommentRequestWithBody(server, "application/json", bodyReader) -} - -// NewCreateCommentRequestWithBody generates requests for CreateComment with any type of body -func NewCreateCommentRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewListSectionsRequest generates requests for ListSections +func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -13583,7 +13687,7 @@ func NewCreateCommentRequestWithBody(server string, contentType string, body io. return nil, err } - operationPath := fmt.Sprintf("/api/comments") + operationPath := fmt.Sprintf("/api/catalog/sections") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -13593,295 +13697,124 @@ func NewCreateCommentRequestWithBody(server string, contentType string, body io. return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) + if params != nil { + queryValues := queryURL.Query() - return req, nil -} + if params.Locale != nil { -// NewDeleteApiCommentsBatchRequest calls the generic DeleteApiCommentsBatch builder with application/json body -func NewDeleteApiCommentsBatchRequest(server string, body DeleteApiCommentsBatchJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewDeleteApiCommentsBatchRequestWithBody(server, "application/json", bodyReader) -} + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// NewDeleteApiCommentsBatchRequestWithBody generates requests for DeleteApiCommentsBatch with any type of body -func NewDeleteApiCommentsBatchRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error + } - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + if params.CourseId != nil { - operationPath := fmt.Sprintf("/api/comments/batch") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewDeleteCommentRequest generates requests for DeleteComment -func NewDeleteCommentRequest(server string, id string) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/comments/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewGetCommentRequest generates requests for GetComment -func NewGetCommentRequest(server string, id string) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/comments/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewUpdateCommentRequest calls the generic UpdateComment builder with application/json body -func NewUpdateCommentRequest(server string, id string, body UpdateCommentJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewUpdateCommentRequestWithBody(server, id, "application/json", bodyReader) -} - -// NewUpdateCommentRequestWithBody generates requests for UpdateComment with any type of body -func NewUpdateCommentRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/comments/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewRemoveCommentReactionRequest generates requests for RemoveCommentReaction -func NewRemoveCommentReactionRequest(server string, id string, params *RemoveCommentReactionParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/comments/%s/reactions", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - if params != nil { - queryValues := queryURL.Query() - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "type", params.Type, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "courseId", *params.CourseId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } } } - } - - queryURL.RawQuery = queryValues.Encode() - } - req, err := http.NewRequest("DELETE", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} + } -// NewAddCommentReactionRequest calls the generic AddCommentReaction builder with application/json body -func NewAddCommentReactionRequest(server string, id string, body AddCommentReactionJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewAddCommentReactionRequestWithBody(server, id, "application/json", bodyReader) -} + if params.CourseJwId != nil { -// NewAddCommentReactionRequestWithBody generates requests for AddCommentReaction with any type of body -func NewAddCommentReactionRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { - var err error + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "courseJwId", *params.CourseJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - var pathParam0 string + } - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } + if params.SemesterId != nil { - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "semesterId", *params.SemesterId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - operationPath := fmt.Sprintf("/api/comments/%s/reactions", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + } - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + if params.SemesterJwId != nil { - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "semesterJwId", *params.SemesterJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - req.Header.Add("Content-Type", contentType) + } - return req, nil -} + if params.CampusId != nil { -// NewListCoursesRequest generates requests for ListCourses -func NewListCoursesRequest(server string, params *ListCoursesParams) (*http.Request, error) { - var err error + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "campusId", *params.CampusId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + } - operationPath := fmt.Sprintf("/api/courses") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + if params.DepartmentId != nil { - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "departmentId", *params.DepartmentId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - if params != nil { - queryValues := queryURL.Query() + } - if params.Locale != nil { + if params.TeacherId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherId", *params.TeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13895,9 +13828,9 @@ func NewListCoursesRequest(server string, params *ListCoursesParams) (*http.Requ } - if params.Search != nil { + if params.TeacherCode != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "search", *params.Search, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherCode", *params.TeacherCode, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13911,9 +13844,9 @@ func NewListCoursesRequest(server string, params *ListCoursesParams) (*http.Requ } - if params.EducationLevelId != nil { + if params.Search != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "educationLevelId", *params.EducationLevelId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "search", *params.Search, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13927,9 +13860,9 @@ func NewListCoursesRequest(server string, params *ListCoursesParams) (*http.Requ } - if params.CategoryId != nil { + if params.Ids != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "categoryId", *params.CategoryId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "ids", *params.Ids, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -13943,9 +13876,9 @@ func NewListCoursesRequest(server string, params *ListCoursesParams) (*http.Requ } - if params.ClassTypeId != nil { + if params.JwIds != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "classTypeId", *params.ClassTypeId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "jwIds", *params.JwIds, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14018,23 +13951,16 @@ func NewListCoursesRequest(server string, params *ListCoursesParams) (*http.Requ return req, nil } -// NewGetCourseRequest generates requests for GetCourse -func NewGetCourseRequest(server string, jwId int64, params *GetCourseParams) (*http.Request, error) { +// NewGetSectionsCalendarRequest generates requests for GetSectionsCalendar +func NewGetSectionsCalendarRequest(server string, params *GetSectionsCalendarParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/courses/%s", pathParam0) + operationPath := fmt.Sprintf("/api/catalog/sections/calendar.ics") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14047,20 +13973,16 @@ func NewGetCourseRequest(server string, jwId int64, params *GetCourseParams) (*h if params != nil { queryValues := queryURL.Query() - if params.Locale != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionIds", params.SectionIds, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) } } - } queryURL.RawQuery = queryValues.Encode() @@ -14074,19 +13996,19 @@ func NewGetCourseRequest(server string, jwId int64, params *GetCourseParams) (*h return req, nil } -// NewPinDashboardLinkRequestWithFormdataBody calls the generic PinDashboardLink builder with application/x-www-form-urlencoded body -func NewPinDashboardLinkRequestWithFormdataBody(server string, body PinDashboardLinkFormdataRequestBody) (*http.Request, error) { +// NewMatchSectionCodesRequest calls the generic MatchSectionCodes builder with application/json body +func NewMatchSectionCodesRequest(server string, body MatchSectionCodesJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader - bodyStr, err := runtime.MarshalForm(body, nil) + buf, err := json.Marshal(body) if err != nil { return nil, err } - bodyReader = strings.NewReader(bodyStr.Encode()) - return NewPinDashboardLinkRequestWithBody(server, "application/x-www-form-urlencoded", bodyReader) + bodyReader = bytes.NewReader(buf) + return NewMatchSectionCodesRequestWithBody(server, "application/json", bodyReader) } -// NewPinDashboardLinkRequestWithBody generates requests for PinDashboardLink with any type of body -func NewPinDashboardLinkRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewMatchSectionCodesRequestWithBody generates requests for MatchSectionCodes with any type of body +func NewMatchSectionCodesRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -14094,7 +14016,7 @@ func NewPinDashboardLinkRequestWithBody(server string, contentType string, body return nil, err } - operationPath := fmt.Sprintf("/api/dashboard-links/pin") + operationPath := fmt.Sprintf("/api/catalog/sections/match-codes") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14114,56 +14036,23 @@ func NewPinDashboardLinkRequestWithBody(server string, contentType string, body return req, nil } -// NewPostApiDashboardLinksPinBatchRequest calls the generic PostApiDashboardLinksPinBatch builder with application/json body -func NewPostApiDashboardLinksPinBatchRequest(server string, body PostApiDashboardLinksPinBatchJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPostApiDashboardLinksPinBatchRequestWithBody(server, "application/json", bodyReader) -} - -// NewPostApiDashboardLinksPinBatchRequestWithBody generates requests for PostApiDashboardLinksPinBatch with any type of body -func NewPostApiDashboardLinksPinBatchRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewGetSectionRequest generates requests for GetSection +func NewGetSectionRequest(server string, jwId int64, params *GetSectionParams) (*http.Request, error) { var err error - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/dashboard-links/pin/batch") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + var pathParam0 string - req, err := http.NewRequest("POST", queryURL.String(), body) + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewVisitDashboardLinkRequest generates requests for VisitDashboardLink -func NewVisitDashboardLinkRequest(server string, params *VisitDashboardLinkParams) (*http.Request, error) { - var err error - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/dashboard-links/visit") + operationPath := fmt.Sprintf("/api/catalog/sections/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14176,16 +14065,20 @@ func NewVisitDashboardLinkRequest(server string, params *VisitDashboardLinkParam if params != nil { queryValues := queryURL.Query() - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "slug", params.Slug, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) + if params.Locale != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } } } + } queryURL.RawQuery = queryValues.Encode() @@ -14199,27 +14092,23 @@ func NewVisitDashboardLinkRequest(server string, params *VisitDashboardLinkParam return req, nil } -// NewRecordDashboardLinkVisitRequestWithFormdataBody calls the generic RecordDashboardLinkVisit builder with application/x-www-form-urlencoded body -func NewRecordDashboardLinkVisitRequestWithFormdataBody(server string, body RecordDashboardLinkVisitFormdataRequestBody) (*http.Request, error) { - var bodyReader io.Reader - bodyStr, err := runtime.MarshalForm(body, nil) +// NewGetSectionCalendarRequest generates requests for GetSectionCalendar +func NewGetSectionCalendarRequest(server string, jwId int64) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) if err != nil { return nil, err } - bodyReader = strings.NewReader(bodyStr.Encode()) - return NewRecordDashboardLinkVisitRequestWithBody(server, "application/x-www-form-urlencoded", bodyReader) -} - -// NewRecordDashboardLinkVisitRequestWithBody generates requests for RecordDashboardLinkVisit with any type of body -func NewRecordDashboardLinkVisitRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/dashboard-links/visit") + operationPath := fmt.Sprintf("/api/catalog/sections/%s/calendar.ics", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14229,26 +14118,31 @@ func NewRecordDashboardLinkVisitRequestWithBody(server string, contentType strin return nil, err } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewGetDescriptionRequest generates requests for GetDescription -func NewGetDescriptionRequest(server string, params *GetDescriptionParams) (*http.Request, error) { +// NewGetSectionScheduleGroupsRequest generates requests for GetSectionScheduleGroups +func NewGetSectionScheduleGroupsRequest(server string, jwId int64, params *GetSectionScheduleGroupsParams) (*http.Request, error) { var err error + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) + if err != nil { + return nil, err + } + serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/descriptions") + operationPath := fmt.Sprintf("/api/catalog/sections/%s/schedule-groups", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14261,21 +14155,9 @@ func NewGetDescriptionRequest(server string, params *GetDescriptionParams) (*htt if params != nil { queryValues := queryURL.Query() - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "targetType", params.TargetType, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - if params.TargetId != nil { + if params.Locale != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "targetId", *params.TargetId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14289,9 +14171,49 @@ func NewGetDescriptionRequest(server string, params *GetDescriptionParams) (*htt } - if params.SectionJwId != nil { + queryURL.RawQuery = queryValues.Encode() + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionJwId", *params.SectionJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetSectionSchedulesRequest generates requests for GetSectionSchedules +func NewGetSectionSchedulesRequest(server string, jwId int64, params *GetSectionSchedulesParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/catalog/sections/%s/schedules", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.Locale != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14305,9 +14227,9 @@ func NewGetDescriptionRequest(server string, params *GetDescriptionParams) (*htt } - if params.CourseJwId != nil { + if params.DateFrom != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "courseJwId", *params.CourseJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateFrom", *params.DateFrom, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14321,9 +14243,9 @@ func NewGetDescriptionRequest(server string, params *GetDescriptionParams) (*htt } - if params.TeacherId != nil { + if params.DateTo != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherId", *params.TeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateTo", *params.DateTo, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14337,9 +14259,9 @@ func NewGetDescriptionRequest(server string, params *GetDescriptionParams) (*htt } - if params.HomeworkId != nil { + if params.Limit != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "homeworkId", *params.HomeworkId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14364,48 +14286,8 @@ func NewGetDescriptionRequest(server string, params *GetDescriptionParams) (*htt return req, nil } -// NewUpsertDescriptionRequest calls the generic UpsertDescription builder with application/json body -func NewUpsertDescriptionRequest(server string, body UpsertDescriptionJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewUpsertDescriptionRequestWithBody(server, "application/json", bodyReader) -} - -// NewUpsertDescriptionRequestWithBody generates requests for UpsertDescription with any type of body -func NewUpsertDescriptionRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/descriptions") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewListHomeworksRequest generates requests for ListHomeworks -func NewListHomeworksRequest(server string, params *ListHomeworksParams) (*http.Request, error) { +// NewListSemestersRequest generates requests for ListSemesters +func NewListSemestersRequest(server string, params *ListSemestersParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -14413,7 +14295,7 @@ func NewListHomeworksRequest(server string, params *ListHomeworksParams) (*http. return nil, err } - operationPath := fmt.Sprintf("/api/homeworks") + operationPath := fmt.Sprintf("/api/catalog/semesters") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14426,25 +14308,9 @@ func NewListHomeworksRequest(server string, params *ListHomeworksParams) (*http. if params != nil { queryValues := queryURL.Query() - if params.SectionId != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionId", *params.SectionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.SectionIds != nil { + if params.Page != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionIds", *params.SectionIds, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14458,9 +14324,9 @@ func NewListHomeworksRequest(server string, params *ListHomeworksParams) (*http. } - if params.SectionJwId != nil { + if params.PageSize != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionJwId", *params.SectionJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "pageSize", *params.PageSize, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14474,9 +14340,9 @@ func NewListHomeworksRequest(server string, params *ListHomeworksParams) (*http. } - if params.IncludeDeleted != nil { + if params.Limit != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "includeDeleted", *params.IncludeDeleted, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14493,111 +14359,24 @@ func NewListHomeworksRequest(server string, params *ListHomeworksParams) (*http. queryURL.RawQuery = queryValues.Encode() } - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewCreateHomeworkRequest calls the generic CreateHomework builder with application/json body -func NewCreateHomeworkRequest(server string, body CreateHomeworkJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewCreateHomeworkRequestWithBody(server, "application/json", bodyReader) -} - -// NewCreateHomeworkRequestWithBody generates requests for CreateHomework with any type of body -func NewCreateHomeworkRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/homeworks") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewPutApiHomeworksCompletionsRequest calls the generic PutApiHomeworksCompletions builder with application/json body -func NewPutApiHomeworksCompletionsRequest(server string, body PutApiHomeworksCompletionsJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewPutApiHomeworksCompletionsRequestWithBody(server, "application/json", bodyReader) -} - -// NewPutApiHomeworksCompletionsRequestWithBody generates requests for PutApiHomeworksCompletions with any type of body -func NewPutApiHomeworksCompletionsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/homeworks/completions") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PUT", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewDeleteHomeworkRequest generates requests for DeleteHomework -func NewDeleteHomeworkRequest(server string, id string) (*http.Request, error) { +// NewGetCurrentSemesterRequest generates requests for GetCurrentSemester +func NewGetCurrentSemesterRequest(server string) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/homeworks/%s", pathParam0) + operationPath := fmt.Sprintf("/api/catalog/semesters/current") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14607,7 +14386,7 @@ func NewDeleteHomeworkRequest(server string, id string) (*http.Request, error) { return nil, err } - req, err := http.NewRequest("DELETE", queryURL.String(), nil) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } @@ -14615,34 +14394,16 @@ func NewDeleteHomeworkRequest(server string, id string) (*http.Request, error) { return req, nil } -// NewUpdateHomeworkRequest calls the generic UpdateHomework builder with application/json body -func NewUpdateHomeworkRequest(server string, id string, body UpdateHomeworkJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewUpdateHomeworkRequestWithBody(server, id, "application/json", bodyReader) -} - -// NewUpdateHomeworkRequestWithBody generates requests for UpdateHomework with any type of body -func NewUpdateHomeworkRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { +// NewListTeachersRequest generates requests for ListTeachers +func NewListTeachersRequest(server string, params *ListTeachersParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/homeworks/%s", pathParam0) + operationPath := fmt.Sprintf("/api/catalog/teachers") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14652,113 +14413,133 @@ func NewUpdateHomeworkRequestWithBody(server string, id string, contentType stri return nil, err } - req, err := http.NewRequest("PATCH", queryURL.String(), body) - if err != nil { - return nil, err - } + if params != nil { + queryValues := queryURL.Query() - req.Header.Add("Content-Type", contentType) + if params.Locale != nil { - return req, nil -} + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } -// NewSetHomeworkCompletionRequest calls the generic SetHomeworkCompletion builder with application/json body -func NewSetHomeworkCompletionRequest(server string, id string, body SetHomeworkCompletionJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewSetHomeworkCompletionRequestWithBody(server, id, "application/json", bodyReader) -} + } -// NewSetHomeworkCompletionRequestWithBody generates requests for SetHomeworkCompletion with any type of body -func NewSetHomeworkCompletionRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { - var err error + if params.DepartmentId != nil { - var pathParam0 string + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "departmentId", *params.DepartmentId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } + } - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + if params.Search != nil { - operationPath := fmt.Sprintf("/api/homeworks/%s/completion", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "search", *params.Search, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + } - req, err := http.NewRequest("PUT", queryURL.String(), body) - if err != nil { - return nil, err - } + if params.Page != nil { - req.Header.Add("Content-Type", contentType) + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - return req, nil -} + } -// NewSetLocaleRequest calls the generic SetLocale builder with application/json body -func NewSetLocaleRequest(server string, body SetLocaleJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewSetLocaleRequestWithBody(server, "application/json", bodyReader) -} + if params.PageSize != nil { -// NewSetLocaleRequestWithBody generates requests for SetLocale with any type of body -func NewSetLocaleRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "pageSize", *params.PageSize, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } + } - operationPath := fmt.Sprintf("/api/locale") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + if params.Limit != nil { - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() } - req, err := http.NewRequest("POST", queryURL.String(), body) + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewGetMeRequest generates requests for GetMe -func NewGetMeRequest(server string) (*http.Request, error) { +// NewGetTeacherRequest generates requests for GetTeacher +func NewGetTeacherRequest(server string, id int64, params *GetTeacherParams) (*http.Request, error) { var err error + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) + if err != nil { + return nil, err + } + serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/me") + operationPath := fmt.Sprintf("/api/catalog/teachers/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14768,6 +14549,28 @@ func NewGetMeRequest(server string) (*http.Request, error) { return nil, err } + if params != nil { + queryValues := queryURL.Query() + + if params.Locale != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err @@ -14776,8 +14579,8 @@ func NewGetMeRequest(server string) (*http.Request, error) { return req, nil } -// NewGetApiMeOverviewRequest generates requests for GetApiMeOverview -func NewGetApiMeOverviewRequest(server string, params *GetApiMeOverviewParams) (*http.Request, error) { +// NewListCommentsRequest generates requests for ListComments +func NewListCommentsRequest(server string, params *ListCommentsParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -14785,7 +14588,7 @@ func NewGetApiMeOverviewRequest(server string, params *GetApiMeOverviewParams) ( return nil, err } - operationPath := fmt.Sprintf("/api/me/overview") + operationPath := fmt.Sprintf("/api/community/comments") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -14798,9 +14601,37 @@ func NewGetApiMeOverviewRequest(server string, params *GetApiMeOverviewParams) ( if params != nil { queryValues := queryURL.Query() - if params.AtTime != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "targetType", params.TargetType, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + if params.TargetId != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "targetId", *params.TargetId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.SectionId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "atTime", *params.AtTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionId", *params.SectionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14814,9 +14645,9 @@ func NewGetApiMeOverviewRequest(server string, params *GetApiMeOverviewParams) ( } - if params.HomeworkWindowDays != nil { + if params.SectionJwId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "homeworkWindowDays", *params.HomeworkWindowDays, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionJwId", *params.SectionJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14830,9 +14661,9 @@ func NewGetApiMeOverviewRequest(server string, params *GetApiMeOverviewParams) ( } - if params.Limit != nil { + if params.CourseJwId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "courseJwId", *params.CourseJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14846,9 +14677,9 @@ func NewGetApiMeOverviewRequest(server string, params *GetApiMeOverviewParams) ( } - if params.Locale != nil { + if params.TeacherId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherId", *params.TeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14862,69 +14693,9 @@ func NewGetApiMeOverviewRequest(server string, params *GetApiMeOverviewParams) ( } - queryURL.RawQuery = queryValues.Encode() - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewGetSubscribedHomeworksRequest generates requests for GetSubscribedHomeworks -func NewGetSubscribedHomeworksRequest(server string) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/me/subscriptions/homeworks") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewGetApiMeSubscriptionsSchedulesRequest generates requests for GetApiMeSubscriptionsSchedules -func NewGetApiMeSubscriptionsSchedulesRequest(server string, params *GetApiMeSubscriptionsSchedulesParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/me/subscriptions/schedules") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - if params != nil { - queryValues := queryURL.Query() - - if params.DateFrom != nil { + if params.HomeworkId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateFrom", *params.DateFrom, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "homeworkId", *params.HomeworkId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14938,9 +14709,9 @@ func NewGetApiMeSubscriptionsSchedulesRequest(server string, params *GetApiMeSub } - if params.DateTo != nil { + if params.SectionTeacherId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateTo", *params.DateTo, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionTeacherId", *params.SectionTeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14954,9 +14725,9 @@ func NewGetApiMeSubscriptionsSchedulesRequest(server string, params *GetApiMeSub } - if params.Weekday != nil { + if params.Page != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "weekday", *params.Weekday, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14970,9 +14741,9 @@ func NewGetApiMeSubscriptionsSchedulesRequest(server string, params *GetApiMeSub } - if params.Limit != nil { + if params.PageSize != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "pageSize", *params.PageSize, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -14986,9 +14757,9 @@ func NewGetApiMeSubscriptionsSchedulesRequest(server string, params *GetApiMeSub } - if params.Locale != nil { + if params.Limit != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15013,8 +14784,19 @@ func NewGetApiMeSubscriptionsSchedulesRequest(server string, params *GetApiMeSub return req, nil } -// NewGetMetadataRequest generates requests for GetMetadata -func NewGetMetadataRequest(server string) (*http.Request, error) { +// NewCreateCommentRequest calls the generic CreateComment builder with application/json body +func NewCreateCommentRequest(server string, body CreateCommentJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateCommentRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateCommentRequestWithBody generates requests for CreateComment with any type of body +func NewCreateCommentRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -15022,7 +14804,7 @@ func NewGetMetadataRequest(server string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/api/metadata") + operationPath := fmt.Sprintf("/api/community/comments") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15032,16 +14814,29 @@ func NewGetMetadataRequest(server string) (*http.Request, error) { return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("POST", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewGetOpenApiSpecRequest generates requests for GetOpenApiSpec -func NewGetOpenApiSpecRequest(server string) (*http.Request, error) { +// NewDeleteApiCommentsBatchRequest calls the generic DeleteApiCommentsBatch builder with application/json body +func NewDeleteApiCommentsBatchRequest(server string, body DeleteApiCommentsBatchJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewDeleteApiCommentsBatchRequestWithBody(server, "application/json", bodyReader) +} + +// NewDeleteApiCommentsBatchRequestWithBody generates requests for DeleteApiCommentsBatch with any type of body +func NewDeleteApiCommentsBatchRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -15049,7 +14844,7 @@ func NewGetOpenApiSpecRequest(server string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/api/openapi") + operationPath := fmt.Sprintf("/api/community/comments/batch") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15059,24 +14854,33 @@ func NewGetOpenApiSpecRequest(server string) (*http.Request, error) { return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("DELETE", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewListSchedulesRequest generates requests for ListSchedules -func NewListSchedulesRequest(server string, params *ListSchedulesParams) (*http.Request, error) { +// NewDeleteCommentRequest generates requests for DeleteComment +func NewDeleteCommentRequest(server string, id string) (*http.Request, error) { var err error + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/schedules") + operationPath := fmt.Sprintf("/api/community/comments/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15086,246 +14890,196 @@ func NewListSchedulesRequest(server string, params *ListSchedulesParams) (*http. return nil, err } - if params != nil { - queryValues := queryURL.Query() - - if params.Locale != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.SectionId != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionId", *params.SectionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } - } + return req, nil +} - if params.SectionJwId != nil { +// NewGetCommentRequest generates requests for GetComment +func NewGetCommentRequest(server string, id string) (*http.Request, error) { + var err error - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionJwId", *params.SectionJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + var pathParam0 string - } + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } - if params.SectionCode != nil { + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionCode", *params.SectionCode, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + operationPath := fmt.Sprintf("/api/community/comments/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - if params.TeacherId != nil { + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherId", *params.TeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + return req, nil +} - } +// NewUpdateCommentRequest calls the generic UpdateComment builder with application/json body +func NewUpdateCommentRequest(server string, id string, body UpdateCommentJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateCommentRequestWithBody(server, id, "application/json", bodyReader) +} - if params.TeacherCode != nil { +// NewUpdateCommentRequestWithBody generates requests for UpdateComment with any type of body +func NewUpdateCommentRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherCode", *params.TeacherCode, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + var pathParam0 string - } + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } - if params.RoomId != nil { + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "roomId", *params.RoomId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + operationPath := fmt.Sprintf("/api/community/comments/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - if params.RoomJwId != nil { + req, err := http.NewRequest("PATCH", queryURL.String(), body) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "roomJwId", *params.RoomJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + req.Header.Add("Content-Type", contentType) - } + return req, nil +} - if params.Weekday != nil { +// NewRemoveCommentReactionRequest generates requests for RemoveCommentReaction +func NewRemoveCommentReactionRequest(server string, id string, params *RemoveCommentReactionParams) (*http.Request, error) { + var err error - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "weekday", *params.Weekday, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + var pathParam0 string - } + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } - if params.DateFrom != nil { + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateFrom", *params.DateFrom, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + operationPath := fmt.Sprintf("/api/community/comments/%s/reactions", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - } + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - if params.DateTo != nil { + if params != nil { + queryValues := queryURL.Query() - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateTo", *params.DateTo, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "type", params.Type, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) } } - } - if params.Page != nil { + queryURL.RawQuery = queryValues.Encode() + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } - } + return req, nil +} - if params.PageSize != nil { +// NewAddCommentReactionRequest calls the generic AddCommentReaction builder with application/json body +func NewAddCommentReactionRequest(server string, id string, body AddCommentReactionJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewAddCommentReactionRequestWithBody(server, id, "application/json", bodyReader) +} - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "pageSize", *params.PageSize, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } +// NewAddCommentReactionRequestWithBody generates requests for AddCommentReaction with any type of body +func NewAddCommentReactionRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error - } + var pathParam0 string - if params.Limit != nil { + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - } + operationPath := fmt.Sprintf("/api/community/comments/%s/reactions", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - queryURL.RawQuery = queryValues.Encode() + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("POST", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewListSectionsRequest generates requests for ListSections -func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Request, error) { +// NewGetDescriptionRequest generates requests for GetDescription +func NewGetDescriptionRequest(server string, params *GetDescriptionParams) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -15333,7 +15087,7 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re return nil, err } - operationPath := fmt.Sprintf("/api/sections") + operationPath := fmt.Sprintf("/api/community/descriptions") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15346,41 +15100,21 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re if params != nil { queryValues := queryURL.Query() - if params.Locale != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.CourseId != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "courseId", *params.CourseId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "targetType", params.TargetType, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) } } - } - if params.CourseJwId != nil { + if params.TargetId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "courseJwId", *params.CourseJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "targetId", *params.TargetId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15394,9 +15128,9 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.SemesterId != nil { + if params.SectionJwId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "semesterId", *params.SemesterId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionJwId", *params.SectionJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15410,9 +15144,9 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.SemesterJwId != nil { + if params.CourseJwId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "semesterJwId", *params.SemesterJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "courseJwId", *params.CourseJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15426,9 +15160,9 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.CampusId != nil { + if params.TeacherId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "campusId", *params.CampusId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherId", *params.TeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15442,9 +15176,9 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.DepartmentId != nil { + if params.HomeworkId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "departmentId", *params.DepartmentId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "homeworkId", *params.HomeworkId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15458,9 +15192,82 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.TeacherId != nil { + queryURL.RawQuery = queryValues.Encode() + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherId", *params.TeacherId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpsertDescriptionRequest calls the generic UpsertDescription builder with application/json body +func NewUpsertDescriptionRequest(server string, body UpsertDescriptionJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpsertDescriptionRequestWithBody(server, "application/json", bodyReader) +} + +// NewUpsertDescriptionRequestWithBody generates requests for UpsertDescription with any type of body +func NewUpsertDescriptionRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/community/descriptions") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewListHomeworksRequest generates requests for ListHomeworks +func NewListHomeworksRequest(server string, params *ListHomeworksParams) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/community/homeworks") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.SectionId != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionId", *params.SectionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15474,9 +15281,9 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.TeacherCode != nil { + if params.SectionIds != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "teacherCode", *params.TeacherCode, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionIds", *params.SectionIds, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15490,9 +15297,9 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.Search != nil { + if params.SectionJwId != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "search", *params.Search, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionJwId", *params.SectionJwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15506,9 +15313,9 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.Ids != nil { + if params.IncludeDeleted != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "ids", *params.Ids, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "includeDeleted", *params.IncludeDeleted, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15520,11 +15327,172 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } } - } + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateHomeworkRequest calls the generic CreateHomework builder with application/json body +func NewCreateHomeworkRequest(server string, body CreateHomeworkJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateHomeworkRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateHomeworkRequestWithBody generates requests for CreateHomework with any type of body +func NewCreateHomeworkRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/community/homeworks") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewDeleteHomeworkRequest generates requests for DeleteHomework +func NewDeleteHomeworkRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/community/homeworks/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateHomeworkRequest calls the generic UpdateHomework builder with application/json body +func NewUpdateHomeworkRequest(server string, id string, body UpdateHomeworkJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateHomeworkRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewUpdateHomeworkRequestWithBody generates requests for UpdateHomework with any type of body +func NewUpdateHomeworkRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/community/homeworks/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PATCH", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewGetUserCalendarRequest generates requests for GetUserCalendar +func NewGetUserCalendarRequest(server string, userId string, params *GetUserCalendarParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "userId", userId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/community/users/%s/calendar.ics", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() - if params.JwIds != nil { + if params.Token != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "jwIds", *params.JwIds, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "token", *params.Token, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15538,55 +15506,61 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re } - if params.Page != nil { + queryURL.RawQuery = queryValues.Encode() + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - } + return req, nil +} - if params.PageSize != nil { +// NewGetOpenApiSpecRequest generates requests for GetOpenApiSpec +func NewGetOpenApiSpecRequest(server string) (*http.Request, error) { + var err error - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "pageSize", *params.PageSize, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - } + operationPath := fmt.Sprintf("/api/openapi") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - if params.Limit != nil { + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } - } + return req, nil +} - queryURL.RawQuery = queryValues.Encode() +// NewGetBusPreferencesRequest generates requests for GetBusPreferences +func NewGetBusPreferencesRequest(server string) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/workspace/bus-preferences") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } req, err := http.NewRequest("GET", queryURL.String(), nil) @@ -15597,8 +15571,19 @@ func NewListSectionsRequest(server string, params *ListSectionsParams) (*http.Re return req, nil } -// NewGetSectionsCalendarRequest generates requests for GetSectionsCalendar -func NewGetSectionsCalendarRequest(server string, params *GetSectionsCalendarParams) (*http.Request, error) { +// NewSetBusPreferencesRequest calls the generic SetBusPreferences builder with application/json body +func NewSetBusPreferencesRequest(server string, body SetBusPreferencesJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewSetBusPreferencesRequestWithBody(server, "application/json", bodyReader) +} + +// NewSetBusPreferencesRequestWithBody generates requests for SetBusPreferences with any type of body +func NewSetBusPreferencesRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -15606,7 +15591,7 @@ func NewGetSectionsCalendarRequest(server string, params *GetSectionsCalendarPar return nil, err } - operationPath := fmt.Sprintf("/api/sections/calendar.ics") + operationPath := fmt.Sprintf("/api/workspace/bus-preferences") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15616,45 +15601,183 @@ func NewGetSectionsCalendarRequest(server string, params *GetSectionsCalendarPar return nil, err } - if params != nil { - queryValues := queryURL.Query() + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "sectionIds", params.SectionIds, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewGetSubscribedHomeworksRequest generates requests for GetSubscribedHomeworks +func NewGetSubscribedHomeworksRequest(server string) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/workspace/homeworks") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewPutApiHomeworksCompletionsRequest calls the generic PutApiHomeworksCompletions builder with application/json body +func NewPutApiHomeworksCompletionsRequest(server string, body PutApiHomeworksCompletionsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPutApiHomeworksCompletionsRequestWithBody(server, "application/json", bodyReader) +} + +// NewPutApiHomeworksCompletionsRequestWithBody generates requests for PutApiHomeworksCompletions with any type of body +func NewPutApiHomeworksCompletionsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/workspace/homeworks/completions") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewSetHomeworkCompletionRequest calls the generic SetHomeworkCompletion builder with application/json body +func NewSetHomeworkCompletionRequest(server string, id string, body SetHomeworkCompletionJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewSetHomeworkCompletionRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewSetHomeworkCompletionRequestWithBody generates requests for SetHomeworkCompletion with any type of body +func NewSetHomeworkCompletionRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/workspace/homeworks/%s/completion", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewPinDashboardLinkRequestWithFormdataBody calls the generic PinDashboardLink builder with application/x-www-form-urlencoded body +func NewPinDashboardLinkRequestWithFormdataBody(server string, body PinDashboardLinkFormdataRequestBody) (*http.Request, error) { + var bodyReader io.Reader + bodyStr, err := runtime.MarshalForm(body, nil) + if err != nil { + return nil, err + } + bodyReader = strings.NewReader(bodyStr.Encode()) + return NewPinDashboardLinkRequestWithBody(server, "application/x-www-form-urlencoded", bodyReader) +} + +// NewPinDashboardLinkRequestWithBody generates requests for PinDashboardLink with any type of body +func NewPinDashboardLinkRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error - queryURL.RawQuery = queryValues.Encode() + serverURL, err := url.Parse(server) + if err != nil { + return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + operationPath := fmt.Sprintf("/api/workspace/links/pin") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewMatchSectionCodesRequest calls the generic MatchSectionCodes builder with application/json body -func NewMatchSectionCodesRequest(server string, body MatchSectionCodesJSONRequestBody) (*http.Request, error) { +// NewPostApiWorkspaceLinksPinBatchRequest calls the generic PostApiWorkspaceLinksPinBatch builder with application/json body +func NewPostApiWorkspaceLinksPinBatchRequest(server string, body PostApiWorkspaceLinksPinBatchJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewMatchSectionCodesRequestWithBody(server, "application/json", bodyReader) + return NewPostApiWorkspaceLinksPinBatchRequestWithBody(server, "application/json", bodyReader) } -// NewMatchSectionCodesRequestWithBody generates requests for MatchSectionCodes with any type of body -func NewMatchSectionCodesRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { +// NewPostApiWorkspaceLinksPinBatchRequestWithBody generates requests for PostApiWorkspaceLinksPinBatch with any type of body +func NewPostApiWorkspaceLinksPinBatchRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -15662,7 +15785,7 @@ func NewMatchSectionCodesRequestWithBody(server string, contentType string, body return nil, err } - operationPath := fmt.Sprintf("/api/sections/match-codes") + operationPath := fmt.Sprintf("/api/workspace/links/pin/batch") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15682,23 +15805,16 @@ func NewMatchSectionCodesRequestWithBody(server string, contentType string, body return req, nil } -// NewGetSectionRequest generates requests for GetSection -func NewGetSectionRequest(server string, jwId int64, params *GetSectionParams) (*http.Request, error) { +// NewVisitDashboardLinkRequest generates requests for VisitDashboardLink +func NewVisitDashboardLinkRequest(server string, params *VisitDashboardLinkParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/sections/%s", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/links/visit") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15711,20 +15827,16 @@ func NewGetSectionRequest(server string, jwId int64, params *GetSectionParams) ( if params != nil { queryValues := queryURL.Query() - if params.Locale != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "slug", params.Slug, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) } } - } queryURL.RawQuery = queryValues.Encode() @@ -15738,23 +15850,27 @@ func NewGetSectionRequest(server string, jwId int64, params *GetSectionParams) ( return req, nil } -// NewGetSectionCalendarRequest generates requests for GetSectionCalendar -func NewGetSectionCalendarRequest(server string, jwId int64) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) +// NewRecordDashboardLinkVisitRequestWithFormdataBody calls the generic RecordDashboardLinkVisit builder with application/x-www-form-urlencoded body +func NewRecordDashboardLinkVisitRequestWithFormdataBody(server string, body RecordDashboardLinkVisitFormdataRequestBody) (*http.Request, error) { + var bodyReader io.Reader + bodyStr, err := runtime.MarshalForm(body, nil) if err != nil { return nil, err } + bodyReader = strings.NewReader(bodyStr.Encode()) + return NewRecordDashboardLinkVisitRequestWithBody(server, "application/x-www-form-urlencoded", bodyReader) +} + +// NewRecordDashboardLinkVisitRequestWithBody generates requests for RecordDashboardLinkVisit with any type of body +func NewRecordDashboardLinkVisitRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/sections/%s/calendar.ics", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/links/visit") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15764,31 +15880,26 @@ func NewGetSectionCalendarRequest(server string, jwId int64) (*http.Request, err return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("POST", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewGetSectionScheduleGroupsRequest generates requests for GetSectionScheduleGroups -func NewGetSectionScheduleGroupsRequest(server string, jwId int64, params *GetSectionScheduleGroupsParams) (*http.Request, error) { +// NewGetApiMeOverviewRequest generates requests for GetApiMeOverview +func NewGetApiMeOverviewRequest(server string, params *GetApiMeOverviewParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/sections/%s/schedule-groups", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/overview") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15801,6 +15912,54 @@ func NewGetSectionScheduleGroupsRequest(server string, jwId int64, params *GetSe if params != nil { queryValues := queryURL.Query() + if params.AtTime != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "atTime", *params.AtTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.HomeworkWindowDays != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "homeworkWindowDays", *params.HomeworkWindowDays, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + if params.Locale != nil { if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { @@ -15828,23 +15987,16 @@ func NewGetSectionScheduleGroupsRequest(server string, jwId int64, params *GetSe return req, nil } -// NewGetSectionSchedulesRequest generates requests for GetSectionSchedules -func NewGetSectionSchedulesRequest(server string, jwId int64, params *GetSectionSchedulesParams) (*http.Request, error) { +// NewGetApiMeSubscriptionsSchedulesRequest generates requests for GetApiMeSubscriptionsSchedules +func NewGetApiMeSubscriptionsSchedulesRequest(server string, params *GetApiMeSubscriptionsSchedulesParams) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "jwId", jwId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/sections/%s/schedules", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/schedules") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15857,9 +16009,9 @@ func NewGetSectionSchedulesRequest(server string, jwId int64, params *GetSection if params != nil { queryValues := queryURL.Query() - if params.Locale != nil { + if params.DateFrom != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateFrom", *params.DateFrom, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15873,9 +16025,9 @@ func NewGetSectionSchedulesRequest(server string, jwId int64, params *GetSection } - if params.DateFrom != nil { + if params.DateTo != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateFrom", *params.DateFrom, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateTo", *params.DateTo, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15889,9 +16041,9 @@ func NewGetSectionSchedulesRequest(server string, jwId int64, params *GetSection } - if params.DateTo != nil { + if params.Weekday != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "dateTo", *params.DateTo, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "weekday", *params.Weekday, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { return nil, err } else if parsed, err := url.ParseQuery(queryFrag); err != nil { return nil, err @@ -15921,6 +16073,22 @@ func NewGetSectionSchedulesRequest(server string, jwId int64, params *GetSection } + if params.Locale != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + queryURL.RawQuery = queryValues.Encode() } @@ -15932,8 +16100,19 @@ func NewGetSectionSchedulesRequest(server string, jwId int64, params *GetSection return req, nil } -// NewListSemestersRequest generates requests for ListSemesters -func NewListSemestersRequest(server string, params *ListSemestersParams) (*http.Request, error) { +// NewDeleteApiWorkspaceSubscriptionsRequest calls the generic DeleteApiWorkspaceSubscriptions builder with application/json body +func NewDeleteApiWorkspaceSubscriptionsRequest(server string, body DeleteApiWorkspaceSubscriptionsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewDeleteApiWorkspaceSubscriptionsRequestWithBody(server, "application/json", bodyReader) +} + +// NewDeleteApiWorkspaceSubscriptionsRequestWithBody generates requests for DeleteApiWorkspaceSubscriptions with any type of body +func NewDeleteApiWorkspaceSubscriptionsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -15941,7 +16120,7 @@ func NewListSemestersRequest(server string, params *ListSemestersParams) (*http. return nil, err } - operationPath := fmt.Sprintf("/api/semesters") + operationPath := fmt.Sprintf("/api/workspace/subscriptions") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -15951,70 +16130,69 @@ func NewListSemestersRequest(server string, params *ListSemestersParams) (*http. return nil, err } - if params != nil { - queryValues := queryURL.Query() - - if params.Page != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } + req, err := http.NewRequest("DELETE", queryURL.String(), body) + if err != nil { + return nil, err + } - if params.PageSize != nil { + req.Header.Add("Content-Type", contentType) - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "pageSize", *params.PageSize, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + return req, nil +} - } +// NewAppendCalendarSubscriptionSectionsRequest calls the generic AppendCalendarSubscriptionSections builder with application/json body +func NewAppendCalendarSubscriptionSectionsRequest(server string, body AppendCalendarSubscriptionSectionsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewAppendCalendarSubscriptionSectionsRequestWithBody(server, "application/json", bodyReader) +} - if params.Limit != nil { +// NewAppendCalendarSubscriptionSectionsRequestWithBody generates requests for AppendCalendarSubscriptionSections with any type of body +func NewAppendCalendarSubscriptionSectionsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - } + operationPath := fmt.Sprintf("/api/workspace/subscriptions") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - queryURL.RawQuery = queryValues.Encode() + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("PATCH", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewGetCurrentSemesterRequest generates requests for GetCurrentSemester -func NewGetCurrentSemesterRequest(server string) (*http.Request, error) { +// NewSetCalendarSubscriptionRequest calls the generic SetCalendarSubscription builder with application/json body +func NewSetCalendarSubscriptionRequest(server string, body SetCalendarSubscriptionJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewSetCalendarSubscriptionRequestWithBody(server, "application/json", bodyReader) +} + +// NewSetCalendarSubscriptionRequestWithBody generates requests for SetCalendarSubscription with any type of body +func NewSetCalendarSubscriptionRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -16022,7 +16200,7 @@ func NewGetCurrentSemesterRequest(server string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/api/semesters/current") + operationPath := fmt.Sprintf("/api/workspace/subscriptions") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16032,16 +16210,29 @@ func NewGetCurrentSemesterRequest(server string) (*http.Request, error) { return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("POST", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewListTeachersRequest generates requests for ListTeachers -func NewListTeachersRequest(server string, params *ListTeachersParams) (*http.Request, error) { +// NewBatchUpdateCalendarSubscriptionRequest calls the generic BatchUpdateCalendarSubscription builder with application/json body +func NewBatchUpdateCalendarSubscriptionRequest(server string, body BatchUpdateCalendarSubscriptionJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewBatchUpdateCalendarSubscriptionRequestWithBody(server, "application/json", bodyReader) +} + +// NewBatchUpdateCalendarSubscriptionRequestWithBody generates requests for BatchUpdateCalendarSubscription with any type of body +func NewBatchUpdateCalendarSubscriptionRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -16049,7 +16240,7 @@ func NewListTeachersRequest(server string, params *ListTeachersParams) (*http.Re return nil, err } - operationPath := fmt.Sprintf("/api/teachers") + operationPath := fmt.Sprintf("/api/workspace/subscriptions/batch") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16059,106 +16250,33 @@ func NewListTeachersRequest(server string, params *ListTeachersParams) (*http.Re return nil, err } - if params != nil { - queryValues := queryURL.Query() - - if params.Locale != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.DepartmentId != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "departmentId", *params.DepartmentId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Search != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "search", *params.Search, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Page != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.PageSize != nil { + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "pageSize", *params.PageSize, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + req.Header.Add("Content-Type", contentType) - } + return req, nil +} - if params.Limit != nil { +// NewGetCurrentCalendarSubscriptionRequest generates requests for GetCurrentCalendarSubscription +func NewGetCurrentCalendarSubscriptionRequest(server string) (*http.Request, error) { + var err error - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } - } + operationPath := fmt.Sprintf("/api/workspace/subscriptions/current") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - queryURL.RawQuery = queryValues.Encode() + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err } req, err := http.NewRequest("GET", queryURL.String(), nil) @@ -16169,23 +16287,27 @@ func NewListTeachersRequest(server string, params *ListTeachersParams) (*http.Re return req, nil } -// NewGetTeacherRequest generates requests for GetTeacher -func NewGetTeacherRequest(server string, id int64, params *GetTeacherParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "integer", Format: "int64"}) +// NewPostApiWorkspaceSubscriptionsImportCodesRequest calls the generic PostApiWorkspaceSubscriptionsImportCodes builder with application/json body +func NewPostApiWorkspaceSubscriptionsImportCodesRequest(server string, body PostApiWorkspaceSubscriptionsImportCodesJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) if err != nil { return nil, err } + bodyReader = bytes.NewReader(buf) + return NewPostApiWorkspaceSubscriptionsImportCodesRequestWithBody(server, "application/json", bodyReader) +} + +// NewPostApiWorkspaceSubscriptionsImportCodesRequestWithBody generates requests for PostApiWorkspaceSubscriptionsImportCodes with any type of body +func NewPostApiWorkspaceSubscriptionsImportCodesRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/api/teachers/%s", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/subscriptions/import-codes") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16195,33 +16317,53 @@ func NewGetTeacherRequest(server string, id int64, params *GetTeacherParams) (*h return nil, err } - if params != nil { - queryValues := queryURL.Query() + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } - if params.Locale != nil { + req.Header.Add("Content-Type", contentType) - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "locale", *params.Locale, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } + return req, nil +} - } +// NewQueryCalendarSubscriptionSectionsRequest calls the generic QueryCalendarSubscriptionSections builder with application/json body +func NewQueryCalendarSubscriptionSectionsRequest(server string, body QueryCalendarSubscriptionSectionsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewQueryCalendarSubscriptionSectionsRequestWithBody(server, "application/json", bodyReader) +} - queryURL.RawQuery = queryValues.Encode() +// NewQueryCalendarSubscriptionSectionsRequestWithBody generates requests for QueryCalendarSubscriptionSections with any type of body +func NewQueryCalendarSubscriptionSectionsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + operationPath := fmt.Sprintf("/api/workspace/subscriptions/query") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } @@ -16234,7 +16376,7 @@ func NewListTodosRequest(server string, params *ListTodosParams) (*http.Request, return nil, err } - operationPath := fmt.Sprintf("/api/todos") + operationPath := fmt.Sprintf("/api/workspace/todos") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16358,7 +16500,7 @@ func NewCreateTodoRequestWithBody(server string, contentType string, body io.Rea return nil, err } - operationPath := fmt.Sprintf("/api/todos") + operationPath := fmt.Sprintf("/api/workspace/todos") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16398,7 +16540,7 @@ func NewDeleteApiTodosBatchRequestWithBody(server string, contentType string, bo return nil, err } - operationPath := fmt.Sprintf("/api/todos/batch") + operationPath := fmt.Sprintf("/api/workspace/todos/batch") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16438,7 +16580,7 @@ func NewPatchApiTodosBatchRequestWithBody(server string, contentType string, bod return nil, err } - operationPath := fmt.Sprintf("/api/todos/batch") + operationPath := fmt.Sprintf("/api/workspace/todos/batch") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16474,7 +16616,7 @@ func NewDeleteTodoRequest(server string, id string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/api/todos/%s", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/todos/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16519,7 +16661,7 @@ func NewUpdateTodoRequestWithBody(server string, id string, contentType string, return nil, err } - operationPath := fmt.Sprintf("/api/todos/%s", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/todos/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16548,7 +16690,7 @@ func NewListUploadsRequest(server string, params *ListUploadsParams) (*http.Requ return nil, err } - operationPath := fmt.Sprintf("/api/uploads") + operationPath := fmt.Sprintf("/api/workspace/uploads") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16640,7 +16782,7 @@ func NewCreateUploadRequestWithBody(server string, contentType string, body io.R return nil, err } - operationPath := fmt.Sprintf("/api/uploads") + operationPath := fmt.Sprintf("/api/workspace/uploads") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16680,7 +16822,7 @@ func NewCompleteUploadRequestWithBody(server string, contentType string, body io return nil, err } - operationPath := fmt.Sprintf("/api/uploads/complete") + operationPath := fmt.Sprintf("/api/workspace/uploads/complete") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16709,7 +16851,7 @@ func NewPutApiUploadsObjectRequestWithBody(server string, params *PutApiUploadsO return nil, err } - operationPath := fmt.Sprintf("/api/uploads/object") + operationPath := fmt.Sprintf("/api/workspace/uploads/object") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16763,7 +16905,7 @@ func NewDeleteUploadRequest(server string, id string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/api/uploads/%s", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/uploads/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16783,53 +16925,17 @@ func NewDeleteUploadRequest(server string, id string) (*http.Request, error) { // NewUpdateUploadRequest calls the generic UpdateUpload builder with application/json body func NewUpdateUploadRequest(server string, id string, body UpdateUploadJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewUpdateUploadRequestWithBody(server, id, "application/json", bodyReader) -} - -// NewUpdateUploadRequestWithBody generates requests for UpdateUpload with any type of body -func NewUpdateUploadRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/api/uploads/%s", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("PATCH", queryURL.String(), body) + var bodyReader io.Reader + buf, err := json.Marshal(body) if err != nil { return nil, err } - - req.Header.Add("Content-Type", contentType) - - return req, nil + bodyReader = bytes.NewReader(buf) + return NewUpdateUploadRequestWithBody(server, id, "application/json", bodyReader) } -// NewDownloadUploadRequest generates requests for DownloadUpload -func NewDownloadUploadRequest(server string, id string) (*http.Request, error) { +// NewUpdateUploadRequestWithBody generates requests for UpdateUpload with any type of body +func NewUpdateUploadRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string @@ -16844,7 +16950,7 @@ func NewDownloadUploadRequest(server string, id string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/api/uploads/%s/download", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/uploads/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16854,21 +16960,23 @@ func NewDownloadUploadRequest(server string, id string) (*http.Request, error) { return nil, err } - req, err := http.NewRequest("GET", queryURL.String(), nil) + req, err := http.NewRequest("PATCH", queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewGetUserCalendarRequest generates requests for GetUserCalendar -func NewGetUserCalendarRequest(server string, userId string, params *GetUserCalendarParams) (*http.Request, error) { +// NewDownloadUploadRequest generates requests for DownloadUpload +func NewDownloadUploadRequest(server string, id string) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "userId", userId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) if err != nil { return nil, err } @@ -16878,7 +16986,7 @@ func NewGetUserCalendarRequest(server string, userId string, params *GetUserCale return nil, err } - operationPath := fmt.Sprintf("/api/users/%s/calendar.ics", pathParam0) + operationPath := fmt.Sprintf("/api/workspace/uploads/%s/download", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -16888,28 +16996,6 @@ func NewGetUserCalendarRequest(server string, userId string, params *GetUserCale return nil, err } - if params != nil { - queryValues := queryURL.Query() - - if params.Token != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "token", *params.Token, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - } - req, err := http.NewRequest("GET", queryURL.String(), nil) if err != nil { return nil, err @@ -16961,6 +17047,17 @@ func WithBaseURL(baseURL string) ClientOption { // ClientWithResponsesInterface is the interface specification for the client with responses above. type ClientWithResponsesInterface interface { + // GetMeWithResponse request + GetMeWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetMeResponse, error) + + // SetLocaleWithBodyWithResponse request with any body + SetLocaleWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetLocaleResponse, error) + + SetLocaleWithResponse(ctx context.Context, body SetLocaleJSONRequestBody, reqEditors ...RequestEditorFn) (*SetLocaleResponse, error) + + // GetApiAccountProfileWithResponse request + GetApiAccountProfileWithResponse(ctx context.Context, params *GetApiAccountProfileParams, reqEditors ...RequestEditorFn) (*GetApiAccountProfileResponse, error) + // ListAdminCommentsWithResponse request ListAdminCommentsWithResponse(ctx context.Context, params *ListAdminCommentsParams, reqEditors ...RequestEditorFn) (*ListAdminCommentsResponse, error) @@ -17005,52 +17102,58 @@ type ClientWithResponsesInterface interface { // QueryBusWithResponse request QueryBusWithResponse(ctx context.Context, params *QueryBusParams, reqEditors ...RequestEditorFn) (*QueryBusResponse, error) - // GetApiBusNextWithResponse request - GetApiBusNextWithResponse(ctx context.Context, params *GetApiBusNextParams, reqEditors ...RequestEditorFn) (*GetApiBusNextResponse, error) + // GetApiCatalogBusNextWithResponse request + GetApiCatalogBusNextWithResponse(ctx context.Context, params *GetApiCatalogBusNextParams, reqEditors ...RequestEditorFn) (*GetApiCatalogBusNextResponse, error) - // GetBusPreferencesWithResponse request - GetBusPreferencesWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetBusPreferencesResponse, error) + // GetApiBusRoutesWithResponse request + GetApiBusRoutesWithResponse(ctx context.Context, params *GetApiBusRoutesParams, reqEditors ...RequestEditorFn) (*GetApiBusRoutesResponse, error) - // SetBusPreferencesWithBodyWithResponse request with any body - SetBusPreferencesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetBusPreferencesResponse, error) + // ListCoursesWithResponse request + ListCoursesWithResponse(ctx context.Context, params *ListCoursesParams, reqEditors ...RequestEditorFn) (*ListCoursesResponse, error) - SetBusPreferencesWithResponse(ctx context.Context, body SetBusPreferencesJSONRequestBody, reqEditors ...RequestEditorFn) (*SetBusPreferencesResponse, error) + // GetCourseWithResponse request + GetCourseWithResponse(ctx context.Context, jwId int64, params *GetCourseParams, reqEditors ...RequestEditorFn) (*GetCourseResponse, error) - // GetApiBusRoutesWithResponse request - GetApiBusRoutesWithResponse(ctx context.Context, params *GetApiBusRoutesParams, reqEditors ...RequestEditorFn) (*GetApiBusRoutesResponse, error) + // GetMetadataWithResponse request + GetMetadataWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetMetadataResponse, error) - // DeleteApiCalendarSubscriptionsWithBodyWithResponse request with any body - DeleteApiCalendarSubscriptionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*DeleteApiCalendarSubscriptionsResponse, error) + // ListSchedulesWithResponse request + ListSchedulesWithResponse(ctx context.Context, params *ListSchedulesParams, reqEditors ...RequestEditorFn) (*ListSchedulesResponse, error) - DeleteApiCalendarSubscriptionsWithResponse(ctx context.Context, body DeleteApiCalendarSubscriptionsJSONRequestBody, reqEditors ...RequestEditorFn) (*DeleteApiCalendarSubscriptionsResponse, error) + // ListSectionsWithResponse request + ListSectionsWithResponse(ctx context.Context, params *ListSectionsParams, reqEditors ...RequestEditorFn) (*ListSectionsResponse, error) - // AppendCalendarSubscriptionSectionsWithBodyWithResponse request with any body - AppendCalendarSubscriptionSectionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AppendCalendarSubscriptionSectionsResponse, error) + // GetSectionsCalendarWithResponse request + GetSectionsCalendarWithResponse(ctx context.Context, params *GetSectionsCalendarParams, reqEditors ...RequestEditorFn) (*GetSectionsCalendarResponse, error) - AppendCalendarSubscriptionSectionsWithResponse(ctx context.Context, body AppendCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*AppendCalendarSubscriptionSectionsResponse, error) + // MatchSectionCodesWithBodyWithResponse request with any body + MatchSectionCodesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*MatchSectionCodesResponse, error) - // SetCalendarSubscriptionWithBodyWithResponse request with any body - SetCalendarSubscriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetCalendarSubscriptionResponse, error) + MatchSectionCodesWithResponse(ctx context.Context, body MatchSectionCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*MatchSectionCodesResponse, error) - SetCalendarSubscriptionWithResponse(ctx context.Context, body SetCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*SetCalendarSubscriptionResponse, error) + // GetSectionWithResponse request + GetSectionWithResponse(ctx context.Context, jwId int64, params *GetSectionParams, reqEditors ...RequestEditorFn) (*GetSectionResponse, error) - // BatchUpdateCalendarSubscriptionWithBodyWithResponse request with any body - BatchUpdateCalendarSubscriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*BatchUpdateCalendarSubscriptionResponse, error) + // GetSectionCalendarWithResponse request + GetSectionCalendarWithResponse(ctx context.Context, jwId int64, reqEditors ...RequestEditorFn) (*GetSectionCalendarResponse, error) - BatchUpdateCalendarSubscriptionWithResponse(ctx context.Context, body BatchUpdateCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*BatchUpdateCalendarSubscriptionResponse, error) + // GetSectionScheduleGroupsWithResponse request + GetSectionScheduleGroupsWithResponse(ctx context.Context, jwId int64, params *GetSectionScheduleGroupsParams, reqEditors ...RequestEditorFn) (*GetSectionScheduleGroupsResponse, error) - // GetCurrentCalendarSubscriptionWithResponse request - GetCurrentCalendarSubscriptionWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetCurrentCalendarSubscriptionResponse, error) + // GetSectionSchedulesWithResponse request + GetSectionSchedulesWithResponse(ctx context.Context, jwId int64, params *GetSectionSchedulesParams, reqEditors ...RequestEditorFn) (*GetSectionSchedulesResponse, error) - // PostApiCalendarSubscriptionsImportCodesWithBodyWithResponse request with any body - PostApiCalendarSubscriptionsImportCodesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostApiCalendarSubscriptionsImportCodesResponse, error) + // ListSemestersWithResponse request + ListSemestersWithResponse(ctx context.Context, params *ListSemestersParams, reqEditors ...RequestEditorFn) (*ListSemestersResponse, error) - PostApiCalendarSubscriptionsImportCodesWithResponse(ctx context.Context, body PostApiCalendarSubscriptionsImportCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*PostApiCalendarSubscriptionsImportCodesResponse, error) + // GetCurrentSemesterWithResponse request + GetCurrentSemesterWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetCurrentSemesterResponse, error) - // QueryCalendarSubscriptionSectionsWithBodyWithResponse request with any body - QueryCalendarSubscriptionSectionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*QueryCalendarSubscriptionSectionsResponse, error) + // ListTeachersWithResponse request + ListTeachersWithResponse(ctx context.Context, params *ListTeachersParams, reqEditors ...RequestEditorFn) (*ListTeachersResponse, error) - QueryCalendarSubscriptionSectionsWithResponse(ctx context.Context, body QueryCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*QueryCalendarSubscriptionSectionsResponse, error) + // GetTeacherWithResponse request + GetTeacherWithResponse(ctx context.Context, id int64, params *GetTeacherParams, reqEditors ...RequestEditorFn) (*GetTeacherResponse, error) // ListCommentsWithResponse request ListCommentsWithResponse(ctx context.Context, params *ListCommentsParams, reqEditors ...RequestEditorFn) (*ListCommentsResponse, error) @@ -17084,30 +17187,6 @@ type ClientWithResponsesInterface interface { AddCommentReactionWithResponse(ctx context.Context, id string, body AddCommentReactionJSONRequestBody, reqEditors ...RequestEditorFn) (*AddCommentReactionResponse, error) - // ListCoursesWithResponse request - ListCoursesWithResponse(ctx context.Context, params *ListCoursesParams, reqEditors ...RequestEditorFn) (*ListCoursesResponse, error) - - // GetCourseWithResponse request - GetCourseWithResponse(ctx context.Context, jwId int64, params *GetCourseParams, reqEditors ...RequestEditorFn) (*GetCourseResponse, error) - - // PinDashboardLinkWithBodyWithResponse request with any body - PinDashboardLinkWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PinDashboardLinkResponse, error) - - PinDashboardLinkWithFormdataBodyWithResponse(ctx context.Context, body PinDashboardLinkFormdataRequestBody, reqEditors ...RequestEditorFn) (*PinDashboardLinkResponse, error) - - // PostApiDashboardLinksPinBatchWithBodyWithResponse request with any body - PostApiDashboardLinksPinBatchWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostApiDashboardLinksPinBatchResponse, error) - - PostApiDashboardLinksPinBatchWithResponse(ctx context.Context, body PostApiDashboardLinksPinBatchJSONRequestBody, reqEditors ...RequestEditorFn) (*PostApiDashboardLinksPinBatchResponse, error) - - // VisitDashboardLinkWithResponse request - VisitDashboardLinkWithResponse(ctx context.Context, params *VisitDashboardLinkParams, reqEditors ...RequestEditorFn) (*VisitDashboardLinkResponse, error) - - // RecordDashboardLinkVisitWithBodyWithResponse request with any body - RecordDashboardLinkVisitWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RecordDashboardLinkVisitResponse, error) - - RecordDashboardLinkVisitWithFormdataBodyWithResponse(ctx context.Context, body RecordDashboardLinkVisitFormdataRequestBody, reqEditors ...RequestEditorFn) (*RecordDashboardLinkVisitResponse, error) - // GetDescriptionWithResponse request GetDescriptionWithResponse(ctx context.Context, params *GetDescriptionParams, reqEditors ...RequestEditorFn) (*GetDescriptionResponse, error) @@ -17124,11 +17203,6 @@ type ClientWithResponsesInterface interface { CreateHomeworkWithResponse(ctx context.Context, body CreateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateHomeworkResponse, error) - // PutApiHomeworksCompletionsWithBodyWithResponse request with any body - PutApiHomeworksCompletionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutApiHomeworksCompletionsResponse, error) - - PutApiHomeworksCompletionsWithResponse(ctx context.Context, body PutApiHomeworksCompletionsJSONRequestBody, reqEditors ...RequestEditorFn) (*PutApiHomeworksCompletionsResponse, error) - // DeleteHomeworkWithResponse request DeleteHomeworkWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DeleteHomeworkResponse, error) @@ -17137,71 +17211,89 @@ type ClientWithResponsesInterface interface { UpdateHomeworkWithResponse(ctx context.Context, id string, body UpdateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateHomeworkResponse, error) + // GetUserCalendarWithResponse request + GetUserCalendarWithResponse(ctx context.Context, userId string, params *GetUserCalendarParams, reqEditors ...RequestEditorFn) (*GetUserCalendarResponse, error) + + // GetOpenApiSpecWithResponse request + GetOpenApiSpecWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetOpenApiSpecResponse, error) + + // GetBusPreferencesWithResponse request + GetBusPreferencesWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetBusPreferencesResponse, error) + + // SetBusPreferencesWithBodyWithResponse request with any body + SetBusPreferencesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetBusPreferencesResponse, error) + + SetBusPreferencesWithResponse(ctx context.Context, body SetBusPreferencesJSONRequestBody, reqEditors ...RequestEditorFn) (*SetBusPreferencesResponse, error) + + // GetSubscribedHomeworksWithResponse request + GetSubscribedHomeworksWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetSubscribedHomeworksResponse, error) + + // PutApiHomeworksCompletionsWithBodyWithResponse request with any body + PutApiHomeworksCompletionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutApiHomeworksCompletionsResponse, error) + + PutApiHomeworksCompletionsWithResponse(ctx context.Context, body PutApiHomeworksCompletionsJSONRequestBody, reqEditors ...RequestEditorFn) (*PutApiHomeworksCompletionsResponse, error) + // SetHomeworkCompletionWithBodyWithResponse request with any body SetHomeworkCompletionWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetHomeworkCompletionResponse, error) SetHomeworkCompletionWithResponse(ctx context.Context, id string, body SetHomeworkCompletionJSONRequestBody, reqEditors ...RequestEditorFn) (*SetHomeworkCompletionResponse, error) - // SetLocaleWithBodyWithResponse request with any body - SetLocaleWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetLocaleResponse, error) + // PinDashboardLinkWithBodyWithResponse request with any body + PinDashboardLinkWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PinDashboardLinkResponse, error) - SetLocaleWithResponse(ctx context.Context, body SetLocaleJSONRequestBody, reqEditors ...RequestEditorFn) (*SetLocaleResponse, error) + PinDashboardLinkWithFormdataBodyWithResponse(ctx context.Context, body PinDashboardLinkFormdataRequestBody, reqEditors ...RequestEditorFn) (*PinDashboardLinkResponse, error) - // GetMeWithResponse request - GetMeWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetMeResponse, error) + // PostApiWorkspaceLinksPinBatchWithBodyWithResponse request with any body + PostApiWorkspaceLinksPinBatchWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostApiWorkspaceLinksPinBatchResponse, error) + + PostApiWorkspaceLinksPinBatchWithResponse(ctx context.Context, body PostApiWorkspaceLinksPinBatchJSONRequestBody, reqEditors ...RequestEditorFn) (*PostApiWorkspaceLinksPinBatchResponse, error) + + // VisitDashboardLinkWithResponse request + VisitDashboardLinkWithResponse(ctx context.Context, params *VisitDashboardLinkParams, reqEditors ...RequestEditorFn) (*VisitDashboardLinkResponse, error) + + // RecordDashboardLinkVisitWithBodyWithResponse request with any body + RecordDashboardLinkVisitWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RecordDashboardLinkVisitResponse, error) + + RecordDashboardLinkVisitWithFormdataBodyWithResponse(ctx context.Context, body RecordDashboardLinkVisitFormdataRequestBody, reqEditors ...RequestEditorFn) (*RecordDashboardLinkVisitResponse, error) // GetApiMeOverviewWithResponse request GetApiMeOverviewWithResponse(ctx context.Context, params *GetApiMeOverviewParams, reqEditors ...RequestEditorFn) (*GetApiMeOverviewResponse, error) - // GetSubscribedHomeworksWithResponse request - GetSubscribedHomeworksWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetSubscribedHomeworksResponse, error) - // GetApiMeSubscriptionsSchedulesWithResponse request GetApiMeSubscriptionsSchedulesWithResponse(ctx context.Context, params *GetApiMeSubscriptionsSchedulesParams, reqEditors ...RequestEditorFn) (*GetApiMeSubscriptionsSchedulesResponse, error) - // GetMetadataWithResponse request - GetMetadataWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetMetadataResponse, error) - - // GetOpenApiSpecWithResponse request - GetOpenApiSpecWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetOpenApiSpecResponse, error) - - // ListSchedulesWithResponse request - ListSchedulesWithResponse(ctx context.Context, params *ListSchedulesParams, reqEditors ...RequestEditorFn) (*ListSchedulesResponse, error) + // DeleteApiWorkspaceSubscriptionsWithBodyWithResponse request with any body + DeleteApiWorkspaceSubscriptionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*DeleteApiWorkspaceSubscriptionsResponse, error) - // ListSectionsWithResponse request - ListSectionsWithResponse(ctx context.Context, params *ListSectionsParams, reqEditors ...RequestEditorFn) (*ListSectionsResponse, error) + DeleteApiWorkspaceSubscriptionsWithResponse(ctx context.Context, body DeleteApiWorkspaceSubscriptionsJSONRequestBody, reqEditors ...RequestEditorFn) (*DeleteApiWorkspaceSubscriptionsResponse, error) - // GetSectionsCalendarWithResponse request - GetSectionsCalendarWithResponse(ctx context.Context, params *GetSectionsCalendarParams, reqEditors ...RequestEditorFn) (*GetSectionsCalendarResponse, error) + // AppendCalendarSubscriptionSectionsWithBodyWithResponse request with any body + AppendCalendarSubscriptionSectionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AppendCalendarSubscriptionSectionsResponse, error) - // MatchSectionCodesWithBodyWithResponse request with any body - MatchSectionCodesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*MatchSectionCodesResponse, error) + AppendCalendarSubscriptionSectionsWithResponse(ctx context.Context, body AppendCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*AppendCalendarSubscriptionSectionsResponse, error) - MatchSectionCodesWithResponse(ctx context.Context, body MatchSectionCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*MatchSectionCodesResponse, error) + // SetCalendarSubscriptionWithBodyWithResponse request with any body + SetCalendarSubscriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetCalendarSubscriptionResponse, error) - // GetSectionWithResponse request - GetSectionWithResponse(ctx context.Context, jwId int64, params *GetSectionParams, reqEditors ...RequestEditorFn) (*GetSectionResponse, error) + SetCalendarSubscriptionWithResponse(ctx context.Context, body SetCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*SetCalendarSubscriptionResponse, error) - // GetSectionCalendarWithResponse request - GetSectionCalendarWithResponse(ctx context.Context, jwId int64, reqEditors ...RequestEditorFn) (*GetSectionCalendarResponse, error) + // BatchUpdateCalendarSubscriptionWithBodyWithResponse request with any body + BatchUpdateCalendarSubscriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*BatchUpdateCalendarSubscriptionResponse, error) - // GetSectionScheduleGroupsWithResponse request - GetSectionScheduleGroupsWithResponse(ctx context.Context, jwId int64, params *GetSectionScheduleGroupsParams, reqEditors ...RequestEditorFn) (*GetSectionScheduleGroupsResponse, error) + BatchUpdateCalendarSubscriptionWithResponse(ctx context.Context, body BatchUpdateCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*BatchUpdateCalendarSubscriptionResponse, error) - // GetSectionSchedulesWithResponse request - GetSectionSchedulesWithResponse(ctx context.Context, jwId int64, params *GetSectionSchedulesParams, reqEditors ...RequestEditorFn) (*GetSectionSchedulesResponse, error) + // GetCurrentCalendarSubscriptionWithResponse request + GetCurrentCalendarSubscriptionWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetCurrentCalendarSubscriptionResponse, error) - // ListSemestersWithResponse request - ListSemestersWithResponse(ctx context.Context, params *ListSemestersParams, reqEditors ...RequestEditorFn) (*ListSemestersResponse, error) + // PostApiWorkspaceSubscriptionsImportCodesWithBodyWithResponse request with any body + PostApiWorkspaceSubscriptionsImportCodesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostApiWorkspaceSubscriptionsImportCodesResponse, error) - // GetCurrentSemesterWithResponse request - GetCurrentSemesterWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetCurrentSemesterResponse, error) + PostApiWorkspaceSubscriptionsImportCodesWithResponse(ctx context.Context, body PostApiWorkspaceSubscriptionsImportCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*PostApiWorkspaceSubscriptionsImportCodesResponse, error) - // ListTeachersWithResponse request - ListTeachersWithResponse(ctx context.Context, params *ListTeachersParams, reqEditors ...RequestEditorFn) (*ListTeachersResponse, error) + // QueryCalendarSubscriptionSectionsWithBodyWithResponse request with any body + QueryCalendarSubscriptionSectionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*QueryCalendarSubscriptionSectionsResponse, error) - // GetTeacherWithResponse request - GetTeacherWithResponse(ctx context.Context, id int64, params *GetTeacherParams, reqEditors ...RequestEditorFn) (*GetTeacherResponse, error) + QueryCalendarSubscriptionSectionsWithResponse(ctx context.Context, body QueryCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*QueryCalendarSubscriptionSectionsResponse, error) // ListTodosWithResponse request ListTodosWithResponse(ctx context.Context, params *ListTodosParams, reqEditors ...RequestEditorFn) (*ListTodosResponse, error) @@ -17242,22 +17334,89 @@ type ClientWithResponsesInterface interface { CompleteUploadWithResponse(ctx context.Context, body CompleteUploadJSONRequestBody, reqEditors ...RequestEditorFn) (*CompleteUploadResponse, error) - // PutApiUploadsObjectWithBodyWithResponse request with any body - PutApiUploadsObjectWithBodyWithResponse(ctx context.Context, params *PutApiUploadsObjectParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutApiUploadsObjectResponse, error) + // PutApiUploadsObjectWithBodyWithResponse request with any body + PutApiUploadsObjectWithBodyWithResponse(ctx context.Context, params *PutApiUploadsObjectParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PutApiUploadsObjectResponse, error) + + // DeleteUploadWithResponse request + DeleteUploadWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DeleteUploadResponse, error) + + // UpdateUploadWithBodyWithResponse request with any body + UpdateUploadWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateUploadResponse, error) + + UpdateUploadWithResponse(ctx context.Context, id string, body UpdateUploadJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateUploadResponse, error) + + // DownloadUploadWithResponse request + DownloadUploadWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DownloadUploadResponse, error) +} + +type GetMeResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *MeResponseSchema + JSON401 *OpenApiErrorSchema +} + +// Status returns HTTPResponse.Status +func (r GetMeResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetMeResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type SetLocaleResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *SuccessResponseSchema + JSON400 *OpenApiErrorSchema +} - // DeleteUploadWithResponse request - DeleteUploadWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DeleteUploadResponse, error) +// Status returns HTTPResponse.Status +func (r SetLocaleResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} - // UpdateUploadWithBodyWithResponse request with any body - UpdateUploadWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateUploadResponse, error) +// StatusCode returns HTTPResponse.StatusCode +func (r SetLocaleResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} - UpdateUploadWithResponse(ctx context.Context, id string, body UpdateUploadJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateUploadResponse, error) +type GetApiAccountProfileResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *PublicUserProfileResponseSchema + JSON400 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema +} - // DownloadUploadWithResponse request - DownloadUploadWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DownloadUploadResponse, error) +// Status returns HTTPResponse.Status +func (r GetApiAccountProfileResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} - // GetUserCalendarWithResponse request - GetUserCalendarWithResponse(ctx context.Context, userId string, params *GetUserCalendarParams, reqEditors ...RequestEditorFn) (*GetUserCalendarResponse, error) +// StatusCode returns HTTPResponse.StatusCode +func (r GetApiAccountProfileResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 } type ListAdminCommentsResponse struct { @@ -17568,7 +17727,7 @@ func (r QueryBusResponse) StatusCode() int { return 0 } -type GetApiBusNextResponse struct { +type GetApiCatalogBusNextResponse struct { Body []byte HTTPResponse *http.Response JSON200 *BusNextDeparturesResponseSchema @@ -17577,7 +17736,7 @@ type GetApiBusNextResponse struct { } // Status returns HTTPResponse.Status -func (r GetApiBusNextResponse) Status() string { +func (r GetApiCatalogBusNextResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17585,22 +17744,23 @@ func (r GetApiBusNextResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetApiBusNextResponse) StatusCode() int { +func (r GetApiCatalogBusNextResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetBusPreferencesResponse struct { +type GetApiBusRoutesResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *BusPreferenceResponseSchema - JSON401 *OpenApiErrorSchema + JSON200 *BusRouteSearchResponseSchema + JSON400 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetBusPreferencesResponse) Status() string { +func (r GetApiBusRoutesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17608,25 +17768,22 @@ func (r GetBusPreferencesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetBusPreferencesResponse) StatusCode() int { +func (r GetApiBusRoutesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type SetBusPreferencesResponse struct { +type ListCoursesResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *BusPreferenceResponseSchema + JSON200 *PaginatedCourseResponseSchema JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r SetBusPreferencesResponse) Status() string { +func (r ListCoursesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17634,23 +17791,23 @@ func (r SetBusPreferencesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r SetBusPreferencesResponse) StatusCode() int { +func (r ListCoursesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetApiBusRoutesResponse struct { +type GetCourseResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *BusRouteSearchResponseSchema + JSON200 *CourseDetailSchema JSON400 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetApiBusRoutesResponse) Status() string { +func (r GetCourseResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17658,26 +17815,21 @@ func (r GetApiBusRoutesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetApiBusRoutesResponse) StatusCode() int { +func (r GetCourseResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type DeleteApiCalendarSubscriptionsResponse struct { +type GetMetadataResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CalendarSubscriptionRemoveResponseSchema - JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON404 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema + JSON200 *MetadataResponseSchema } // Status returns HTTPResponse.Status -func (r DeleteApiCalendarSubscriptionsResponse) Status() string { +func (r GetMetadataResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17685,26 +17837,22 @@ func (r DeleteApiCalendarSubscriptionsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r DeleteApiCalendarSubscriptionsResponse) StatusCode() int { +func (r GetMetadataResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type AppendCalendarSubscriptionSectionsResponse struct { +type ListSchedulesResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CalendarSubscriptionAppendResponseSchema + JSON200 *PaginatedScheduleResponseSchema JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON404 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r AppendCalendarSubscriptionSectionsResponse) Status() string { +func (r ListSchedulesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17712,25 +17860,22 @@ func (r AppendCalendarSubscriptionSectionsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r AppendCalendarSubscriptionSectionsResponse) StatusCode() int { +func (r ListSchedulesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type SetCalendarSubscriptionResponse struct { +type ListSectionsResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CalendarSubscriptionCreateResponseSchema + JSON200 *PaginatedSectionResponseSchema JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r SetCalendarSubscriptionResponse) Status() string { +func (r ListSectionsResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17738,26 +17883,21 @@ func (r SetCalendarSubscriptionResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r SetCalendarSubscriptionResponse) StatusCode() int { +func (r ListSectionsResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type BatchUpdateCalendarSubscriptionResponse struct { +type GetSectionsCalendarResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CalendarSubscriptionBatchResponseSchema JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON404 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r BatchUpdateCalendarSubscriptionResponse) Status() string { +func (r GetSectionsCalendarResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17765,22 +17905,23 @@ func (r BatchUpdateCalendarSubscriptionResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r BatchUpdateCalendarSubscriptionResponse) StatusCode() int { +func (r GetSectionsCalendarResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetCurrentCalendarSubscriptionResponse struct { +type MatchSectionCodesResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CurrentCalendarSubscriptionResponseSchema - JSON401 *OpenApiErrorSchema + JSON200 *MatchSectionCodesResponseSchema + JSON400 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetCurrentCalendarSubscriptionResponse) Status() string { +func (r MatchSectionCodesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17788,26 +17929,23 @@ func (r GetCurrentCalendarSubscriptionResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetCurrentCalendarSubscriptionResponse) StatusCode() int { +func (r MatchSectionCodesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type PostApiCalendarSubscriptionsImportCodesResponse struct { +type GetSectionResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CalendarSubscriptionImportResponseSchema + JSON200 *SectionDetailSchema JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r PostApiCalendarSubscriptionsImportCodesResponse) Status() string { +func (r GetSectionResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17815,24 +17953,21 @@ func (r PostApiCalendarSubscriptionsImportCodesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r PostApiCalendarSubscriptionsImportCodesResponse) StatusCode() int { +func (r GetSectionResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type QueryCalendarSubscriptionSectionsResponse struct { +type GetSectionCalendarResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CalendarSubscriptionQueryResponseSchema - JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r QueryCalendarSubscriptionSectionsResponse) Status() string { +func (r GetSectionCalendarResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17840,23 +17975,22 @@ func (r QueryCalendarSubscriptionSectionsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r QueryCalendarSubscriptionSectionsResponse) StatusCode() int { +func (r GetSectionCalendarResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListCommentsResponse struct { +type GetSectionScheduleGroupsResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CommentsListResponseSchema - JSON400 *OpenApiErrorSchema + JSON200 *[]map[string]interface{} JSON404 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r ListCommentsResponse) Status() string { +func (r GetSectionScheduleGroupsResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17864,27 +17998,23 @@ func (r ListCommentsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListCommentsResponse) StatusCode() int { +func (r GetSectionScheduleGroupsResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type CreateCommentResponse struct { +type GetSectionSchedulesResponse struct { Body []byte HTTPResponse *http.Response - JSON201 *IdResponseSchema + JSON200 *[]map[string]interface{} JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON403 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r CreateCommentResponse) Status() string { +func (r GetSectionSchedulesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17892,26 +18022,22 @@ func (r CreateCommentResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r CreateCommentResponse) StatusCode() int { +func (r GetSectionSchedulesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type DeleteApiCommentsBatchResponse struct { +type ListSemestersResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CommentBatchDeleteResponseSchema + JSON200 *PaginatedSemesterResponseSchema JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON403 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r DeleteApiCommentsBatchResponse) Status() string { +func (r ListSemestersResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17919,26 +18045,22 @@ func (r DeleteApiCommentsBatchResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r DeleteApiCommentsBatchResponse) StatusCode() int { +func (r ListSemestersResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type DeleteCommentResponse struct { +type GetCurrentSemesterResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *SuccessResponseSchema - JSON401 *OpenApiErrorSchema - JSON403 *OpenApiErrorSchema + JSON200 *SemesterSchema JSON404 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r DeleteCommentResponse) Status() string { +func (r GetCurrentSemesterResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17946,23 +18068,22 @@ func (r DeleteCommentResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r DeleteCommentResponse) StatusCode() int { +func (r GetCurrentSemesterResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetCommentResponse struct { +type ListTeachersResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CommentThreadResponseSchema - JSON403 *OpenApiErrorSchema - JSON404 *OpenApiErrorSchema + JSON200 *PaginatedTeacherResponseSchema + JSON400 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetCommentResponse) Status() string { +func (r ListTeachersResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17970,27 +18091,23 @@ func (r GetCommentResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetCommentResponse) StatusCode() int { +func (r ListTeachersResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type UpdateCommentResponse struct { +type GetTeacherResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CommentUpdateResponseSchema + JSON200 *TeacherDetailSchema JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON403 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r UpdateCommentResponse) Status() string { +func (r GetTeacherResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -17998,26 +18115,23 @@ func (r UpdateCommentResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r UpdateCommentResponse) StatusCode() int { +func (r GetTeacherResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type RemoveCommentReactionResponse struct { +type ListCommentsResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *SuccessResponseSchema + JSON200 *CommentsListResponseSchema JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON403 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r RemoveCommentReactionResponse) Status() string { +func (r ListCommentsResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18025,17 +18139,17 @@ func (r RemoveCommentReactionResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r RemoveCommentReactionResponse) StatusCode() int { +func (r ListCommentsResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type AddCommentReactionResponse struct { +type CreateCommentResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *SuccessResponseSchema + JSON201 *IdResponseSchema JSON400 *OpenApiErrorSchema JSON401 *OpenApiErrorSchema JSON403 *OpenApiErrorSchema @@ -18045,7 +18159,7 @@ type AddCommentReactionResponse struct { } // Status returns HTTPResponse.Status -func (r AddCommentReactionResponse) Status() string { +func (r CreateCommentResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18053,22 +18167,26 @@ func (r AddCommentReactionResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r AddCommentReactionResponse) StatusCode() int { +func (r CreateCommentResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListCoursesResponse struct { +type DeleteApiCommentsBatchResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *PaginatedCourseResponseSchema + JSON200 *CommentBatchDeleteResponseSchema JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema + JSON403 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r ListCoursesResponse) Status() string { +func (r DeleteApiCommentsBatchResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18076,23 +18194,26 @@ func (r ListCoursesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListCoursesResponse) StatusCode() int { +func (r DeleteApiCommentsBatchResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetCourseResponse struct { +type DeleteCommentResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CourseDetailSchema - JSON400 *OpenApiErrorSchema + JSON200 *SuccessResponseSchema + JSON401 *OpenApiErrorSchema + JSON403 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetCourseResponse) Status() string { +func (r DeleteCommentResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18100,26 +18221,23 @@ func (r GetCourseResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetCourseResponse) StatusCode() int { +func (r DeleteCommentResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type PinDashboardLinkResponse struct { +type GetCommentResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *DashboardLinkPinResponseSchema - JSON400 *DashboardLinkPinResponseSchema - JSON401 *DashboardLinkPinResponseSchema - JSON429 *OpenApiErrorSchema - JSON500 *DashboardLinkPinResponseSchema - JSON503 *OpenApiErrorSchema + JSON200 *CommentThreadResponseSchema + JSON403 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r PinDashboardLinkResponse) Status() string { +func (r GetCommentResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18127,26 +18245,27 @@ func (r PinDashboardLinkResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r PinDashboardLinkResponse) StatusCode() int { +func (r GetCommentResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type PostApiDashboardLinksPinBatchResponse struct { +type UpdateCommentResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *DashboardLinkPinResponseSchema - JSON400 *DashboardLinkPinResponseSchema + JSON200 *CommentUpdateResponseSchema + JSON400 *OpenApiErrorSchema JSON401 *OpenApiErrorSchema + JSON403 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema JSON429 *OpenApiErrorSchema - JSON500 *DashboardLinkPinResponseSchema JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r PostApiDashboardLinksPinBatchResponse) Status() string { +func (r UpdateCommentResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18154,20 +18273,26 @@ func (r PostApiDashboardLinksPinBatchResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r PostApiDashboardLinksPinBatchResponse) StatusCode() int { +func (r UpdateCommentResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type VisitDashboardLinkResponse struct { +type RemoveCommentReactionResponse struct { Body []byte HTTPResponse *http.Response + JSON200 *SuccessResponseSchema + JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema + JSON403 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r VisitDashboardLinkResponse) Status() string { +func (r RemoveCommentReactionResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18175,20 +18300,27 @@ func (r VisitDashboardLinkResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r VisitDashboardLinkResponse) StatusCode() int { +func (r RemoveCommentReactionResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type RecordDashboardLinkVisitResponse struct { +type AddCommentReactionResponse struct { Body []byte HTTPResponse *http.Response + JSON200 *SuccessResponseSchema + JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema + JSON403 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r RecordDashboardLinkVisitResponse) Status() string { +func (r AddCommentReactionResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18196,7 +18328,7 @@ func (r RecordDashboardLinkVisitResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r RecordDashboardLinkVisitResponse) StatusCode() int { +func (r AddCommentReactionResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -18307,32 +18439,6 @@ func (r CreateHomeworkResponse) StatusCode() int { return 0 } -type PutApiHomeworksCompletionsResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *HomeworkCompletionBatchResponseSchema - JSON400 *OpenApiErrorSchema - JSON401 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema -} - -// Status returns HTTPResponse.Status -func (r PutApiHomeworksCompletionsResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} - -// StatusCode returns HTTPResponse.StatusCode -func (r PutApiHomeworksCompletionsResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} - type DeleteHomeworkResponse struct { Body []byte HTTPResponse *http.Response @@ -18388,19 +18494,16 @@ func (r UpdateHomeworkResponse) StatusCode() int { return 0 } -type SetHomeworkCompletionResponse struct { +type GetUserCalendarResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *HomeworkCompletionResponseSchema - JSON400 *OpenApiErrorSchema JSON401 *OpenApiErrorSchema + JSON403 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema - JSON429 *OpenApiErrorSchema - JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r SetHomeworkCompletionResponse) Status() string { +func (r GetUserCalendarResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18408,22 +18511,21 @@ func (r SetHomeworkCompletionResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r SetHomeworkCompletionResponse) StatusCode() int { +func (r GetUserCalendarResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type SetLocaleResponse struct { +type GetOpenApiSpecResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *SuccessResponseSchema - JSON400 *OpenApiErrorSchema + JSON200 *OpenApiDocumentResponseSchema } // Status returns HTTPResponse.Status -func (r SetLocaleResponse) Status() string { +func (r GetOpenApiSpecResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18431,22 +18533,22 @@ func (r SetLocaleResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r SetLocaleResponse) StatusCode() int { +func (r GetOpenApiSpecResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetMeResponse struct { +type GetBusPreferencesResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *MeResponseSchema + JSON200 *BusPreferenceResponseSchema JSON401 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetMeResponse) Status() string { +func (r GetBusPreferencesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18454,23 +18556,25 @@ func (r GetMeResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetMeResponse) StatusCode() int { +func (r GetBusPreferencesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetApiMeOverviewResponse struct { +type SetBusPreferencesResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *CompactOverviewResponseSchema + JSON200 *BusPreferenceResponseSchema JSON400 *OpenApiErrorSchema JSON401 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetApiMeOverviewResponse) Status() string { +func (r SetBusPreferencesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18478,7 +18582,7 @@ func (r GetApiMeOverviewResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetApiMeOverviewResponse) StatusCode() int { +func (r SetBusPreferencesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -18508,16 +18612,18 @@ func (r GetSubscribedHomeworksResponse) StatusCode() int { return 0 } -type GetApiMeSubscriptionsSchedulesResponse struct { +type PutApiHomeworksCompletionsResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *SubscribedSchedulesResponseSchema + JSON200 *HomeworkCompletionBatchResponseSchema JSON400 *OpenApiErrorSchema JSON401 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetApiMeSubscriptionsSchedulesResponse) Status() string { +func (r PutApiHomeworksCompletionsResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18525,21 +18631,26 @@ func (r GetApiMeSubscriptionsSchedulesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetApiMeSubscriptionsSchedulesResponse) StatusCode() int { +func (r PutApiHomeworksCompletionsResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetMetadataResponse struct { +type SetHomeworkCompletionResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *MetadataResponseSchema + JSON200 *HomeworkCompletionResponseSchema + JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetMetadataResponse) Status() string { +func (r SetHomeworkCompletionResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18547,21 +18658,26 @@ func (r GetMetadataResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetMetadataResponse) StatusCode() int { +func (r SetHomeworkCompletionResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetOpenApiSpecResponse struct { +type PinDashboardLinkResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *OpenApiDocumentResponseSchema + JSON200 *DashboardLinkPinResponseSchema + JSON400 *DashboardLinkPinResponseSchema + JSON401 *DashboardLinkPinResponseSchema + JSON429 *OpenApiErrorSchema + JSON500 *DashboardLinkPinResponseSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetOpenApiSpecResponse) Status() string { +func (r PinDashboardLinkResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18569,22 +18685,26 @@ func (r GetOpenApiSpecResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetOpenApiSpecResponse) StatusCode() int { +func (r PinDashboardLinkResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListSchedulesResponse struct { +type PostApiWorkspaceLinksPinBatchResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *PaginatedScheduleResponseSchema - JSON400 *OpenApiErrorSchema + JSON200 *DashboardLinkPinResponseSchema + JSON400 *DashboardLinkPinResponseSchema + JSON401 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON500 *DashboardLinkPinResponseSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r ListSchedulesResponse) Status() string { +func (r PostApiWorkspaceLinksPinBatchResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18592,22 +18712,20 @@ func (r ListSchedulesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListSchedulesResponse) StatusCode() int { +func (r PostApiWorkspaceLinksPinBatchResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListSectionsResponse struct { +type VisitDashboardLinkResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *PaginatedSectionResponseSchema - JSON400 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r ListSectionsResponse) Status() string { +func (r VisitDashboardLinkResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18615,21 +18733,20 @@ func (r ListSectionsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListSectionsResponse) StatusCode() int { +func (r VisitDashboardLinkResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetSectionsCalendarResponse struct { +type RecordDashboardLinkVisitResponse struct { Body []byte HTTPResponse *http.Response - JSON400 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetSectionsCalendarResponse) Status() string { +func (r RecordDashboardLinkVisitResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18637,23 +18754,23 @@ func (r GetSectionsCalendarResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetSectionsCalendarResponse) StatusCode() int { +func (r RecordDashboardLinkVisitResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type MatchSectionCodesResponse struct { +type GetApiMeOverviewResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *MatchSectionCodesResponseSchema + JSON200 *CompactOverviewResponseSchema JSON400 *OpenApiErrorSchema - JSON404 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r MatchSectionCodesResponse) Status() string { +func (r GetApiMeOverviewResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18661,23 +18778,23 @@ func (r MatchSectionCodesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r MatchSectionCodesResponse) StatusCode() int { +func (r GetApiMeOverviewResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetSectionResponse struct { +type GetApiMeSubscriptionsSchedulesResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *SectionDetailSchema + JSON200 *SubscribedSchedulesResponseSchema JSON400 *OpenApiErrorSchema - JSON404 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetSectionResponse) Status() string { +func (r GetApiMeSubscriptionsSchedulesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18685,21 +18802,26 @@ func (r GetSectionResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetSectionResponse) StatusCode() int { +func (r GetApiMeSubscriptionsSchedulesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetSectionCalendarResponse struct { +type DeleteApiWorkspaceSubscriptionsResponse struct { Body []byte HTTPResponse *http.Response + JSON200 *CalendarSubscriptionRemoveResponseSchema + JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetSectionCalendarResponse) Status() string { +func (r DeleteApiWorkspaceSubscriptionsResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18707,22 +18829,26 @@ func (r GetSectionCalendarResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetSectionCalendarResponse) StatusCode() int { +func (r DeleteApiWorkspaceSubscriptionsResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetSectionScheduleGroupsResponse struct { +type AppendCalendarSubscriptionSectionsResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *[]map[string]interface{} + JSON200 *CalendarSubscriptionAppendResponseSchema + JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetSectionScheduleGroupsResponse) Status() string { +func (r AppendCalendarSubscriptionSectionsResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18730,23 +18856,25 @@ func (r GetSectionScheduleGroupsResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetSectionScheduleGroupsResponse) StatusCode() int { +func (r AppendCalendarSubscriptionSectionsResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetSectionSchedulesResponse struct { +type SetCalendarSubscriptionResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *[]map[string]interface{} + JSON200 *CalendarSubscriptionCreateResponseSchema JSON400 *OpenApiErrorSchema - JSON404 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetSectionSchedulesResponse) Status() string { +func (r SetCalendarSubscriptionResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18754,22 +18882,26 @@ func (r GetSectionSchedulesResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetSectionSchedulesResponse) StatusCode() int { +func (r SetCalendarSubscriptionResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListSemestersResponse struct { +type BatchUpdateCalendarSubscriptionResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *PaginatedSemesterResponseSchema + JSON200 *CalendarSubscriptionBatchResponseSchema JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r ListSemestersResponse) Status() string { +func (r BatchUpdateCalendarSubscriptionResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18777,22 +18909,22 @@ func (r ListSemestersResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListSemestersResponse) StatusCode() int { +func (r BatchUpdateCalendarSubscriptionResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetCurrentSemesterResponse struct { +type GetCurrentCalendarSubscriptionResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *SemesterSchema - JSON404 *OpenApiErrorSchema + JSON200 *CurrentCalendarSubscriptionResponseSchema + JSON401 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetCurrentSemesterResponse) Status() string { +func (r GetCurrentCalendarSubscriptionResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18800,22 +18932,26 @@ func (r GetCurrentSemesterResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetCurrentSemesterResponse) StatusCode() int { +func (r GetCurrentCalendarSubscriptionResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type ListTeachersResponse struct { +type PostApiWorkspaceSubscriptionsImportCodesResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *PaginatedTeacherResponseSchema + JSON200 *CalendarSubscriptionImportResponseSchema JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema + JSON404 *OpenApiErrorSchema + JSON429 *OpenApiErrorSchema + JSON503 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r ListTeachersResponse) Status() string { +func (r PostApiWorkspaceSubscriptionsImportCodesResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18823,23 +18959,24 @@ func (r ListTeachersResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListTeachersResponse) StatusCode() int { +func (r PostApiWorkspaceSubscriptionsImportCodesResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } return 0 } -type GetTeacherResponse struct { +type QueryCalendarSubscriptionSectionsResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *TeacherDetailSchema + JSON200 *CalendarSubscriptionQueryResponseSchema JSON400 *OpenApiErrorSchema + JSON401 *OpenApiErrorSchema JSON404 *OpenApiErrorSchema } // Status returns HTTPResponse.Status -func (r GetTeacherResponse) Status() string { +func (r QueryCalendarSubscriptionSectionsResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -18847,7 +18984,7 @@ func (r GetTeacherResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetTeacherResponse) StatusCode() int { +func (r QueryCalendarSubscriptionSectionsResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -19197,28 +19334,39 @@ func (r DownloadUploadResponse) StatusCode() int { return 0 } -type GetUserCalendarResponse struct { - Body []byte - HTTPResponse *http.Response - JSON401 *OpenApiErrorSchema - JSON403 *OpenApiErrorSchema - JSON404 *OpenApiErrorSchema +// GetMeWithResponse request returning *GetMeResponse +func (c *ClientWithResponses) GetMeWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetMeResponse, error) { + rsp, err := c.GetMe(ctx, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetMeResponse(rsp) } -// Status returns HTTPResponse.Status -func (r GetUserCalendarResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status +// SetLocaleWithBodyWithResponse request with arbitrary body returning *SetLocaleResponse +func (c *ClientWithResponses) SetLocaleWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetLocaleResponse, error) { + rsp, err := c.SetLocaleWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err } - return http.StatusText(0) + return ParseSetLocaleResponse(rsp) } -// StatusCode returns HTTPResponse.StatusCode -func (r GetUserCalendarResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode +func (c *ClientWithResponses) SetLocaleWithResponse(ctx context.Context, body SetLocaleJSONRequestBody, reqEditors ...RequestEditorFn) (*SetLocaleResponse, error) { + rsp, err := c.SetLocale(ctx, body, reqEditors...) + if err != nil { + return nil, err } - return 0 + return ParseSetLocaleResponse(rsp) +} + +// GetApiAccountProfileWithResponse request returning *GetApiAccountProfileResponse +func (c *ClientWithResponses) GetApiAccountProfileWithResponse(ctx context.Context, params *GetApiAccountProfileParams, reqEditors ...RequestEditorFn) (*GetApiAccountProfileResponse, error) { + rsp, err := c.GetApiAccountProfile(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetApiAccountProfileResponse(rsp) } // ListAdminCommentsWithResponse request returning *ListAdminCommentsResponse @@ -19361,159 +19509,165 @@ func (c *ClientWithResponses) QueryBusWithResponse(ctx context.Context, params * return ParseQueryBusResponse(rsp) } -// GetApiBusNextWithResponse request returning *GetApiBusNextResponse -func (c *ClientWithResponses) GetApiBusNextWithResponse(ctx context.Context, params *GetApiBusNextParams, reqEditors ...RequestEditorFn) (*GetApiBusNextResponse, error) { - rsp, err := c.GetApiBusNext(ctx, params, reqEditors...) +// GetApiCatalogBusNextWithResponse request returning *GetApiCatalogBusNextResponse +func (c *ClientWithResponses) GetApiCatalogBusNextWithResponse(ctx context.Context, params *GetApiCatalogBusNextParams, reqEditors ...RequestEditorFn) (*GetApiCatalogBusNextResponse, error) { + rsp, err := c.GetApiCatalogBusNext(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseGetApiBusNextResponse(rsp) + return ParseGetApiCatalogBusNextResponse(rsp) } -// GetBusPreferencesWithResponse request returning *GetBusPreferencesResponse -func (c *ClientWithResponses) GetBusPreferencesWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetBusPreferencesResponse, error) { - rsp, err := c.GetBusPreferences(ctx, reqEditors...) +// GetApiBusRoutesWithResponse request returning *GetApiBusRoutesResponse +func (c *ClientWithResponses) GetApiBusRoutesWithResponse(ctx context.Context, params *GetApiBusRoutesParams, reqEditors ...RequestEditorFn) (*GetApiBusRoutesResponse, error) { + rsp, err := c.GetApiBusRoutes(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseGetBusPreferencesResponse(rsp) + return ParseGetApiBusRoutesResponse(rsp) } -// SetBusPreferencesWithBodyWithResponse request with arbitrary body returning *SetBusPreferencesResponse -func (c *ClientWithResponses) SetBusPreferencesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetBusPreferencesResponse, error) { - rsp, err := c.SetBusPreferencesWithBody(ctx, contentType, body, reqEditors...) +// ListCoursesWithResponse request returning *ListCoursesResponse +func (c *ClientWithResponses) ListCoursesWithResponse(ctx context.Context, params *ListCoursesParams, reqEditors ...RequestEditorFn) (*ListCoursesResponse, error) { + rsp, err := c.ListCourses(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseSetBusPreferencesResponse(rsp) + return ParseListCoursesResponse(rsp) } -func (c *ClientWithResponses) SetBusPreferencesWithResponse(ctx context.Context, body SetBusPreferencesJSONRequestBody, reqEditors ...RequestEditorFn) (*SetBusPreferencesResponse, error) { - rsp, err := c.SetBusPreferences(ctx, body, reqEditors...) +// GetCourseWithResponse request returning *GetCourseResponse +func (c *ClientWithResponses) GetCourseWithResponse(ctx context.Context, jwId int64, params *GetCourseParams, reqEditors ...RequestEditorFn) (*GetCourseResponse, error) { + rsp, err := c.GetCourse(ctx, jwId, params, reqEditors...) if err != nil { return nil, err } - return ParseSetBusPreferencesResponse(rsp) + return ParseGetCourseResponse(rsp) } -// GetApiBusRoutesWithResponse request returning *GetApiBusRoutesResponse -func (c *ClientWithResponses) GetApiBusRoutesWithResponse(ctx context.Context, params *GetApiBusRoutesParams, reqEditors ...RequestEditorFn) (*GetApiBusRoutesResponse, error) { - rsp, err := c.GetApiBusRoutes(ctx, params, reqEditors...) +// GetMetadataWithResponse request returning *GetMetadataResponse +func (c *ClientWithResponses) GetMetadataWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetMetadataResponse, error) { + rsp, err := c.GetMetadata(ctx, reqEditors...) if err != nil { return nil, err } - return ParseGetApiBusRoutesResponse(rsp) + return ParseGetMetadataResponse(rsp) } -// DeleteApiCalendarSubscriptionsWithBodyWithResponse request with arbitrary body returning *DeleteApiCalendarSubscriptionsResponse -func (c *ClientWithResponses) DeleteApiCalendarSubscriptionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*DeleteApiCalendarSubscriptionsResponse, error) { - rsp, err := c.DeleteApiCalendarSubscriptionsWithBody(ctx, contentType, body, reqEditors...) +// ListSchedulesWithResponse request returning *ListSchedulesResponse +func (c *ClientWithResponses) ListSchedulesWithResponse(ctx context.Context, params *ListSchedulesParams, reqEditors ...RequestEditorFn) (*ListSchedulesResponse, error) { + rsp, err := c.ListSchedules(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseDeleteApiCalendarSubscriptionsResponse(rsp) + return ParseListSchedulesResponse(rsp) } -func (c *ClientWithResponses) DeleteApiCalendarSubscriptionsWithResponse(ctx context.Context, body DeleteApiCalendarSubscriptionsJSONRequestBody, reqEditors ...RequestEditorFn) (*DeleteApiCalendarSubscriptionsResponse, error) { - rsp, err := c.DeleteApiCalendarSubscriptions(ctx, body, reqEditors...) +// ListSectionsWithResponse request returning *ListSectionsResponse +func (c *ClientWithResponses) ListSectionsWithResponse(ctx context.Context, params *ListSectionsParams, reqEditors ...RequestEditorFn) (*ListSectionsResponse, error) { + rsp, err := c.ListSections(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseDeleteApiCalendarSubscriptionsResponse(rsp) + return ParseListSectionsResponse(rsp) } -// AppendCalendarSubscriptionSectionsWithBodyWithResponse request with arbitrary body returning *AppendCalendarSubscriptionSectionsResponse -func (c *ClientWithResponses) AppendCalendarSubscriptionSectionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AppendCalendarSubscriptionSectionsResponse, error) { - rsp, err := c.AppendCalendarSubscriptionSectionsWithBody(ctx, contentType, body, reqEditors...) +// GetSectionsCalendarWithResponse request returning *GetSectionsCalendarResponse +func (c *ClientWithResponses) GetSectionsCalendarWithResponse(ctx context.Context, params *GetSectionsCalendarParams, reqEditors ...RequestEditorFn) (*GetSectionsCalendarResponse, error) { + rsp, err := c.GetSectionsCalendar(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseAppendCalendarSubscriptionSectionsResponse(rsp) + return ParseGetSectionsCalendarResponse(rsp) } -func (c *ClientWithResponses) AppendCalendarSubscriptionSectionsWithResponse(ctx context.Context, body AppendCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*AppendCalendarSubscriptionSectionsResponse, error) { - rsp, err := c.AppendCalendarSubscriptionSections(ctx, body, reqEditors...) +// MatchSectionCodesWithBodyWithResponse request with arbitrary body returning *MatchSectionCodesResponse +func (c *ClientWithResponses) MatchSectionCodesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*MatchSectionCodesResponse, error) { + rsp, err := c.MatchSectionCodesWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseAppendCalendarSubscriptionSectionsResponse(rsp) + return ParseMatchSectionCodesResponse(rsp) } -// SetCalendarSubscriptionWithBodyWithResponse request with arbitrary body returning *SetCalendarSubscriptionResponse -func (c *ClientWithResponses) SetCalendarSubscriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetCalendarSubscriptionResponse, error) { - rsp, err := c.SetCalendarSubscriptionWithBody(ctx, contentType, body, reqEditors...) +func (c *ClientWithResponses) MatchSectionCodesWithResponse(ctx context.Context, body MatchSectionCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*MatchSectionCodesResponse, error) { + rsp, err := c.MatchSectionCodes(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseSetCalendarSubscriptionResponse(rsp) + return ParseMatchSectionCodesResponse(rsp) } -func (c *ClientWithResponses) SetCalendarSubscriptionWithResponse(ctx context.Context, body SetCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*SetCalendarSubscriptionResponse, error) { - rsp, err := c.SetCalendarSubscription(ctx, body, reqEditors...) +// GetSectionWithResponse request returning *GetSectionResponse +func (c *ClientWithResponses) GetSectionWithResponse(ctx context.Context, jwId int64, params *GetSectionParams, reqEditors ...RequestEditorFn) (*GetSectionResponse, error) { + rsp, err := c.GetSection(ctx, jwId, params, reqEditors...) if err != nil { return nil, err } - return ParseSetCalendarSubscriptionResponse(rsp) + return ParseGetSectionResponse(rsp) } -// BatchUpdateCalendarSubscriptionWithBodyWithResponse request with arbitrary body returning *BatchUpdateCalendarSubscriptionResponse -func (c *ClientWithResponses) BatchUpdateCalendarSubscriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*BatchUpdateCalendarSubscriptionResponse, error) { - rsp, err := c.BatchUpdateCalendarSubscriptionWithBody(ctx, contentType, body, reqEditors...) +// GetSectionCalendarWithResponse request returning *GetSectionCalendarResponse +func (c *ClientWithResponses) GetSectionCalendarWithResponse(ctx context.Context, jwId int64, reqEditors ...RequestEditorFn) (*GetSectionCalendarResponse, error) { + rsp, err := c.GetSectionCalendar(ctx, jwId, reqEditors...) if err != nil { return nil, err } - return ParseBatchUpdateCalendarSubscriptionResponse(rsp) + return ParseGetSectionCalendarResponse(rsp) } -func (c *ClientWithResponses) BatchUpdateCalendarSubscriptionWithResponse(ctx context.Context, body BatchUpdateCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*BatchUpdateCalendarSubscriptionResponse, error) { - rsp, err := c.BatchUpdateCalendarSubscription(ctx, body, reqEditors...) +// GetSectionScheduleGroupsWithResponse request returning *GetSectionScheduleGroupsResponse +func (c *ClientWithResponses) GetSectionScheduleGroupsWithResponse(ctx context.Context, jwId int64, params *GetSectionScheduleGroupsParams, reqEditors ...RequestEditorFn) (*GetSectionScheduleGroupsResponse, error) { + rsp, err := c.GetSectionScheduleGroups(ctx, jwId, params, reqEditors...) if err != nil { return nil, err } - return ParseBatchUpdateCalendarSubscriptionResponse(rsp) + return ParseGetSectionScheduleGroupsResponse(rsp) } -// GetCurrentCalendarSubscriptionWithResponse request returning *GetCurrentCalendarSubscriptionResponse -func (c *ClientWithResponses) GetCurrentCalendarSubscriptionWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetCurrentCalendarSubscriptionResponse, error) { - rsp, err := c.GetCurrentCalendarSubscription(ctx, reqEditors...) +// GetSectionSchedulesWithResponse request returning *GetSectionSchedulesResponse +func (c *ClientWithResponses) GetSectionSchedulesWithResponse(ctx context.Context, jwId int64, params *GetSectionSchedulesParams, reqEditors ...RequestEditorFn) (*GetSectionSchedulesResponse, error) { + rsp, err := c.GetSectionSchedules(ctx, jwId, params, reqEditors...) if err != nil { return nil, err } - return ParseGetCurrentCalendarSubscriptionResponse(rsp) + return ParseGetSectionSchedulesResponse(rsp) } -// PostApiCalendarSubscriptionsImportCodesWithBodyWithResponse request with arbitrary body returning *PostApiCalendarSubscriptionsImportCodesResponse -func (c *ClientWithResponses) PostApiCalendarSubscriptionsImportCodesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostApiCalendarSubscriptionsImportCodesResponse, error) { - rsp, err := c.PostApiCalendarSubscriptionsImportCodesWithBody(ctx, contentType, body, reqEditors...) +// ListSemestersWithResponse request returning *ListSemestersResponse +func (c *ClientWithResponses) ListSemestersWithResponse(ctx context.Context, params *ListSemestersParams, reqEditors ...RequestEditorFn) (*ListSemestersResponse, error) { + rsp, err := c.ListSemesters(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParsePostApiCalendarSubscriptionsImportCodesResponse(rsp) + return ParseListSemestersResponse(rsp) } -func (c *ClientWithResponses) PostApiCalendarSubscriptionsImportCodesWithResponse(ctx context.Context, body PostApiCalendarSubscriptionsImportCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*PostApiCalendarSubscriptionsImportCodesResponse, error) { - rsp, err := c.PostApiCalendarSubscriptionsImportCodes(ctx, body, reqEditors...) +// GetCurrentSemesterWithResponse request returning *GetCurrentSemesterResponse +func (c *ClientWithResponses) GetCurrentSemesterWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetCurrentSemesterResponse, error) { + rsp, err := c.GetCurrentSemester(ctx, reqEditors...) if err != nil { return nil, err } - return ParsePostApiCalendarSubscriptionsImportCodesResponse(rsp) + return ParseGetCurrentSemesterResponse(rsp) } -// QueryCalendarSubscriptionSectionsWithBodyWithResponse request with arbitrary body returning *QueryCalendarSubscriptionSectionsResponse -func (c *ClientWithResponses) QueryCalendarSubscriptionSectionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*QueryCalendarSubscriptionSectionsResponse, error) { - rsp, err := c.QueryCalendarSubscriptionSectionsWithBody(ctx, contentType, body, reqEditors...) +// ListTeachersWithResponse request returning *ListTeachersResponse +func (c *ClientWithResponses) ListTeachersWithResponse(ctx context.Context, params *ListTeachersParams, reqEditors ...RequestEditorFn) (*ListTeachersResponse, error) { + rsp, err := c.ListTeachers(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseQueryCalendarSubscriptionSectionsResponse(rsp) + return ParseListTeachersResponse(rsp) } -func (c *ClientWithResponses) QueryCalendarSubscriptionSectionsWithResponse(ctx context.Context, body QueryCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*QueryCalendarSubscriptionSectionsResponse, error) { - rsp, err := c.QueryCalendarSubscriptionSections(ctx, body, reqEditors...) +// GetTeacherWithResponse request returning *GetTeacherResponse +func (c *ClientWithResponses) GetTeacherWithResponse(ctx context.Context, id int64, params *GetTeacherParams, reqEditors ...RequestEditorFn) (*GetTeacherResponse, error) { + rsp, err := c.GetTeacher(ctx, id, params, reqEditors...) if err != nil { return nil, err } - return ParseQueryCalendarSubscriptionSectionsResponse(rsp) + return ParseGetTeacherResponse(rsp) } // ListCommentsWithResponse request returning *ListCommentsResponse @@ -19620,134 +19774,135 @@ func (c *ClientWithResponses) AddCommentReactionWithResponse(ctx context.Context return ParseAddCommentReactionResponse(rsp) } -// ListCoursesWithResponse request returning *ListCoursesResponse -func (c *ClientWithResponses) ListCoursesWithResponse(ctx context.Context, params *ListCoursesParams, reqEditors ...RequestEditorFn) (*ListCoursesResponse, error) { - rsp, err := c.ListCourses(ctx, params, reqEditors...) +// GetDescriptionWithResponse request returning *GetDescriptionResponse +func (c *ClientWithResponses) GetDescriptionWithResponse(ctx context.Context, params *GetDescriptionParams, reqEditors ...RequestEditorFn) (*GetDescriptionResponse, error) { + rsp, err := c.GetDescription(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseListCoursesResponse(rsp) + return ParseGetDescriptionResponse(rsp) } -// GetCourseWithResponse request returning *GetCourseResponse -func (c *ClientWithResponses) GetCourseWithResponse(ctx context.Context, jwId int64, params *GetCourseParams, reqEditors ...RequestEditorFn) (*GetCourseResponse, error) { - rsp, err := c.GetCourse(ctx, jwId, params, reqEditors...) +// UpsertDescriptionWithBodyWithResponse request with arbitrary body returning *UpsertDescriptionResponse +func (c *ClientWithResponses) UpsertDescriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpsertDescriptionResponse, error) { + rsp, err := c.UpsertDescriptionWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseGetCourseResponse(rsp) + return ParseUpsertDescriptionResponse(rsp) } -// PinDashboardLinkWithBodyWithResponse request with arbitrary body returning *PinDashboardLinkResponse -func (c *ClientWithResponses) PinDashboardLinkWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PinDashboardLinkResponse, error) { - rsp, err := c.PinDashboardLinkWithBody(ctx, contentType, body, reqEditors...) +func (c *ClientWithResponses) UpsertDescriptionWithResponse(ctx context.Context, body UpsertDescriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*UpsertDescriptionResponse, error) { + rsp, err := c.UpsertDescription(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParsePinDashboardLinkResponse(rsp) + return ParseUpsertDescriptionResponse(rsp) } -func (c *ClientWithResponses) PinDashboardLinkWithFormdataBodyWithResponse(ctx context.Context, body PinDashboardLinkFormdataRequestBody, reqEditors ...RequestEditorFn) (*PinDashboardLinkResponse, error) { - rsp, err := c.PinDashboardLinkWithFormdataBody(ctx, body, reqEditors...) +// ListHomeworksWithResponse request returning *ListHomeworksResponse +func (c *ClientWithResponses) ListHomeworksWithResponse(ctx context.Context, params *ListHomeworksParams, reqEditors ...RequestEditorFn) (*ListHomeworksResponse, error) { + rsp, err := c.ListHomeworks(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParsePinDashboardLinkResponse(rsp) + return ParseListHomeworksResponse(rsp) } -// PostApiDashboardLinksPinBatchWithBodyWithResponse request with arbitrary body returning *PostApiDashboardLinksPinBatchResponse -func (c *ClientWithResponses) PostApiDashboardLinksPinBatchWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostApiDashboardLinksPinBatchResponse, error) { - rsp, err := c.PostApiDashboardLinksPinBatchWithBody(ctx, contentType, body, reqEditors...) +// CreateHomeworkWithBodyWithResponse request with arbitrary body returning *CreateHomeworkResponse +func (c *ClientWithResponses) CreateHomeworkWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateHomeworkResponse, error) { + rsp, err := c.CreateHomeworkWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParsePostApiDashboardLinksPinBatchResponse(rsp) + return ParseCreateHomeworkResponse(rsp) } -func (c *ClientWithResponses) PostApiDashboardLinksPinBatchWithResponse(ctx context.Context, body PostApiDashboardLinksPinBatchJSONRequestBody, reqEditors ...RequestEditorFn) (*PostApiDashboardLinksPinBatchResponse, error) { - rsp, err := c.PostApiDashboardLinksPinBatch(ctx, body, reqEditors...) +func (c *ClientWithResponses) CreateHomeworkWithResponse(ctx context.Context, body CreateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateHomeworkResponse, error) { + rsp, err := c.CreateHomework(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParsePostApiDashboardLinksPinBatchResponse(rsp) + return ParseCreateHomeworkResponse(rsp) } -// VisitDashboardLinkWithResponse request returning *VisitDashboardLinkResponse -func (c *ClientWithResponses) VisitDashboardLinkWithResponse(ctx context.Context, params *VisitDashboardLinkParams, reqEditors ...RequestEditorFn) (*VisitDashboardLinkResponse, error) { - rsp, err := c.VisitDashboardLink(ctx, params, reqEditors...) +// DeleteHomeworkWithResponse request returning *DeleteHomeworkResponse +func (c *ClientWithResponses) DeleteHomeworkWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DeleteHomeworkResponse, error) { + rsp, err := c.DeleteHomework(ctx, id, reqEditors...) if err != nil { return nil, err } - return ParseVisitDashboardLinkResponse(rsp) + return ParseDeleteHomeworkResponse(rsp) } -// RecordDashboardLinkVisitWithBodyWithResponse request with arbitrary body returning *RecordDashboardLinkVisitResponse -func (c *ClientWithResponses) RecordDashboardLinkVisitWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RecordDashboardLinkVisitResponse, error) { - rsp, err := c.RecordDashboardLinkVisitWithBody(ctx, contentType, body, reqEditors...) +// UpdateHomeworkWithBodyWithResponse request with arbitrary body returning *UpdateHomeworkResponse +func (c *ClientWithResponses) UpdateHomeworkWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateHomeworkResponse, error) { + rsp, err := c.UpdateHomeworkWithBody(ctx, id, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseRecordDashboardLinkVisitResponse(rsp) + return ParseUpdateHomeworkResponse(rsp) } -func (c *ClientWithResponses) RecordDashboardLinkVisitWithFormdataBodyWithResponse(ctx context.Context, body RecordDashboardLinkVisitFormdataRequestBody, reqEditors ...RequestEditorFn) (*RecordDashboardLinkVisitResponse, error) { - rsp, err := c.RecordDashboardLinkVisitWithFormdataBody(ctx, body, reqEditors...) +func (c *ClientWithResponses) UpdateHomeworkWithResponse(ctx context.Context, id string, body UpdateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateHomeworkResponse, error) { + rsp, err := c.UpdateHomework(ctx, id, body, reqEditors...) if err != nil { return nil, err } - return ParseRecordDashboardLinkVisitResponse(rsp) + return ParseUpdateHomeworkResponse(rsp) } -// GetDescriptionWithResponse request returning *GetDescriptionResponse -func (c *ClientWithResponses) GetDescriptionWithResponse(ctx context.Context, params *GetDescriptionParams, reqEditors ...RequestEditorFn) (*GetDescriptionResponse, error) { - rsp, err := c.GetDescription(ctx, params, reqEditors...) +// GetUserCalendarWithResponse request returning *GetUserCalendarResponse +func (c *ClientWithResponses) GetUserCalendarWithResponse(ctx context.Context, userId string, params *GetUserCalendarParams, reqEditors ...RequestEditorFn) (*GetUserCalendarResponse, error) { + rsp, err := c.GetUserCalendar(ctx, userId, params, reqEditors...) if err != nil { return nil, err } - return ParseGetDescriptionResponse(rsp) + return ParseGetUserCalendarResponse(rsp) } -// UpsertDescriptionWithBodyWithResponse request with arbitrary body returning *UpsertDescriptionResponse -func (c *ClientWithResponses) UpsertDescriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpsertDescriptionResponse, error) { - rsp, err := c.UpsertDescriptionWithBody(ctx, contentType, body, reqEditors...) +// GetOpenApiSpecWithResponse request returning *GetOpenApiSpecResponse +func (c *ClientWithResponses) GetOpenApiSpecWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetOpenApiSpecResponse, error) { + rsp, err := c.GetOpenApiSpec(ctx, reqEditors...) if err != nil { return nil, err } - return ParseUpsertDescriptionResponse(rsp) + return ParseGetOpenApiSpecResponse(rsp) } -func (c *ClientWithResponses) UpsertDescriptionWithResponse(ctx context.Context, body UpsertDescriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*UpsertDescriptionResponse, error) { - rsp, err := c.UpsertDescription(ctx, body, reqEditors...) +// GetBusPreferencesWithResponse request returning *GetBusPreferencesResponse +func (c *ClientWithResponses) GetBusPreferencesWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetBusPreferencesResponse, error) { + rsp, err := c.GetBusPreferences(ctx, reqEditors...) if err != nil { return nil, err } - return ParseUpsertDescriptionResponse(rsp) + return ParseGetBusPreferencesResponse(rsp) } -// ListHomeworksWithResponse request returning *ListHomeworksResponse -func (c *ClientWithResponses) ListHomeworksWithResponse(ctx context.Context, params *ListHomeworksParams, reqEditors ...RequestEditorFn) (*ListHomeworksResponse, error) { - rsp, err := c.ListHomeworks(ctx, params, reqEditors...) +// SetBusPreferencesWithBodyWithResponse request with arbitrary body returning *SetBusPreferencesResponse +func (c *ClientWithResponses) SetBusPreferencesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetBusPreferencesResponse, error) { + rsp, err := c.SetBusPreferencesWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseListHomeworksResponse(rsp) + return ParseSetBusPreferencesResponse(rsp) } -// CreateHomeworkWithBodyWithResponse request with arbitrary body returning *CreateHomeworkResponse -func (c *ClientWithResponses) CreateHomeworkWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateHomeworkResponse, error) { - rsp, err := c.CreateHomeworkWithBody(ctx, contentType, body, reqEditors...) +func (c *ClientWithResponses) SetBusPreferencesWithResponse(ctx context.Context, body SetBusPreferencesJSONRequestBody, reqEditors ...RequestEditorFn) (*SetBusPreferencesResponse, error) { + rsp, err := c.SetBusPreferences(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseCreateHomeworkResponse(rsp) + return ParseSetBusPreferencesResponse(rsp) } -func (c *ClientWithResponses) CreateHomeworkWithResponse(ctx context.Context, body CreateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateHomeworkResponse, error) { - rsp, err := c.CreateHomework(ctx, body, reqEditors...) +// GetSubscribedHomeworksWithResponse request returning *GetSubscribedHomeworksResponse +func (c *ClientWithResponses) GetSubscribedHomeworksWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetSubscribedHomeworksResponse, error) { + rsp, err := c.GetSubscribedHomeworks(ctx, reqEditors...) if err != nil { return nil, err } - return ParseCreateHomeworkResponse(rsp) + return ParseGetSubscribedHomeworksResponse(rsp) } // PutApiHomeworksCompletionsWithBodyWithResponse request with arbitrary body returning *PutApiHomeworksCompletionsResponse @@ -19767,91 +19922,90 @@ func (c *ClientWithResponses) PutApiHomeworksCompletionsWithResponse(ctx context return ParsePutApiHomeworksCompletionsResponse(rsp) } -// DeleteHomeworkWithResponse request returning *DeleteHomeworkResponse -func (c *ClientWithResponses) DeleteHomeworkWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DeleteHomeworkResponse, error) { - rsp, err := c.DeleteHomework(ctx, id, reqEditors...) +// SetHomeworkCompletionWithBodyWithResponse request with arbitrary body returning *SetHomeworkCompletionResponse +func (c *ClientWithResponses) SetHomeworkCompletionWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetHomeworkCompletionResponse, error) { + rsp, err := c.SetHomeworkCompletionWithBody(ctx, id, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseDeleteHomeworkResponse(rsp) + return ParseSetHomeworkCompletionResponse(rsp) } -// UpdateHomeworkWithBodyWithResponse request with arbitrary body returning *UpdateHomeworkResponse -func (c *ClientWithResponses) UpdateHomeworkWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateHomeworkResponse, error) { - rsp, err := c.UpdateHomeworkWithBody(ctx, id, contentType, body, reqEditors...) +func (c *ClientWithResponses) SetHomeworkCompletionWithResponse(ctx context.Context, id string, body SetHomeworkCompletionJSONRequestBody, reqEditors ...RequestEditorFn) (*SetHomeworkCompletionResponse, error) { + rsp, err := c.SetHomeworkCompletion(ctx, id, body, reqEditors...) if err != nil { return nil, err } - return ParseUpdateHomeworkResponse(rsp) + return ParseSetHomeworkCompletionResponse(rsp) } -func (c *ClientWithResponses) UpdateHomeworkWithResponse(ctx context.Context, id string, body UpdateHomeworkJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateHomeworkResponse, error) { - rsp, err := c.UpdateHomework(ctx, id, body, reqEditors...) +// PinDashboardLinkWithBodyWithResponse request with arbitrary body returning *PinDashboardLinkResponse +func (c *ClientWithResponses) PinDashboardLinkWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PinDashboardLinkResponse, error) { + rsp, err := c.PinDashboardLinkWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseUpdateHomeworkResponse(rsp) + return ParsePinDashboardLinkResponse(rsp) } -// SetHomeworkCompletionWithBodyWithResponse request with arbitrary body returning *SetHomeworkCompletionResponse -func (c *ClientWithResponses) SetHomeworkCompletionWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetHomeworkCompletionResponse, error) { - rsp, err := c.SetHomeworkCompletionWithBody(ctx, id, contentType, body, reqEditors...) +func (c *ClientWithResponses) PinDashboardLinkWithFormdataBodyWithResponse(ctx context.Context, body PinDashboardLinkFormdataRequestBody, reqEditors ...RequestEditorFn) (*PinDashboardLinkResponse, error) { + rsp, err := c.PinDashboardLinkWithFormdataBody(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseSetHomeworkCompletionResponse(rsp) + return ParsePinDashboardLinkResponse(rsp) } -func (c *ClientWithResponses) SetHomeworkCompletionWithResponse(ctx context.Context, id string, body SetHomeworkCompletionJSONRequestBody, reqEditors ...RequestEditorFn) (*SetHomeworkCompletionResponse, error) { - rsp, err := c.SetHomeworkCompletion(ctx, id, body, reqEditors...) +// PostApiWorkspaceLinksPinBatchWithBodyWithResponse request with arbitrary body returning *PostApiWorkspaceLinksPinBatchResponse +func (c *ClientWithResponses) PostApiWorkspaceLinksPinBatchWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostApiWorkspaceLinksPinBatchResponse, error) { + rsp, err := c.PostApiWorkspaceLinksPinBatchWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseSetHomeworkCompletionResponse(rsp) + return ParsePostApiWorkspaceLinksPinBatchResponse(rsp) } -// SetLocaleWithBodyWithResponse request with arbitrary body returning *SetLocaleResponse -func (c *ClientWithResponses) SetLocaleWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetLocaleResponse, error) { - rsp, err := c.SetLocaleWithBody(ctx, contentType, body, reqEditors...) +func (c *ClientWithResponses) PostApiWorkspaceLinksPinBatchWithResponse(ctx context.Context, body PostApiWorkspaceLinksPinBatchJSONRequestBody, reqEditors ...RequestEditorFn) (*PostApiWorkspaceLinksPinBatchResponse, error) { + rsp, err := c.PostApiWorkspaceLinksPinBatch(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseSetLocaleResponse(rsp) + return ParsePostApiWorkspaceLinksPinBatchResponse(rsp) } -func (c *ClientWithResponses) SetLocaleWithResponse(ctx context.Context, body SetLocaleJSONRequestBody, reqEditors ...RequestEditorFn) (*SetLocaleResponse, error) { - rsp, err := c.SetLocale(ctx, body, reqEditors...) +// VisitDashboardLinkWithResponse request returning *VisitDashboardLinkResponse +func (c *ClientWithResponses) VisitDashboardLinkWithResponse(ctx context.Context, params *VisitDashboardLinkParams, reqEditors ...RequestEditorFn) (*VisitDashboardLinkResponse, error) { + rsp, err := c.VisitDashboardLink(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseSetLocaleResponse(rsp) + return ParseVisitDashboardLinkResponse(rsp) } -// GetMeWithResponse request returning *GetMeResponse -func (c *ClientWithResponses) GetMeWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetMeResponse, error) { - rsp, err := c.GetMe(ctx, reqEditors...) +// RecordDashboardLinkVisitWithBodyWithResponse request with arbitrary body returning *RecordDashboardLinkVisitResponse +func (c *ClientWithResponses) RecordDashboardLinkVisitWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RecordDashboardLinkVisitResponse, error) { + rsp, err := c.RecordDashboardLinkVisitWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseGetMeResponse(rsp) + return ParseRecordDashboardLinkVisitResponse(rsp) } -// GetApiMeOverviewWithResponse request returning *GetApiMeOverviewResponse -func (c *ClientWithResponses) GetApiMeOverviewWithResponse(ctx context.Context, params *GetApiMeOverviewParams, reqEditors ...RequestEditorFn) (*GetApiMeOverviewResponse, error) { - rsp, err := c.GetApiMeOverview(ctx, params, reqEditors...) +func (c *ClientWithResponses) RecordDashboardLinkVisitWithFormdataBodyWithResponse(ctx context.Context, body RecordDashboardLinkVisitFormdataRequestBody, reqEditors ...RequestEditorFn) (*RecordDashboardLinkVisitResponse, error) { + rsp, err := c.RecordDashboardLinkVisitWithFormdataBody(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseGetApiMeOverviewResponse(rsp) + return ParseRecordDashboardLinkVisitResponse(rsp) } -// GetSubscribedHomeworksWithResponse request returning *GetSubscribedHomeworksResponse -func (c *ClientWithResponses) GetSubscribedHomeworksWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetSubscribedHomeworksResponse, error) { - rsp, err := c.GetSubscribedHomeworks(ctx, reqEditors...) +// GetApiMeOverviewWithResponse request returning *GetApiMeOverviewResponse +func (c *ClientWithResponses) GetApiMeOverviewWithResponse(ctx context.Context, params *GetApiMeOverviewParams, reqEditors ...RequestEditorFn) (*GetApiMeOverviewResponse, error) { + rsp, err := c.GetApiMeOverview(ctx, params, reqEditors...) if err != nil { return nil, err } - return ParseGetSubscribedHomeworksResponse(rsp) + return ParseGetApiMeOverviewResponse(rsp) } // GetApiMeSubscriptionsSchedulesWithResponse request returning *GetApiMeSubscriptionsSchedulesResponse @@ -19863,138 +20017,115 @@ func (c *ClientWithResponses) GetApiMeSubscriptionsSchedulesWithResponse(ctx con return ParseGetApiMeSubscriptionsSchedulesResponse(rsp) } -// GetMetadataWithResponse request returning *GetMetadataResponse -func (c *ClientWithResponses) GetMetadataWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetMetadataResponse, error) { - rsp, err := c.GetMetadata(ctx, reqEditors...) - if err != nil { - return nil, err - } - return ParseGetMetadataResponse(rsp) -} - -// GetOpenApiSpecWithResponse request returning *GetOpenApiSpecResponse -func (c *ClientWithResponses) GetOpenApiSpecWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetOpenApiSpecResponse, error) { - rsp, err := c.GetOpenApiSpec(ctx, reqEditors...) - if err != nil { - return nil, err - } - return ParseGetOpenApiSpecResponse(rsp) -} - -// ListSchedulesWithResponse request returning *ListSchedulesResponse -func (c *ClientWithResponses) ListSchedulesWithResponse(ctx context.Context, params *ListSchedulesParams, reqEditors ...RequestEditorFn) (*ListSchedulesResponse, error) { - rsp, err := c.ListSchedules(ctx, params, reqEditors...) +// DeleteApiWorkspaceSubscriptionsWithBodyWithResponse request with arbitrary body returning *DeleteApiWorkspaceSubscriptionsResponse +func (c *ClientWithResponses) DeleteApiWorkspaceSubscriptionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*DeleteApiWorkspaceSubscriptionsResponse, error) { + rsp, err := c.DeleteApiWorkspaceSubscriptionsWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseListSchedulesResponse(rsp) + return ParseDeleteApiWorkspaceSubscriptionsResponse(rsp) } -// ListSectionsWithResponse request returning *ListSectionsResponse -func (c *ClientWithResponses) ListSectionsWithResponse(ctx context.Context, params *ListSectionsParams, reqEditors ...RequestEditorFn) (*ListSectionsResponse, error) { - rsp, err := c.ListSections(ctx, params, reqEditors...) +func (c *ClientWithResponses) DeleteApiWorkspaceSubscriptionsWithResponse(ctx context.Context, body DeleteApiWorkspaceSubscriptionsJSONRequestBody, reqEditors ...RequestEditorFn) (*DeleteApiWorkspaceSubscriptionsResponse, error) { + rsp, err := c.DeleteApiWorkspaceSubscriptions(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseListSectionsResponse(rsp) + return ParseDeleteApiWorkspaceSubscriptionsResponse(rsp) } -// GetSectionsCalendarWithResponse request returning *GetSectionsCalendarResponse -func (c *ClientWithResponses) GetSectionsCalendarWithResponse(ctx context.Context, params *GetSectionsCalendarParams, reqEditors ...RequestEditorFn) (*GetSectionsCalendarResponse, error) { - rsp, err := c.GetSectionsCalendar(ctx, params, reqEditors...) +// AppendCalendarSubscriptionSectionsWithBodyWithResponse request with arbitrary body returning *AppendCalendarSubscriptionSectionsResponse +func (c *ClientWithResponses) AppendCalendarSubscriptionSectionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*AppendCalendarSubscriptionSectionsResponse, error) { + rsp, err := c.AppendCalendarSubscriptionSectionsWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseGetSectionsCalendarResponse(rsp) + return ParseAppendCalendarSubscriptionSectionsResponse(rsp) } -// MatchSectionCodesWithBodyWithResponse request with arbitrary body returning *MatchSectionCodesResponse -func (c *ClientWithResponses) MatchSectionCodesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*MatchSectionCodesResponse, error) { - rsp, err := c.MatchSectionCodesWithBody(ctx, contentType, body, reqEditors...) +func (c *ClientWithResponses) AppendCalendarSubscriptionSectionsWithResponse(ctx context.Context, body AppendCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*AppendCalendarSubscriptionSectionsResponse, error) { + rsp, err := c.AppendCalendarSubscriptionSections(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseMatchSectionCodesResponse(rsp) + return ParseAppendCalendarSubscriptionSectionsResponse(rsp) } -func (c *ClientWithResponses) MatchSectionCodesWithResponse(ctx context.Context, body MatchSectionCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*MatchSectionCodesResponse, error) { - rsp, err := c.MatchSectionCodes(ctx, body, reqEditors...) +// SetCalendarSubscriptionWithBodyWithResponse request with arbitrary body returning *SetCalendarSubscriptionResponse +func (c *ClientWithResponses) SetCalendarSubscriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SetCalendarSubscriptionResponse, error) { + rsp, err := c.SetCalendarSubscriptionWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseMatchSectionCodesResponse(rsp) + return ParseSetCalendarSubscriptionResponse(rsp) } -// GetSectionWithResponse request returning *GetSectionResponse -func (c *ClientWithResponses) GetSectionWithResponse(ctx context.Context, jwId int64, params *GetSectionParams, reqEditors ...RequestEditorFn) (*GetSectionResponse, error) { - rsp, err := c.GetSection(ctx, jwId, params, reqEditors...) +func (c *ClientWithResponses) SetCalendarSubscriptionWithResponse(ctx context.Context, body SetCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*SetCalendarSubscriptionResponse, error) { + rsp, err := c.SetCalendarSubscription(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseGetSectionResponse(rsp) + return ParseSetCalendarSubscriptionResponse(rsp) } -// GetSectionCalendarWithResponse request returning *GetSectionCalendarResponse -func (c *ClientWithResponses) GetSectionCalendarWithResponse(ctx context.Context, jwId int64, reqEditors ...RequestEditorFn) (*GetSectionCalendarResponse, error) { - rsp, err := c.GetSectionCalendar(ctx, jwId, reqEditors...) +// BatchUpdateCalendarSubscriptionWithBodyWithResponse request with arbitrary body returning *BatchUpdateCalendarSubscriptionResponse +func (c *ClientWithResponses) BatchUpdateCalendarSubscriptionWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*BatchUpdateCalendarSubscriptionResponse, error) { + rsp, err := c.BatchUpdateCalendarSubscriptionWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseGetSectionCalendarResponse(rsp) + return ParseBatchUpdateCalendarSubscriptionResponse(rsp) } -// GetSectionScheduleGroupsWithResponse request returning *GetSectionScheduleGroupsResponse -func (c *ClientWithResponses) GetSectionScheduleGroupsWithResponse(ctx context.Context, jwId int64, params *GetSectionScheduleGroupsParams, reqEditors ...RequestEditorFn) (*GetSectionScheduleGroupsResponse, error) { - rsp, err := c.GetSectionScheduleGroups(ctx, jwId, params, reqEditors...) +func (c *ClientWithResponses) BatchUpdateCalendarSubscriptionWithResponse(ctx context.Context, body BatchUpdateCalendarSubscriptionJSONRequestBody, reqEditors ...RequestEditorFn) (*BatchUpdateCalendarSubscriptionResponse, error) { + rsp, err := c.BatchUpdateCalendarSubscription(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseGetSectionScheduleGroupsResponse(rsp) + return ParseBatchUpdateCalendarSubscriptionResponse(rsp) } -// GetSectionSchedulesWithResponse request returning *GetSectionSchedulesResponse -func (c *ClientWithResponses) GetSectionSchedulesWithResponse(ctx context.Context, jwId int64, params *GetSectionSchedulesParams, reqEditors ...RequestEditorFn) (*GetSectionSchedulesResponse, error) { - rsp, err := c.GetSectionSchedules(ctx, jwId, params, reqEditors...) +// GetCurrentCalendarSubscriptionWithResponse request returning *GetCurrentCalendarSubscriptionResponse +func (c *ClientWithResponses) GetCurrentCalendarSubscriptionWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetCurrentCalendarSubscriptionResponse, error) { + rsp, err := c.GetCurrentCalendarSubscription(ctx, reqEditors...) if err != nil { return nil, err } - return ParseGetSectionSchedulesResponse(rsp) + return ParseGetCurrentCalendarSubscriptionResponse(rsp) } -// ListSemestersWithResponse request returning *ListSemestersResponse -func (c *ClientWithResponses) ListSemestersWithResponse(ctx context.Context, params *ListSemestersParams, reqEditors ...RequestEditorFn) (*ListSemestersResponse, error) { - rsp, err := c.ListSemesters(ctx, params, reqEditors...) +// PostApiWorkspaceSubscriptionsImportCodesWithBodyWithResponse request with arbitrary body returning *PostApiWorkspaceSubscriptionsImportCodesResponse +func (c *ClientWithResponses) PostApiWorkspaceSubscriptionsImportCodesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostApiWorkspaceSubscriptionsImportCodesResponse, error) { + rsp, err := c.PostApiWorkspaceSubscriptionsImportCodesWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseListSemestersResponse(rsp) + return ParsePostApiWorkspaceSubscriptionsImportCodesResponse(rsp) } -// GetCurrentSemesterWithResponse request returning *GetCurrentSemesterResponse -func (c *ClientWithResponses) GetCurrentSemesterWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetCurrentSemesterResponse, error) { - rsp, err := c.GetCurrentSemester(ctx, reqEditors...) +func (c *ClientWithResponses) PostApiWorkspaceSubscriptionsImportCodesWithResponse(ctx context.Context, body PostApiWorkspaceSubscriptionsImportCodesJSONRequestBody, reqEditors ...RequestEditorFn) (*PostApiWorkspaceSubscriptionsImportCodesResponse, error) { + rsp, err := c.PostApiWorkspaceSubscriptionsImportCodes(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseGetCurrentSemesterResponse(rsp) + return ParsePostApiWorkspaceSubscriptionsImportCodesResponse(rsp) } -// ListTeachersWithResponse request returning *ListTeachersResponse -func (c *ClientWithResponses) ListTeachersWithResponse(ctx context.Context, params *ListTeachersParams, reqEditors ...RequestEditorFn) (*ListTeachersResponse, error) { - rsp, err := c.ListTeachers(ctx, params, reqEditors...) +// QueryCalendarSubscriptionSectionsWithBodyWithResponse request with arbitrary body returning *QueryCalendarSubscriptionSectionsResponse +func (c *ClientWithResponses) QueryCalendarSubscriptionSectionsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*QueryCalendarSubscriptionSectionsResponse, error) { + rsp, err := c.QueryCalendarSubscriptionSectionsWithBody(ctx, contentType, body, reqEditors...) if err != nil { return nil, err } - return ParseListTeachersResponse(rsp) + return ParseQueryCalendarSubscriptionSectionsResponse(rsp) } -// GetTeacherWithResponse request returning *GetTeacherResponse -func (c *ClientWithResponses) GetTeacherWithResponse(ctx context.Context, id int64, params *GetTeacherParams, reqEditors ...RequestEditorFn) (*GetTeacherResponse, error) { - rsp, err := c.GetTeacher(ctx, id, params, reqEditors...) +func (c *ClientWithResponses) QueryCalendarSubscriptionSectionsWithResponse(ctx context.Context, body QueryCalendarSubscriptionSectionsJSONRequestBody, reqEditors ...RequestEditorFn) (*QueryCalendarSubscriptionSectionsResponse, error) { + rsp, err := c.QueryCalendarSubscriptionSections(ctx, body, reqEditors...) if err != nil { return nil, err } - return ParseGetTeacherResponse(rsp) + return ParseQueryCalendarSubscriptionSectionsResponse(rsp) } // ListTodosWithResponse request returning *ListTodosResponse @@ -20135,48 +20266,145 @@ func (c *ClientWithResponses) PutApiUploadsObjectWithBodyWithResponse(ctx contex return ParsePutApiUploadsObjectResponse(rsp) } -// DeleteUploadWithResponse request returning *DeleteUploadResponse -func (c *ClientWithResponses) DeleteUploadWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DeleteUploadResponse, error) { - rsp, err := c.DeleteUpload(ctx, id, reqEditors...) +// DeleteUploadWithResponse request returning *DeleteUploadResponse +func (c *ClientWithResponses) DeleteUploadWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DeleteUploadResponse, error) { + rsp, err := c.DeleteUpload(ctx, id, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteUploadResponse(rsp) +} + +// UpdateUploadWithBodyWithResponse request with arbitrary body returning *UpdateUploadResponse +func (c *ClientWithResponses) UpdateUploadWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateUploadResponse, error) { + rsp, err := c.UpdateUploadWithBody(ctx, id, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateUploadResponse(rsp) +} + +func (c *ClientWithResponses) UpdateUploadWithResponse(ctx context.Context, id string, body UpdateUploadJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateUploadResponse, error) { + rsp, err := c.UpdateUpload(ctx, id, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateUploadResponse(rsp) +} + +// DownloadUploadWithResponse request returning *DownloadUploadResponse +func (c *ClientWithResponses) DownloadUploadWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DownloadUploadResponse, error) { + rsp, err := c.DownloadUpload(ctx, id, reqEditors...) + if err != nil { + return nil, err + } + return ParseDownloadUploadResponse(rsp) +} + +// ParseGetMeResponse parses an HTTP response from a GetMeWithResponse call +func ParseGetMeResponse(rsp *http.Response) (*GetMeResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetMeResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest MeResponseSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + } + + return response, nil +} + +// ParseSetLocaleResponse parses an HTTP response from a SetLocaleWithResponse call +func ParseSetLocaleResponse(rsp *http.Response) (*SetLocaleResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseDeleteUploadResponse(rsp) -} -// UpdateUploadWithBodyWithResponse request with arbitrary body returning *UpdateUploadResponse -func (c *ClientWithResponses) UpdateUploadWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateUploadResponse, error) { - rsp, err := c.UpdateUploadWithBody(ctx, id, contentType, body, reqEditors...) - if err != nil { - return nil, err + response := &SetLocaleResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseUpdateUploadResponse(rsp) -} -func (c *ClientWithResponses) UpdateUploadWithResponse(ctx context.Context, id string, body UpdateUploadJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateUploadResponse, error) { - rsp, err := c.UpdateUpload(ctx, id, body, reqEditors...) - if err != nil { - return nil, err + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SuccessResponseSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + } - return ParseUpdateUploadResponse(rsp) + + return response, nil } -// DownloadUploadWithResponse request returning *DownloadUploadResponse -func (c *ClientWithResponses) DownloadUploadWithResponse(ctx context.Context, id string, reqEditors ...RequestEditorFn) (*DownloadUploadResponse, error) { - rsp, err := c.DownloadUpload(ctx, id, reqEditors...) +// ParseGetApiAccountProfileResponse parses an HTTP response from a GetApiAccountProfileWithResponse call +func ParseGetApiAccountProfileResponse(rsp *http.Response) (*GetApiAccountProfileResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - return ParseDownloadUploadResponse(rsp) -} -// GetUserCalendarWithResponse request returning *GetUserCalendarResponse -func (c *ClientWithResponses) GetUserCalendarWithResponse(ctx context.Context, userId string, params *GetUserCalendarParams, reqEditors ...RequestEditorFn) (*GetUserCalendarResponse, error) { - rsp, err := c.GetUserCalendar(ctx, userId, params, reqEditors...) - if err != nil { - return nil, err + response := &GetApiAccountProfileResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } - return ParseGetUserCalendarResponse(rsp) + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest PublicUserProfileResponseSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + } + + return response, nil } // ParseListAdminCommentsResponse parses an HTTP response from a ListAdminCommentsWithResponse call @@ -20799,15 +21027,15 @@ func ParseQueryBusResponse(rsp *http.Response) (*QueryBusResponse, error) { return response, nil } -// ParseGetApiBusNextResponse parses an HTTP response from a GetApiBusNextWithResponse call -func ParseGetApiBusNextResponse(rsp *http.Response) (*GetApiBusNextResponse, error) { +// ParseGetApiCatalogBusNextResponse parses an HTTP response from a GetApiCatalogBusNextWithResponse call +func ParseGetApiCatalogBusNextResponse(rsp *http.Response) (*GetApiCatalogBusNextResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetApiBusNextResponse{ + response := &GetApiCatalogBusNextResponse{ Body: bodyBytes, HTTPResponse: rsp, } @@ -20839,55 +21067,22 @@ func ParseGetApiBusNextResponse(rsp *http.Response) (*GetApiBusNextResponse, err return response, nil } -// ParseGetBusPreferencesResponse parses an HTTP response from a GetBusPreferencesWithResponse call -func ParseGetBusPreferencesResponse(rsp *http.Response) (*GetBusPreferencesResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &GetBusPreferencesResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest BusPreferenceResponseSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - - } - - return response, nil -} - -// ParseSetBusPreferencesResponse parses an HTTP response from a SetBusPreferencesWithResponse call -func ParseSetBusPreferencesResponse(rsp *http.Response) (*SetBusPreferencesResponse, error) { +// ParseGetApiBusRoutesResponse parses an HTTP response from a GetApiBusRoutesWithResponse call +func ParseGetApiBusRoutesResponse(rsp *http.Response) (*GetApiBusRoutesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &SetBusPreferencesResponse{ + response := &GetApiBusRoutesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest BusPreferenceResponseSchema + var dest BusRouteSearchResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -20900,48 +21095,34 @@ func ParseSetBusPreferencesResponse(rsp *http.Response) (*SetBusPreferencesRespo } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON503 = &dest + response.JSON404 = &dest } return response, nil } -// ParseGetApiBusRoutesResponse parses an HTTP response from a GetApiBusRoutesWithResponse call -func ParseGetApiBusRoutesResponse(rsp *http.Response) (*GetApiBusRoutesResponse, error) { +// ParseListCoursesResponse parses an HTTP response from a ListCoursesWithResponse call +func ParseListCoursesResponse(rsp *http.Response) (*ListCoursesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetApiBusRoutesResponse{ + response := &ListCoursesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest BusRouteSearchResponseSchema + var dest PaginatedCourseResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -20954,34 +21135,27 @@ func ParseGetApiBusRoutesResponse(rsp *http.Response) (*GetApiBusRoutesResponse, } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - } return response, nil } -// ParseDeleteApiCalendarSubscriptionsResponse parses an HTTP response from a DeleteApiCalendarSubscriptionsWithResponse call -func ParseDeleteApiCalendarSubscriptionsResponse(rsp *http.Response) (*DeleteApiCalendarSubscriptionsResponse, error) { +// ParseGetCourseResponse parses an HTTP response from a GetCourseWithResponse call +func ParseGetCourseResponse(rsp *http.Response) (*GetCourseResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteApiCalendarSubscriptionsResponse{ + response := &GetCourseResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CalendarSubscriptionRemoveResponseSchema + var dest CourseDetailSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -20994,13 +21168,6 @@ func ParseDeleteApiCalendarSubscriptionsResponse(rsp *http.Response) (*DeleteApi } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -21008,156 +21175,86 @@ func ParseDeleteApiCalendarSubscriptionsResponse(rsp *http.Response) (*DeleteApi } response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON503 = &dest - } return response, nil } -// ParseAppendCalendarSubscriptionSectionsResponse parses an HTTP response from a AppendCalendarSubscriptionSectionsWithResponse call -func ParseAppendCalendarSubscriptionSectionsResponse(rsp *http.Response) (*AppendCalendarSubscriptionSectionsResponse, error) { +// ParseGetMetadataResponse parses an HTTP response from a GetMetadataWithResponse call +func ParseGetMetadataResponse(rsp *http.Response) (*GetMetadataResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &AppendCalendarSubscriptionSectionsResponse{ + response := &GetMetadataResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CalendarSubscriptionAppendResponseSchema + var dest MetadataResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON503 = &dest - } return response, nil } -// ParseSetCalendarSubscriptionResponse parses an HTTP response from a SetCalendarSubscriptionWithResponse call -func ParseSetCalendarSubscriptionResponse(rsp *http.Response) (*SetCalendarSubscriptionResponse, error) { +// ParseListSchedulesResponse parses an HTTP response from a ListSchedulesWithResponse call +func ParseListSchedulesResponse(rsp *http.Response) (*ListSchedulesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &SetCalendarSubscriptionResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CalendarSubscriptionCreateResponseSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest + response := &ListSchedulesResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest PaginatedScheduleResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON429 = &dest + response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON503 = &dest + response.JSON400 = &dest } return response, nil } -// ParseBatchUpdateCalendarSubscriptionResponse parses an HTTP response from a BatchUpdateCalendarSubscriptionWithResponse call -func ParseBatchUpdateCalendarSubscriptionResponse(rsp *http.Response) (*BatchUpdateCalendarSubscriptionResponse, error) { +// ParseListSectionsResponse parses an HTTP response from a ListSectionsWithResponse call +func ParseListSectionsResponse(rsp *http.Response) (*ListSectionsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &BatchUpdateCalendarSubscriptionResponse{ + response := &ListSectionsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CalendarSubscriptionBatchResponseSchema + var dest PaginatedSectionResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -21170,88 +21267,93 @@ func ParseBatchUpdateCalendarSubscriptionResponse(rsp *http.Response) (*BatchUpd } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest + return response, nil +} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest +// ParseGetSectionsCalendarResponse parses an HTTP response from a GetSectionsCalendarWithResponse call +func ParseGetSectionsCalendarResponse(rsp *http.Response) (*GetSectionsCalendarResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + response := &GetSectionsCalendarResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON503 = &dest + response.JSON400 = &dest } return response, nil } -// ParseGetCurrentCalendarSubscriptionResponse parses an HTTP response from a GetCurrentCalendarSubscriptionWithResponse call -func ParseGetCurrentCalendarSubscriptionResponse(rsp *http.Response) (*GetCurrentCalendarSubscriptionResponse, error) { +// ParseMatchSectionCodesResponse parses an HTTP response from a MatchSectionCodesWithResponse call +func ParseMatchSectionCodesResponse(rsp *http.Response) (*MatchSectionCodesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetCurrentCalendarSubscriptionResponse{ + response := &MatchSectionCodesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CurrentCalendarSubscriptionResponseSchema + var dest MatchSectionCodesResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON401 = &dest + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest } return response, nil } -// ParsePostApiCalendarSubscriptionsImportCodesResponse parses an HTTP response from a PostApiCalendarSubscriptionsImportCodesWithResponse call -func ParsePostApiCalendarSubscriptionsImportCodesResponse(rsp *http.Response) (*PostApiCalendarSubscriptionsImportCodesResponse, error) { +// ParseGetSectionResponse parses an HTTP response from a GetSectionWithResponse call +func ParseGetSectionResponse(rsp *http.Response) (*GetSectionResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &PostApiCalendarSubscriptionsImportCodesResponse{ + response := &GetSectionResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CalendarSubscriptionImportResponseSchema + var dest SectionDetailSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -21264,13 +21366,6 @@ func ParsePostApiCalendarSubscriptionsImportCodesResponse(rsp *http.Response) (* } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -21278,60 +21373,58 @@ func ParsePostApiCalendarSubscriptionsImportCodesResponse(rsp *http.Response) (* } response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + return response, nil +} + +// ParseGetSectionCalendarResponse parses an HTTP response from a GetSectionCalendarWithResponse call +func ParseGetSectionCalendarResponse(rsp *http.Response) (*GetSectionCalendarResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetSectionCalendarResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON503 = &dest + response.JSON404 = &dest } return response, nil } -// ParseQueryCalendarSubscriptionSectionsResponse parses an HTTP response from a QueryCalendarSubscriptionSectionsWithResponse call -func ParseQueryCalendarSubscriptionSectionsResponse(rsp *http.Response) (*QueryCalendarSubscriptionSectionsResponse, error) { +// ParseGetSectionScheduleGroupsResponse parses an HTTP response from a GetSectionScheduleGroupsWithResponse call +func ParseGetSectionScheduleGroupsResponse(rsp *http.Response) (*GetSectionScheduleGroupsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &QueryCalendarSubscriptionSectionsResponse{ + response := &GetSectionScheduleGroupsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CalendarSubscriptionQueryResponseSchema + var dest []map[string]interface{} if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -21344,22 +21437,22 @@ func ParseQueryCalendarSubscriptionSectionsResponse(rsp *http.Response) (*QueryC return response, nil } -// ParseListCommentsResponse parses an HTTP response from a ListCommentsWithResponse call -func ParseListCommentsResponse(rsp *http.Response) (*ListCommentsResponse, error) { +// ParseGetSectionSchedulesResponse parses an HTTP response from a GetSectionSchedulesWithResponse call +func ParseGetSectionSchedulesResponse(rsp *http.Response) (*GetSectionSchedulesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListCommentsResponse{ + response := &GetSectionSchedulesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CommentsListResponseSchema + var dest []map[string]interface{} if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -21384,26 +21477,26 @@ func ParseListCommentsResponse(rsp *http.Response) (*ListCommentsResponse, error return response, nil } -// ParseCreateCommentResponse parses an HTTP response from a CreateCommentWithResponse call -func ParseCreateCommentResponse(rsp *http.Response) (*CreateCommentResponse, error) { +// ParseListSemestersResponse parses an HTTP response from a ListSemestersWithResponse call +func ParseListSemestersResponse(rsp *http.Response) (*ListSemestersResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateCommentResponse{ + response := &ListSemestersResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest IdResponseSchema + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest PaginatedSemesterResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON201 = &dest + response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest OpenApiErrorSchema @@ -21412,62 +21505,60 @@ func ParseCreateCommentResponse(rsp *http.Response) (*CreateCommentResponse, err } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON403 = &dest + return response, nil +} - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest +// ParseGetCurrentSemesterResponse parses an HTTP response from a GetCurrentSemesterWithResponse call +func ParseGetCurrentSemesterResponse(rsp *http.Response) (*GetCurrentSemesterResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema + response := &GetCurrentSemesterResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SemesterSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON429 = &dest + response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON503 = &dest + response.JSON404 = &dest } return response, nil } -// ParseDeleteApiCommentsBatchResponse parses an HTTP response from a DeleteApiCommentsBatchWithResponse call -func ParseDeleteApiCommentsBatchResponse(rsp *http.Response) (*DeleteApiCommentsBatchResponse, error) { +// ParseListTeachersResponse parses an HTTP response from a ListTeachersWithResponse call +func ParseListTeachersResponse(rsp *http.Response) (*ListTeachersResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteApiCommentsBatchResponse{ + response := &ListTeachersResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CommentBatchDeleteResponseSchema + var dest PaginatedTeacherResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -21480,73 +21571,38 @@ func ParseDeleteApiCommentsBatchResponse(rsp *http.Response) (*DeleteApiComments } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON403 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON503 = &dest - } return response, nil } -// ParseDeleteCommentResponse parses an HTTP response from a DeleteCommentWithResponse call -func ParseDeleteCommentResponse(rsp *http.Response) (*DeleteCommentResponse, error) { +// ParseGetTeacherResponse parses an HTTP response from a GetTeacherWithResponse call +func ParseGetTeacherResponse(rsp *http.Response) (*GetTeacherResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteCommentResponse{ + response := &GetTeacherResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest SuccessResponseSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest TeacherDetailSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON401 = &dest + response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON403 = &dest + response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema @@ -21555,52 +21611,38 @@ func ParseDeleteCommentResponse(rsp *http.Response) (*DeleteCommentResponse, err } response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON503 = &dest - } return response, nil } -// ParseGetCommentResponse parses an HTTP response from a GetCommentWithResponse call -func ParseGetCommentResponse(rsp *http.Response) (*GetCommentResponse, error) { +// ParseListCommentsResponse parses an HTTP response from a ListCommentsWithResponse call +func ParseListCommentsResponse(rsp *http.Response) (*ListCommentsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetCommentResponse{ + response := &ListCommentsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CommentThreadResponseSchema + var dest CommentsListResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON403 = &dest + response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema @@ -21614,26 +21656,26 @@ func ParseGetCommentResponse(rsp *http.Response) (*GetCommentResponse, error) { return response, nil } -// ParseUpdateCommentResponse parses an HTTP response from a UpdateCommentWithResponse call -func ParseUpdateCommentResponse(rsp *http.Response) (*UpdateCommentResponse, error) { +// ParseCreateCommentResponse parses an HTTP response from a CreateCommentWithResponse call +func ParseCreateCommentResponse(rsp *http.Response) (*CreateCommentResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &UpdateCommentResponse{ + response := &CreateCommentResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CommentUpdateResponseSchema + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest IdResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON200 = &dest + response.JSON201 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest OpenApiErrorSchema @@ -21682,22 +21724,22 @@ func ParseUpdateCommentResponse(rsp *http.Response) (*UpdateCommentResponse, err return response, nil } -// ParseRemoveCommentReactionResponse parses an HTTP response from a RemoveCommentReactionWithResponse call -func ParseRemoveCommentReactionResponse(rsp *http.Response) (*RemoveCommentReactionResponse, error) { +// ParseDeleteApiCommentsBatchResponse parses an HTTP response from a DeleteApiCommentsBatchWithResponse call +func ParseDeleteApiCommentsBatchResponse(rsp *http.Response) (*DeleteApiCommentsBatchResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &RemoveCommentReactionResponse{ + response := &DeleteApiCommentsBatchResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest SuccessResponseSchema + var dest CommentBatchDeleteResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -21743,15 +21785,15 @@ func ParseRemoveCommentReactionResponse(rsp *http.Response) (*RemoveCommentReact return response, nil } -// ParseAddCommentReactionResponse parses an HTTP response from a AddCommentReactionWithResponse call -func ParseAddCommentReactionResponse(rsp *http.Response) (*AddCommentReactionResponse, error) { +// ParseDeleteCommentResponse parses an HTTP response from a DeleteCommentWithResponse call +func ParseDeleteCommentResponse(rsp *http.Response) (*DeleteCommentResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &AddCommentReactionResponse{ + response := &DeleteCommentResponse{ Body: bodyBytes, HTTPResponse: rsp, } @@ -21764,13 +21806,6 @@ func ParseAddCommentReactionResponse(rsp *http.Response) (*AddCommentReactionRes } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -21811,55 +21846,62 @@ func ParseAddCommentReactionResponse(rsp *http.Response) (*AddCommentReactionRes return response, nil } -// ParseListCoursesResponse parses an HTTP response from a ListCoursesWithResponse call -func ParseListCoursesResponse(rsp *http.Response) (*ListCoursesResponse, error) { +// ParseGetCommentResponse parses an HTTP response from a GetCommentWithResponse call +func ParseGetCommentResponse(rsp *http.Response) (*GetCommentResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListCoursesResponse{ + response := &GetCommentResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedCourseResponseSchema + var dest CommentThreadResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON400 = &dest + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest } return response, nil } -// ParseGetCourseResponse parses an HTTP response from a GetCourseWithResponse call -func ParseGetCourseResponse(rsp *http.Response) (*GetCourseResponse, error) { +// ParseUpdateCommentResponse parses an HTTP response from a UpdateCommentWithResponse call +func ParseUpdateCommentResponse(rsp *http.Response) (*UpdateCommentResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetCourseResponse{ + response := &UpdateCommentResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CourseDetailSchema + var dest CommentUpdateResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -21872,6 +21914,20 @@ func ParseGetCourseResponse(rsp *http.Response) (*GetCourseResponse, error) { } response.JSON400 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -21879,59 +21935,73 @@ func ParseGetCourseResponse(rsp *http.Response) (*GetCourseResponse, error) { } response.JSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParsePinDashboardLinkResponse parses an HTTP response from a PinDashboardLinkWithResponse call -func ParsePinDashboardLinkResponse(rsp *http.Response) (*PinDashboardLinkResponse, error) { +// ParseRemoveCommentReactionResponse parses an HTTP response from a RemoveCommentReactionWithResponse call +func ParseRemoveCommentReactionResponse(rsp *http.Response) (*RemoveCommentReactionResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &PinDashboardLinkResponse{ + response := &RemoveCommentReactionResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest DashboardLinkPinResponseSchema + var dest SuccessResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest DashboardLinkPinResponseSchema + var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest DashboardLinkPinResponseSchema + var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON429 = &dest + response.JSON403 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest DashboardLinkPinResponseSchema + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON500 = &dest + response.JSON429 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: var dest OpenApiErrorSchema @@ -21945,29 +22015,29 @@ func ParsePinDashboardLinkResponse(rsp *http.Response) (*PinDashboardLinkRespons return response, nil } -// ParsePostApiDashboardLinksPinBatchResponse parses an HTTP response from a PostApiDashboardLinksPinBatchWithResponse call -func ParsePostApiDashboardLinksPinBatchResponse(rsp *http.Response) (*PostApiDashboardLinksPinBatchResponse, error) { +// ParseAddCommentReactionResponse parses an HTTP response from a AddCommentReactionWithResponse call +func ParseAddCommentReactionResponse(rsp *http.Response) (*AddCommentReactionResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &PostApiDashboardLinksPinBatchResponse{ + response := &AddCommentReactionResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest DashboardLinkPinResponseSchema + var dest SuccessResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest DashboardLinkPinResponseSchema + var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -21980,19 +22050,26 @@ func ParsePostApiDashboardLinksPinBatchResponse(rsp *http.Response) (*PostApiDas } response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON429 = &dest + response.JSON403 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: - var dest DashboardLinkPinResponseSchema + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON500 = &dest + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: var dest OpenApiErrorSchema @@ -22006,38 +22083,6 @@ func ParsePostApiDashboardLinksPinBatchResponse(rsp *http.Response) (*PostApiDas return response, nil } -// ParseVisitDashboardLinkResponse parses an HTTP response from a VisitDashboardLinkWithResponse call -func ParseVisitDashboardLinkResponse(rsp *http.Response) (*VisitDashboardLinkResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &VisitDashboardLinkResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - return response, nil -} - -// ParseRecordDashboardLinkVisitResponse parses an HTTP response from a RecordDashboardLinkVisitWithResponse call -func ParseRecordDashboardLinkVisitResponse(rsp *http.Response) (*RecordDashboardLinkVisitResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &RecordDashboardLinkVisitResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - return response, nil -} - // ParseGetDescriptionResponse parses an HTTP response from a GetDescriptionWithResponse call func ParseGetDescriptionResponse(rsp *http.Response) (*GetDescriptionResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -22254,60 +22299,6 @@ func ParseCreateHomeworkResponse(rsp *http.Response) (*CreateHomeworkResponse, e return response, nil } -// ParsePutApiHomeworksCompletionsResponse parses an HTTP response from a PutApiHomeworksCompletionsWithResponse call -func ParsePutApiHomeworksCompletionsResponse(rsp *http.Response) (*PutApiHomeworksCompletionsResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &PutApiHomeworksCompletionsResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest HomeworkCompletionBatchResponseSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON503 = &dest - - } - - return response, nil -} - // ParseDeleteHomeworkResponse parses an HTTP response from a DeleteHomeworkWithResponse call func ParseDeleteHomeworkResponse(rsp *http.Response) (*DeleteHomeworkResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -22437,34 +22428,20 @@ func ParseUpdateHomeworkResponse(rsp *http.Response) (*UpdateHomeworkResponse, e return response, nil } -// ParseSetHomeworkCompletionResponse parses an HTTP response from a SetHomeworkCompletionWithResponse call -func ParseSetHomeworkCompletionResponse(rsp *http.Response) (*SetHomeworkCompletionResponse, error) { +// ParseGetUserCalendarResponse parses an HTTP response from a GetUserCalendarWithResponse call +func ParseGetUserCalendarResponse(rsp *http.Response) (*GetUserCalendarResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &SetHomeworkCompletionResponse{ + response := &GetUserCalendarResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest HomeworkCompletionResponseSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -22472,81 +22449,67 @@ func ParseSetHomeworkCompletionResponse(rsp *http.Response) (*SetHomeworkComplet } response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON429 = &dest + response.JSON403 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON503 = &dest + response.JSON404 = &dest } return response, nil } -// ParseSetLocaleResponse parses an HTTP response from a SetLocaleWithResponse call -func ParseSetLocaleResponse(rsp *http.Response) (*SetLocaleResponse, error) { +// ParseGetOpenApiSpecResponse parses an HTTP response from a GetOpenApiSpecWithResponse call +func ParseGetOpenApiSpecResponse(rsp *http.Response) (*GetOpenApiSpecResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &SetLocaleResponse{ + response := &GetOpenApiSpecResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest SuccessResponseSchema + var dest OpenApiDocumentResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest - } return response, nil } -// ParseGetMeResponse parses an HTTP response from a GetMeWithResponse call -func ParseGetMeResponse(rsp *http.Response) (*GetMeResponse, error) { +// ParseGetBusPreferencesResponse parses an HTTP response from a GetBusPreferencesWithResponse call +func ParseGetBusPreferencesResponse(rsp *http.Response) (*GetBusPreferencesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetMeResponse{ + response := &GetBusPreferencesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest MeResponseSchema + var dest BusPreferenceResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22564,22 +22527,22 @@ func ParseGetMeResponse(rsp *http.Response) (*GetMeResponse, error) { return response, nil } -// ParseGetApiMeOverviewResponse parses an HTTP response from a GetApiMeOverviewWithResponse call -func ParseGetApiMeOverviewResponse(rsp *http.Response) (*GetApiMeOverviewResponse, error) { +// ParseSetBusPreferencesResponse parses an HTTP response from a SetBusPreferencesWithResponse call +func ParseSetBusPreferencesResponse(rsp *http.Response) (*SetBusPreferencesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetApiMeOverviewResponse{ + response := &SetBusPreferencesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest CompactOverviewResponseSchema + var dest BusPreferenceResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22599,6 +22562,20 @@ func ParseGetApiMeOverviewResponse(rsp *http.Response) (*GetApiMeOverviewRespons } response.JSON401 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil @@ -22637,22 +22614,22 @@ func ParseGetSubscribedHomeworksResponse(rsp *http.Response) (*GetSubscribedHome return response, nil } -// ParseGetApiMeSubscriptionsSchedulesResponse parses an HTTP response from a GetApiMeSubscriptionsSchedulesWithResponse call -func ParseGetApiMeSubscriptionsSchedulesResponse(rsp *http.Response) (*GetApiMeSubscriptionsSchedulesResponse, error) { +// ParsePutApiHomeworksCompletionsResponse parses an HTTP response from a PutApiHomeworksCompletionsWithResponse call +func ParsePutApiHomeworksCompletionsResponse(rsp *http.Response) (*PutApiHomeworksCompletionsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetApiMeSubscriptionsSchedulesResponse{ + response := &PutApiHomeworksCompletionsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest SubscribedSchedulesResponseSchema + var dest HomeworkCompletionBatchResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22672,171 +22649,256 @@ func ParseGetApiMeSubscriptionsSchedulesResponse(rsp *http.Response) (*GetApiMeS } response.JSON401 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParseGetMetadataResponse parses an HTTP response from a GetMetadataWithResponse call -func ParseGetMetadataResponse(rsp *http.Response) (*GetMetadataResponse, error) { +// ParseSetHomeworkCompletionResponse parses an HTTP response from a SetHomeworkCompletionWithResponse call +func ParseSetHomeworkCompletionResponse(rsp *http.Response) (*SetHomeworkCompletionResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetMetadataResponse{ + response := &SetHomeworkCompletionResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest MetadataResponseSchema + var dest HomeworkCompletionResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - } + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest - return response, nil -} + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest -// ParseGetOpenApiSpecResponse parses an HTTP response from a GetOpenApiSpecWithResponse call -func ParseGetOpenApiSpecResponse(rsp *http.Response) (*GetOpenApiSpecResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest - response := &GetOpenApiSpecResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest OpenApiDocumentResponseSchema + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON200 = &dest + response.JSON503 = &dest } return response, nil } -// ParseListSchedulesResponse parses an HTTP response from a ListSchedulesWithResponse call -func ParseListSchedulesResponse(rsp *http.Response) (*ListSchedulesResponse, error) { +// ParsePinDashboardLinkResponse parses an HTTP response from a PinDashboardLinkWithResponse call +func ParsePinDashboardLinkResponse(rsp *http.Response) (*PinDashboardLinkResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListSchedulesResponse{ + response := &PinDashboardLinkResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedScheduleResponseSchema + var dest DashboardLinkPinResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema + var dest DashboardLinkPinResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON400 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest DashboardLinkPinResponseSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest DashboardLinkPinResponseSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParseListSectionsResponse parses an HTTP response from a ListSectionsWithResponse call -func ParseListSectionsResponse(rsp *http.Response) (*ListSectionsResponse, error) { +// ParsePostApiWorkspaceLinksPinBatchResponse parses an HTTP response from a PostApiWorkspaceLinksPinBatchWithResponse call +func ParsePostApiWorkspaceLinksPinBatchResponse(rsp *http.Response) (*PostApiWorkspaceLinksPinBatchResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListSectionsResponse{ + response := &PostApiWorkspaceLinksPinBatchResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedSectionResponseSchema + var dest DashboardLinkPinResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema + var dest DashboardLinkPinResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON400 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest DashboardLinkPinResponseSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParseGetSectionsCalendarResponse parses an HTTP response from a GetSectionsCalendarWithResponse call -func ParseGetSectionsCalendarResponse(rsp *http.Response) (*GetSectionsCalendarResponse, error) { +// ParseVisitDashboardLinkResponse parses an HTTP response from a VisitDashboardLinkWithResponse call +func ParseVisitDashboardLinkResponse(rsp *http.Response) (*VisitDashboardLinkResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetSectionsCalendarResponse{ + response := &VisitDashboardLinkResponse{ Body: bodyBytes, HTTPResponse: rsp, } - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON400 = &dest + return response, nil +} + +// ParseRecordDashboardLinkVisitResponse parses an HTTP response from a RecordDashboardLinkVisitWithResponse call +func ParseRecordDashboardLinkVisitResponse(rsp *http.Response) (*RecordDashboardLinkVisitResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + response := &RecordDashboardLinkVisitResponse{ + Body: bodyBytes, + HTTPResponse: rsp, } return response, nil } -// ParseMatchSectionCodesResponse parses an HTTP response from a MatchSectionCodesWithResponse call -func ParseMatchSectionCodesResponse(rsp *http.Response) (*MatchSectionCodesResponse, error) { +// ParseGetApiMeOverviewResponse parses an HTTP response from a GetApiMeOverviewWithResponse call +func ParseGetApiMeOverviewResponse(rsp *http.Response) (*GetApiMeOverviewResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &MatchSectionCodesResponse{ + response := &GetApiMeOverviewResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest MatchSectionCodesResponseSchema + var dest CompactOverviewResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22849,34 +22911,34 @@ func ParseMatchSectionCodesResponse(rsp *http.Response) (*MatchSectionCodesRespo } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON404 = &dest + response.JSON401 = &dest } return response, nil } -// ParseGetSectionResponse parses an HTTP response from a GetSectionWithResponse call -func ParseGetSectionResponse(rsp *http.Response) (*GetSectionResponse, error) { +// ParseGetApiMeSubscriptionsSchedulesResponse parses an HTTP response from a GetApiMeSubscriptionsSchedulesWithResponse call +func ParseGetApiMeSubscriptionsSchedulesResponse(rsp *http.Response) (*GetApiMeSubscriptionsSchedulesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetSectionResponse{ + response := &GetApiMeSubscriptionsSchedulesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest SectionDetailSchema + var dest SubscribedSchedulesResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22889,32 +22951,53 @@ func ParseGetSectionResponse(rsp *http.Response) (*GetSectionResponse, error) { } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON404 = &dest + response.JSON401 = &dest } return response, nil } -// ParseGetSectionCalendarResponse parses an HTTP response from a GetSectionCalendarWithResponse call -func ParseGetSectionCalendarResponse(rsp *http.Response) (*GetSectionCalendarResponse, error) { +// ParseDeleteApiWorkspaceSubscriptionsResponse parses an HTTP response from a DeleteApiWorkspaceSubscriptionsWithResponse call +func ParseDeleteApiWorkspaceSubscriptionsResponse(rsp *http.Response) (*DeleteApiWorkspaceSubscriptionsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetSectionCalendarResponse{ + response := &DeleteApiWorkspaceSubscriptionsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest CalendarSubscriptionRemoveResponseSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -22922,32 +23005,60 @@ func ParseGetSectionCalendarResponse(rsp *http.Response) (*GetSectionCalendarRes } response.JSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParseGetSectionScheduleGroupsResponse parses an HTTP response from a GetSectionScheduleGroupsWithResponse call -func ParseGetSectionScheduleGroupsResponse(rsp *http.Response) (*GetSectionScheduleGroupsResponse, error) { +// ParseAppendCalendarSubscriptionSectionsResponse parses an HTTP response from a AppendCalendarSubscriptionSectionsWithResponse call +func ParseAppendCalendarSubscriptionSectionsResponse(rsp *http.Response) (*AppendCalendarSubscriptionSectionsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetSectionScheduleGroupsResponse{ + response := &AppendCalendarSubscriptionSectionsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []map[string]interface{} + var dest CalendarSubscriptionAppendResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -22955,27 +23066,41 @@ func ParseGetSectionScheduleGroupsResponse(rsp *http.Response) (*GetSectionSched } response.JSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParseGetSectionSchedulesResponse parses an HTTP response from a GetSectionSchedulesWithResponse call -func ParseGetSectionSchedulesResponse(rsp *http.Response) (*GetSectionSchedulesResponse, error) { +// ParseSetCalendarSubscriptionResponse parses an HTTP response from a SetCalendarSubscriptionWithResponse call +func ParseSetCalendarSubscriptionResponse(rsp *http.Response) (*SetCalendarSubscriptionResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetSectionSchedulesResponse{ + response := &SetCalendarSubscriptionResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest []map[string]interface{} + var dest CalendarSubscriptionCreateResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22988,34 +23113,48 @@ func ParseGetSectionSchedulesResponse(rsp *http.Response) (*GetSectionSchedulesR } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON404 = &dest + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest } return response, nil } -// ParseListSemestersResponse parses an HTTP response from a ListSemestersWithResponse call -func ParseListSemestersResponse(rsp *http.Response) (*ListSemestersResponse, error) { +// ParseBatchUpdateCalendarSubscriptionResponse parses an HTTP response from a BatchUpdateCalendarSubscriptionWithResponse call +func ParseBatchUpdateCalendarSubscriptionResponse(rsp *http.Response) (*BatchUpdateCalendarSubscriptionResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListSemestersResponse{ + response := &BatchUpdateCalendarSubscriptionResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedSemesterResponseSchema + var dest CalendarSubscriptionBatchResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -23028,60 +23167,88 @@ func ParseListSemestersResponse(rsp *http.Response) (*ListSemestersResponse, err } response.JSON400 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParseGetCurrentSemesterResponse parses an HTTP response from a GetCurrentSemesterWithResponse call -func ParseGetCurrentSemesterResponse(rsp *http.Response) (*GetCurrentSemesterResponse, error) { +// ParseGetCurrentCalendarSubscriptionResponse parses an HTTP response from a GetCurrentCalendarSubscriptionWithResponse call +func ParseGetCurrentCalendarSubscriptionResponse(rsp *http.Response) (*GetCurrentCalendarSubscriptionResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetCurrentSemesterResponse{ + response := &GetCurrentCalendarSubscriptionResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest SemesterSchema + var dest CurrentCalendarSubscriptionResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON404 = &dest + response.JSON401 = &dest } return response, nil } -// ParseListTeachersResponse parses an HTTP response from a ListTeachersWithResponse call -func ParseListTeachersResponse(rsp *http.Response) (*ListTeachersResponse, error) { +// ParsePostApiWorkspaceSubscriptionsImportCodesResponse parses an HTTP response from a PostApiWorkspaceSubscriptionsImportCodesWithResponse call +func ParsePostApiWorkspaceSubscriptionsImportCodesResponse(rsp *http.Response) (*PostApiWorkspaceSubscriptionsImportCodesResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListTeachersResponse{ + response := &PostApiWorkspaceSubscriptionsImportCodesResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedTeacherResponseSchema + var dest CalendarSubscriptionImportResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -23094,27 +23261,55 @@ func ParseListTeachersResponse(rsp *http.Response) (*ListTeachersResponse, error } response.JSON400 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParseGetTeacherResponse parses an HTTP response from a GetTeacherWithResponse call -func ParseGetTeacherResponse(rsp *http.Response) (*GetTeacherResponse, error) { +// ParseQueryCalendarSubscriptionSectionsResponse parses an HTTP response from a QueryCalendarSubscriptionSectionsWithResponse call +func ParseQueryCalendarSubscriptionSectionsResponse(rsp *http.Response) (*QueryCalendarSubscriptionSectionsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetTeacherResponse{ + response := &QueryCalendarSubscriptionSectionsResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest TeacherDetailSchema + var dest CalendarSubscriptionQueryResponseSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -23127,6 +23322,13 @@ func ParseGetTeacherResponse(rsp *http.Response) (*GetTeacherResponse, error) { } response.JSON400 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest OpenApiErrorSchema + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest OpenApiErrorSchema if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -23875,43 +24077,3 @@ func ParseDownloadUploadResponse(rsp *http.Response) (*DownloadUploadResponse, e return response, nil } - -// ParseGetUserCalendarResponse parses an HTTP response from a GetUserCalendarWithResponse call -func ParseGetUserCalendarResponse(rsp *http.Response) (*GetUserCalendarResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &GetUserCalendarResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON401 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON403 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest OpenApiErrorSchema - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON404 = &dest - - } - - return response, nil -} diff --git a/internal/tui/tui_test.go b/internal/tui/tui_test.go index 8f92c1f..8d623e6 100644 --- a/internal/tui/tui_test.go +++ b/internal/tui/tui_test.go @@ -332,7 +332,7 @@ func TestSearchTableErrorFitsCompactWindow(t *testing.T) { m = updated.(tableModel) m.mode = tableModeResults m.query = SearchResult{Limit: 20} - m.err = `Get "http://127.0.0.1:1/api/courses?limit=20": dial tcp 127.0.0.1:1: socket: operation not permitted` + m.err = `Get "http://127.0.0.1:1/api/catalog/courses?limit=20": dial tcp 127.0.0.1:1: socket: operation not permitted` rendered := m.View() if renderedWidth := lipgloss.Width(rendered); renderedWidth > 40 {