UiDictionaries: get: operationId: getUiDictionaries summary: 查询统一UI展示字典 description: 返回启动时加载的只读展示标签;不提供配置路径或写操作。 parameters: - $ref: '../components/parameters.yaml#/XRequestId' responses: '200': description: 完整UI展示字典 headers: X-Request-Id: description: 与响应体requestId相同 schema: type: string format: uuid content: application/json: schema: $ref: '../components/schemas.yaml#/UiDictionariesResponse' '401': $ref: '../components/responses.yaml#/AuthenticationError' '500': $ref: '../components/responses.yaml#/InternalError' LoginBackground: get: operationId: getLoginBackground summary: 查询登录界面自定义背景图 description: >- 返回服务端运行目录下的 background.jpg 或 background.png(jpg优先); 携带 theme 查询参数(blue/red/green)时优先返回 background-{theme}.jpg/png, 主题背景图不存在时回落通用 background.jpg/png(契约1.31); 运行目录不存在背景图文件时返回404,前端回退默认纯色背景。 接口公开(登录前无凭证可访问),允许浏览器缓存60秒。 security: [] parameters: - $ref: '../components/parameters.yaml#/XRequestId' - name: theme in: query required: false description: 主题键(契约1.31);白名单外的取值按未提供处理,回落通用背景图。 schema: type: string enum: [blue, red, green] responses: '200': description: 背景图片二进制 headers: X-Request-Id: description: 与请求发送的X-Request-Id一致 schema: type: string format: uuid content: image/jpeg: schema: type: string format: binary image/png: schema: type: string format: binary '404': description: 运行目录下不存在背景图文件 content: application/json: schema: $ref: '../components/schemas.yaml#/ErrorResponse' '500': $ref: '../components/responses.yaml#/InternalError' # 契约1.62 登录页文案:大标题与底部小字(sys_setting 键值表 # login.title / login.footer 行,行不存在=未设置,前端回落内置默认)。 LoginBranding: get: operationId: getLoginBranding summary: 读取登录页文案(大标题与底部小字) description: >- 契约1.62。接口公开(登录前无凭证可访问,登录页与登录背景图同模式); 响应data={title,footerText},null=未设置(前端回落内置默认文案)。 security: [] parameters: - $ref: '../components/parameters.yaml#/XRequestId' responses: '200': description: 登录页文案(null=未设置) headers: X-Request-Id: description: 与响应体requestId相同 schema: type: string format: uuid content: application/json: schema: type: object additionalProperties: false required: [title, footerText] properties: title: {type: [string, 'null'], description: 登录页大标题,最长64字,null=未设置} footerText: {type: [string, 'null'], description: 登录页底部小字,最长200字,null=未设置} '500': $ref: '../components/responses.yaml#/InternalError' put: operationId: updateLoginBranding summary: 保存登录页文案 description: >- 契约1.62。manage_system管理位;请求体必含且仅含title与footerText (传null或空白即清除、恢复默认;非字符串返回400 INVALID_ARGUMENT 「{字段}必须是字符串」;title超过64字返回400「登录页大标题不能超过64字」、 footerText超过200字返回400「登录页底部小字不能超过200字」);两文案分别 upsert至sys_setting的login.title/login.footer行;响应回显{title,footerText}; 审计LOGIN_BRANDING_UPDATE(targetType=SYSTEM,targetName=login-branding)。 security: - BearerAuth: [] parameters: - $ref: '../components/parameters.yaml#/XRequestId' requestBody: required: true content: application/json: schema: type: object additionalProperties: false required: [title, footerText] properties: title: {type: [string, 'null'], description: 登录页大标题,null/空白即恢复默认} footerText: {type: [string, 'null'], description: 登录页底部小字,null/空白即恢复默认} responses: '200': description: 已保存(data回显两文案) content: application/json: schema: type: object additionalProperties: false required: [title, footerText] properties: title: {type: [string, 'null'], description: 保存后的登录页大标题} footerText: {type: [string, 'null'], description: 保存后的登录页底部小字} '400': {$ref: '../components/responses.yaml#/InvalidArgument'} '401': {$ref: '../components/responses.yaml#/AuthenticationError'} '403': {$ref: '../components/responses.yaml#/Forbidden'} '500': {$ref: '../components/responses.yaml#/InternalError'}