openapi: 3.0.3 info: title: 方案计划文档管理系统 API version: 1.20.0 description: DMS第一阶段接口;Q3-B正文检索、原文件预览、1.6 LibreOffice离线文档转换与PDF预览、1.7 机构用户维护与详细说明、1.8 角色管理与权限矩阵、1.9 方案关联关系、1.10 部门IP登录限制、1.11 统一门户跳转登录与子案挂载、1.12 正文提取状态可见与重新解析、1.13 登录界面自定义背景图、1.17 管理类权限矩阵化(管理位挂角色)、1.19 借阅授权收敛(限时用户借阅+审批单凭证)。 servers: - url: / paths: /api/v1/health: get: operationId: getDmsHealth summary: DMS健康检查 security: [] parameters: - $ref: './components/parameters.yaml#/XRequestId' responses: '200': $ref: './components/responses.yaml#/HealthSuccess' '500': $ref: './components/responses.yaml#/InternalError' /api/v1/auth/login: $ref: './paths/auth.yaml#/Login' /api/v1/auth/logout: $ref: './paths/auth.yaml#/Logout' /api/v1/auth/portal/verify: $ref: './paths/auth.yaml#/PortalVerify' /api/v1/auth/portal/setup-password: $ref: './paths/auth.yaml#/PortalSetupPassword' /api/v1/users/me: $ref: './paths/users.yaml#/CurrentUser' /api/v1/users/me/ui-theme: $ref: './paths/users.yaml#/CurrentUserUiTheme' /api/v1/organizations/tree: $ref: './paths/organizations.yaml#/OrganizationTree' /api/v1/organizations: $ref: './paths/organizations.yaml#/Organizations' /api/v1/organizations/{id}: $ref: './paths/organizations.yaml#/Organization' /api/v1/organizations/{id}/ip-assignments: $ref: './paths/organizations.yaml#/OrganizationIpAssignments' /api/v1/ip-entries: $ref: './paths/ip-entries.yaml#/IpEntries' /api/v1/ip-entries/{id}: $ref: './paths/ip-entries.yaml#/IpEntry' /api/v1/users: $ref: './paths/users.yaml#/Users' /api/v1/users/{id}: $ref: './paths/users.yaml#/User' /api/v1/users/{id}/reset-password: $ref: './paths/users.yaml#/UserResetPassword' /api/v1/roles: $ref: './paths/roles.yaml#/Roles' /api/v1/roles/{id}: $ref: './paths/roles.yaml#/Role' /api/v1/roles/{id}/permissions: $ref: './paths/roles.yaml#/RolePermissions' /api/v1/roles/{id}/users: $ref: './paths/roles.yaml#/RoleUsers' /api/v1/config/ui-dictionaries: $ref: './paths/configuration.yaml#/UiDictionaries' /api/v1/config/login-background: $ref: './paths/configuration.yaml#/LoginBackground' /api/v1/categories/tree: $ref: './paths/categories.yaml#/CategoryTree' /api/v1/categories: $ref: './paths/categories.yaml#/Categories' /api/v1/categories/reorder: $ref: './paths/categories.yaml#/CategoriesReorder' /api/v1/categories/{id}: $ref: './paths/categories.yaml#/Category' /api/v1/documents: $ref: './paths/documents.yaml#/Documents' /api/v1/documents/tags: $ref: './paths/documents.yaml#/DocumentsTags' /api/v1/documents/reorder: $ref: './paths/documents.yaml#/DocumentsReorder' /api/v1/documents/{id}: $ref: './paths/documents.yaml#/Document' /api/v1/documents/{id}/re-extract: $ref: './paths/documents.yaml#/DocumentReExtract' /api/v1/documents/{id}/move: $ref: './paths/documents.yaml#/DocumentMove' /api/v1/documents/batch-import: $ref: './paths/documents.yaml#/DocumentBatchImport' /api/v1/documents/{id}/preview: $ref: './paths/documents.yaml#/DocumentPreview' /api/v1/documents/{id}/download: $ref: './paths/documents.yaml#/DocumentDownload' /api/v1/main-plans/{id}/sub-plans: $ref: './paths/documents.yaml#/SubPlans' /api/v1/main-plans/{id}/sub-plans/bind: $ref: './paths/documents.yaml#/MainPlanSubPlanBinding' /api/v1/main-plans/{id}/sub-plans/{subPlanId}: $ref: './paths/documents.yaml#/MainPlanSubPlan' /api/v1/attachments: $ref: './paths/documents.yaml#/Attachments' /api/v1/attachments/{id}: $ref: './paths/documents.yaml#/Attachment' /api/v1/attachments/batch-import: $ref: './paths/documents.yaml#/AttachmentBatchImport' /api/v1/attachments/{id}/main-plans: $ref: './paths/documents.yaml#/AttachmentMainPlans' /api/v1/main-plans/{id}/attachments: $ref: './paths/documents.yaml#/MainPlanAttachments' /api/v1/main-plans/{id}/attachments/bind: $ref: './paths/documents.yaml#/MainPlanAttachmentBinding' /api/v1/main-plans/{id}/attachments/reorder: $ref: './paths/documents.yaml#/MainPlanAttachmentsReorder' /api/v1/main-plans/{id}/attachments/{attachmentId}: $ref: './paths/documents.yaml#/MainPlanAttachment' /api/v1/main-plans/{id}/attachments/{bindingId}/move: $ref: './paths/documents.yaml#/MainPlanAttachmentMove' /api/v1/documents/{id}/description: $ref: './paths/documents.yaml#/DocumentDescription' /api/v1/documents/{id}/permissions: $ref: './paths/documents.yaml#/DocumentPermissions' /api/v1/documents/{id}/permissions/entries/{entryId}/voucher: $ref: './paths/documents.yaml#/DocumentPermissionVoucher' /api/v1/documents/{id}/password: $ref: './paths/documents.yaml#/DocumentPassword' /api/v1/documents/relation-presets: $ref: './paths/documents.yaml#/DocumentRelationPresets' /api/v1/documents/{id}/relations: $ref: './paths/documents.yaml#/DocumentRelations' /api/v1/audit/logs: $ref: './paths/audit.yaml#/AuditLogs' /api/v1/statistics/documents: $ref: './paths/audit.yaml#/DocumentStatistics' /api/v1/audit/statistics/trend: $ref: './paths/audit.yaml#/AuditTrendStatistics' /api/v1/audit/statistics/actions: $ref: './paths/audit.yaml#/AuditActionStatistics' /api/v1/audit/statistics/users: $ref: './paths/audit.yaml#/AuditUserStatistics' /api/v1/recycle-bin/documents: $ref: './paths/recycle-bin.yaml#/RecycleBinDocuments' /api/v1/recycle-bin/documents/{id}/restore: $ref: './paths/recycle-bin.yaml#/RestoreRecycleBinDocument' components: securitySchemes: BearerAuth: $ref: './components/security-schemes.yaml#/BearerAuth' schemas: StringId: $ref: './components/schemas.yaml#/StringId' UtcDateTime: $ref: './components/schemas.yaml#/UtcDateTime' PageResult: $ref: './components/schemas.yaml#/PageResult' ErrorResponse: $ref: './components/schemas.yaml#/ErrorResponse' LoginRequest: $ref: './components/schemas.yaml#/LoginRequest' LoginResponse: $ref: './components/schemas.yaml#/LoginResponse' UserSummary: $ref: './components/schemas.yaml#/UserSummary' OrganizationNode: $ref: './components/schemas.yaml#/OrganizationNode' UserPageResponse: $ref: './components/schemas.yaml#/UserPageResponse' CategoryNode: $ref: './components/schemas.yaml#/CategoryNode' CreateCategoryRequest: $ref: './components/schemas.yaml#/CreateCategoryRequest' UpdateCategoryRequest: $ref: './components/schemas.yaml#/UpdateCategoryRequest' DocumentSummary: $ref: './components/schemas.yaml#/DocumentSummary' DocumentDetail: $ref: './components/schemas.yaml#/DocumentDetail' AttachmentBindingSummary: $ref: './components/schemas.yaml#/AttachmentBindingSummary' BindAttachmentsRequest: $ref: './components/schemas.yaml#/BindAttachmentsRequest' BindAttachmentsResponse: $ref: './components/schemas.yaml#/BindAttachmentsResponse' UnbindAttachmentResponse: $ref: './components/schemas.yaml#/UnbindAttachmentResponse' ReorderDocumentsRequest: $ref: './components/schemas.yaml#/ReorderDocumentsRequest' ReorderDocumentsResponse: $ref: './components/schemas.yaml#/ReorderDocumentsResponse' ReorderAttachmentsRequest: $ref: './components/schemas.yaml#/ReorderAttachmentsRequest' ReorderAttachmentsResponse: $ref: './components/schemas.yaml#/ReorderAttachmentsResponse' PermissionEntry: $ref: './components/schemas.yaml#/PermissionEntry' SavePermissionsRequest: $ref: './components/schemas.yaml#/SavePermissionsRequest' PermissionDetailResponse: $ref: './components/schemas.yaml#/PermissionDetailResponse' PermissionVoucherResultResponse: $ref: './components/schemas.yaml#/PermissionVoucherResultResponse' PermissionVoucherDeleteResultResponse: $ref: './components/schemas.yaml#/PermissionVoucherDeleteResultResponse' AuditLogSummary: $ref: './components/schemas.yaml#/AuditLogSummary' AuditLogPageResponse: $ref: './components/schemas.yaml#/AuditLogPageResponse' DocumentStatisticsResponse: $ref: './components/schemas.yaml#/DocumentStatisticsResponse' AuditTrendResponse: $ref: './components/schemas.yaml#/AuditTrendResponse' AuditActionStatisticsResponse: $ref: './components/schemas.yaml#/AuditActionStatisticsResponse' AuditUserStatisticsResponse: $ref: './components/schemas.yaml#/AuditUserStatisticsResponse' DeletedBySnapshot: $ref: './components/schemas.yaml#/DeletedBySnapshot' RecycleBinDocumentSummary: $ref: './components/schemas.yaml#/RecycleBinDocumentSummary' RecycleBinDocumentPageResponse: $ref: './components/schemas.yaml#/RecycleBinDocumentPageResponse' RestoreDocumentRequest: $ref: './components/schemas.yaml#/RestoreDocumentRequest' RestoreDocumentResult: $ref: './components/schemas.yaml#/RestoreDocumentResult' RestoreDocumentResponse: $ref: './components/schemas.yaml#/RestoreDocumentResponse' DictionaryOption: $ref: './components/schemas.yaml#/DictionaryOption' UiDictionaries: $ref: './components/schemas.yaml#/UiDictionaries' UiDictionariesResponse: $ref: './components/schemas.yaml#/UiDictionariesResponse' RoleCode: $ref: './components/schemas.yaml#/RoleCode' AllowedModule: $ref: './components/schemas.yaml#/AllowedModule' DocumentType: $ref: './components/schemas.yaml#/DocumentType' DocumentStatus: $ref: './components/schemas.yaml#/DocumentStatus' SecurityLevel: $ref: './components/schemas.yaml#/SecurityLevel' AttachmentType: $ref: './components/schemas.yaml#/AttachmentType' AllowedAction: $ref: './components/schemas.yaml#/AllowedAction' CategoryType: $ref: './components/schemas.yaml#/CategoryType' EnabledStatus: $ref: './components/schemas.yaml#/EnabledStatus' AuditResult: $ref: './components/schemas.yaml#/AuditResult' AuditAction: $ref: './components/schemas.yaml#/AuditAction' AuditTarget: $ref: './components/schemas.yaml#/AuditTarget' CreateOrganizationRequest: $ref: './components/schemas.yaml#/CreateOrganizationRequest' UpdateOrganizationRequest: $ref: './components/schemas.yaml#/UpdateOrganizationRequest' OrganizationResponse: $ref: './components/schemas.yaml#/OrganizationResponse' DeleteOrganizationResponse: $ref: './components/schemas.yaml#/DeleteOrganizationResponse' CreateUserRequest: $ref: './components/schemas.yaml#/CreateUserRequest' UpdateUserRequest: $ref: './components/schemas.yaml#/UpdateUserRequest' ResetUserPasswordRequest: $ref: './components/schemas.yaml#/ResetUserPasswordRequest' DeleteUserResponse: $ref: './components/schemas.yaml#/DeleteUserResponse' ResetPasswordResponse: $ref: './components/schemas.yaml#/ResetPasswordResponse' DocumentTagsResponse: $ref: './components/schemas.yaml#/DocumentTagsResponse' DeptScope: $ref: './components/schemas.yaml#/DeptScope' RoleSummary: $ref: './components/schemas.yaml#/RoleSummary' RolePageResponse: $ref: './components/schemas.yaml#/RolePageResponse' CreateRoleRequest: $ref: './components/schemas.yaml#/CreateRoleRequest' UpdateRoleRequest: $ref: './components/schemas.yaml#/UpdateRoleRequest' RoleResponse: $ref: './components/schemas.yaml#/RoleResponse' DeleteRoleResponse: $ref: './components/schemas.yaml#/DeleteRoleResponse' RolePermissionRow: $ref: './components/schemas.yaml#/RolePermissionRow' RoleMatrixListResponse: $ref: './components/schemas.yaml#/RoleMatrixListResponse' UpdateRolePermissionsRequest: $ref: './components/schemas.yaml#/UpdateRolePermissionsRequest' RolePermissionsResponse: $ref: './components/schemas.yaml#/RolePermissionsResponse' RoleUsersResponse: $ref: './components/schemas.yaml#/RoleUsersResponse' UpdateRoleUsersRequest: $ref: './components/schemas.yaml#/UpdateRoleUsersRequest' IpEntrySummary: $ref: './components/schemas.yaml#/IpEntrySummary' IpEntryPageResponse: $ref: './components/schemas.yaml#/IpEntryPageResponse' CreateIpEntryRequest: $ref: './components/schemas.yaml#/CreateIpEntryRequest' UpdateIpEntryRequest: $ref: './components/schemas.yaml#/UpdateIpEntryRequest' IpEntryResponse: $ref: './components/schemas.yaml#/IpEntryResponse' DeleteIpEntryResponse: $ref: './components/schemas.yaml#/DeleteIpEntryResponse' OrgIpAssignmentListResponse: $ref: './components/schemas.yaml#/OrgIpAssignmentListResponse' UpdateOrgIpAssignmentsRequest: $ref: './components/schemas.yaml#/UpdateOrgIpAssignmentsRequest' OrgIpAssignmentsResponse: $ref: './components/schemas.yaml#/OrgIpAssignmentsResponse' DocumentRelationPreset: $ref: './components/schemas.yaml#/DocumentRelationPreset' DocumentRelationPresetsResponse: $ref: './components/schemas.yaml#/DocumentRelationPresetsResponse' DocumentRelationItem: $ref: './components/schemas.yaml#/DocumentRelationItem' DocumentRelationsResponse: $ref: './components/schemas.yaml#/DocumentRelationsResponse' UpdateDocumentRelationsRequest: $ref: './components/schemas.yaml#/UpdateDocumentRelationsRequest' DocumentRelationsSaveResponse: $ref: './components/schemas.yaml#/DocumentRelationsSaveResponse' security: - BearerAuth: []