# Generated from Springdoc /api-docs by scripts/export-openapi.sh. Do not edit manually. --- components: schemas: AccountView: properties: accountType: type: string auxiliaryRequired: type: boolean code: type: string name: type: string publicId: type: string type: object AccountingEventView: properties: allowedActions: items: type: string type: array amount: type: string businessDate: format: date type: string businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" counterparty: "$ref": "#/components/schemas/ReferenceView" createdAt: format: date-time type: string currency: type: string eventSequence: format: int32 type: integer eventType: type: string period: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string sourceBusinessNo: type: string sourceEventKey: type: string sourcePublicId: type: string sourceType: type: string sourceVersion: type: string status: type: string version: format: int64 type: integer voucherPublicId: type: string voucherStatus: type: string type: object ApiProblem: properties: code: type: string detail: type: string fieldErrors: additionalProperties: type: string type: object instance: format: uri type: string requestId: type: string status: format: int32 type: integer title: type: string type: format: uri type: string required: - type - title - status - detail - instance - code - requestId type: object ApiResponseArchiveFileDetailView: properties: data: "$ref": "#/components/schemas/ArchiveFileDetailView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseArchiveFileView: properties: data: "$ref": "#/components/schemas/ArchiveFileView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseAuditExportView: properties: data: "$ref": "#/components/schemas/AuditExportView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseAuditLogView: properties: data: "$ref": "#/components/schemas/AuditLogView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseBankAccountView: properties: data: "$ref": "#/components/schemas/BankAccountView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseBorrowView: properties: data: "$ref": "#/components/schemas/BorrowView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseCompanyView: properties: data: "$ref": "#/components/schemas/CompanyView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseContractLedgerDetailView: properties: data: "$ref": "#/components/schemas/ContractLedgerDetailView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseContractLedgerPageView: properties: data: "$ref": "#/components/schemas/ContractLedgerPageView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseContractView: properties: data: "$ref": "#/components/schemas/ContractView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseCounterpartyView: properties: data: "$ref": "#/components/schemas/CounterpartyView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseCsrfView: properties: data: "$ref": "#/components/schemas/CsrfView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseDictionaryView: properties: data: "$ref": "#/components/schemas/DictionaryView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseFileView: properties: data: "$ref": "#/components/schemas/FileView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseFilterOptionsView: properties: data: "$ref": "#/components/schemas/FilterOptionsView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseFormReferenceOptionsView: properties: data: "$ref": "#/components/schemas/FormReferenceOptionsView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseFundLedgerPageView: properties: data: "$ref": "#/components/schemas/FundLedgerPageView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseInvoiceView: properties: data: "$ref": "#/components/schemas/InvoiceView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseLegacyIdentifierResolutionView: properties: data: "$ref": "#/components/schemas/LegacyIdentifierResolutionView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseLegacyIdentifierView: properties: data: "$ref": "#/components/schemas/LegacyIdentifierView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListAccountView: properties: data: items: "$ref": "#/components/schemas/AccountView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListAccountingEventView: properties: data: items: "$ref": "#/components/schemas/AccountingEventView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListArchiveFileView: properties: data: items: "$ref": "#/components/schemas/ArchiveFileView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListAuditLogView: properties: data: items: "$ref": "#/components/schemas/AuditLogView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListBankAccountView: properties: data: items: "$ref": "#/components/schemas/BankAccountView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListBorrowView: properties: data: items: "$ref": "#/components/schemas/BorrowView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListCompanyView: properties: data: items: "$ref": "#/components/schemas/CompanyView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListContractListView: properties: data: items: "$ref": "#/components/schemas/ContractListView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListContractView: properties: data: items: "$ref": "#/components/schemas/ContractView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListCounterpartyView: properties: data: items: "$ref": "#/components/schemas/CounterpartyView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListDictionaryView: properties: data: items: "$ref": "#/components/schemas/DictionaryView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListInvoiceView: properties: data: items: "$ref": "#/components/schemas/InvoiceView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListLegacyIdentifierView: properties: data: items: "$ref": "#/components/schemas/LegacyIdentifierView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListMasterDataVersionView: properties: data: items: "$ref": "#/components/schemas/MasterDataVersionView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListPackageView: properties: data: items: "$ref": "#/components/schemas/PackageView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListPayableListView: properties: data: items: "$ref": "#/components/schemas/PayableListView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListPaymentCheckView: properties: data: items: "$ref": "#/components/schemas/PaymentCheckView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListPaymentView: properties: data: items: "$ref": "#/components/schemas/PaymentView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListProjectDetailView: properties: data: items: "$ref": "#/components/schemas/ProjectDetailView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListProjectListItemView: properties: data: items: "$ref": "#/components/schemas/ProjectListItemView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListProjectRiskFlagView: properties: data: items: "$ref": "#/components/schemas/ProjectRiskFlagView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListProjectTimelineView: properties: data: items: "$ref": "#/components/schemas/ProjectTimelineView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListReceiptView: properties: data: items: "$ref": "#/components/schemas/ReceiptView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListReceivableView: properties: data: items: "$ref": "#/components/schemas/ReceivableView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListReportRow: properties: data: items: oneOf: - "$ref": "#/components/schemas/ArchiveCompletenessRow" - "$ref": "#/components/schemas/ContractExecutionRow" - "$ref": "#/components/schemas/PaymentProgressRow" - "$ref": "#/components/schemas/ProjectLedgerRow" - "$ref": "#/components/schemas/ReceiptInvoiceRow" - "$ref": "#/components/schemas/WorkflowDurationRow" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListResourceListView: properties: data: items: "$ref": "#/components/schemas/ResourceListView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListRoleView: properties: data: items: "$ref": "#/components/schemas/RoleView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListSessionSummaryView: properties: data: items: "$ref": "#/components/schemas/SessionSummaryView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListSourceFormDetailView: properties: data: items: "$ref": "#/components/schemas/SourceFormDetailView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListSourceFormSummaryView: properties: data: items: "$ref": "#/components/schemas/SourceFormSummaryView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListTemplateView: properties: data: items: "$ref": "#/components/schemas/TemplateView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListVoucherView: properties: data: items: "$ref": "#/components/schemas/VoucherView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseListWorkflowTaskSummaryView: properties: data: items: "$ref": "#/components/schemas/WorkflowTaskSummaryView" type: array meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseMasterDataReferenceOptionsView: properties: data: "$ref": "#/components/schemas/MasterDataReferenceOptionsView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseObject: properties: data: {} meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponsePackageView: properties: data: "$ref": "#/components/schemas/PackageView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponsePaymentDetailView: properties: data: "$ref": "#/components/schemas/PaymentDetailView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponsePaymentView: properties: data: "$ref": "#/components/schemas/PaymentView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseProjectDetailView: properties: data: "$ref": "#/components/schemas/ProjectDetailView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseProjectExportView: properties: data: "$ref": "#/components/schemas/ProjectExportView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseProjectImportSummaryView: properties: data: "$ref": "#/components/schemas/ProjectImportSummaryView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseProjectReferenceOptionsView: properties: data: "$ref": "#/components/schemas/ProjectReferenceOptionsView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseProjectRiskFlagView: properties: data: "$ref": "#/components/schemas/ProjectRiskFlagView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseReceiptDetailView: properties: data: "$ref": "#/components/schemas/ReceiptDetailView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseReceiptView: properties: data: "$ref": "#/components/schemas/ReceiptView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseReferenceOptionsView: properties: data: "$ref": "#/components/schemas/ReferenceOptionsView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseReportDrilldownView: properties: data: "$ref": "#/components/schemas/ReportDrilldownView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseReportExportPreviewView: properties: data: "$ref": "#/components/schemas/ReportExportPreviewView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseReportExportView: properties: data: "$ref": "#/components/schemas/ReportExportView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseResourceView: properties: data: "$ref": "#/components/schemas/ResourceView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseSessionView: properties: data: "$ref": "#/components/schemas/SessionView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseSourceFormDetailView: properties: data: "$ref": "#/components/schemas/SourceFormDetailView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseSourceImportSummaryView: properties: data: "$ref": "#/components/schemas/SourceImportSummaryView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseSystemUpdateView: properties: data: "$ref": "#/components/schemas/SystemUpdateView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseTemplateView: properties: data: "$ref": "#/components/schemas/TemplateView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseUserView: properties: data: "$ref": "#/components/schemas/UserView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseValidationView: properties: data: "$ref": "#/components/schemas/ValidationView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseVoid: properties: data: {} meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseVoucherDetailView: properties: data: "$ref": "#/components/schemas/VoucherDetailView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseVoucherExportView: properties: data: "$ref": "#/components/schemas/VoucherExportView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseWorkbenchView: properties: data: "$ref": "#/components/schemas/WorkbenchView" meta: additionalProperties: {} type: object requestId: type: string type: object ApiResponseWorkflowTaskDetailView: properties: data: "$ref": "#/components/schemas/WorkflowTaskDetailView" meta: additionalProperties: {} type: object requestId: type: string type: object ApprovalView: properties: actedAt: format: date-time type: string action: type: string actorName: type: string nodeCode: type: string nodeName: type: string opinion: type: string publicId: type: string type: object ArchiveCompletenessRow: allOf: - "$ref": "#/components/schemas/ReportRow" - properties: businessNo: type: string completeness: type: string frozen: type: boolean missingCount: format: int64 type: integer notApplicableCount: format: int64 type: integer packageVersion: format: int32 type: integer pendingCount: format: int64 type: integer presentCount: format: int64 type: integer projectName: type: string rowId: type: string status: type: string totalItemCount: format: int64 type: integer type: object ArchiveCompletenessSourceView: allOf: - "$ref": "#/components/schemas/ReportSourceView" - properties: businessDate: type: string businessNo: type: string companyName: type: string companyPublicId: type: string completeness: type: string counterpartyPublicId: type: string currency: type: string frozen: type: boolean metricAmount: type: string missingCount: format: int64 type: integer notApplicableCount: format: int64 type: integer packageId: type: string packageVersion: format: int32 type: integer pendingCount: format: int64 type: integer presentCount: format: int64 type: integer projectName: type: string projectPublicId: type: string rowId: type: string status: type: string totalItemCount: format: int64 type: integer updatedAt: type: string type: object ArchiveFileDetailView: properties: borrows: items: "$ref": "#/components/schemas/BorrowView" type: array file: "$ref": "#/components/schemas/ArchiveFileView" versions: items: "$ref": "#/components/schemas/ArchiveFileView" type: array type: object ArchiveFileView: properties: allowedActions: items: type: string type: array archiveStatus: type: string borrowStatus: type: string companyName: type: string companyPublicId: type: string contractPublicId: type: string counterpartyPublicId: type: string displayName: type: string documentType: type: string formType: type: string mediaType: type: string originalType: type: string packagePublicId: type: string packageStatus: type: string projectBusinessNo: type: string projectName: type: string projectPublicId: type: string publicId: type: string scanStatus: type: string sensitive: type: boolean seriesPublicId: type: string sha256: type: string sizeBytes: format: int64 type: integer uploadedAt: format: date-time type: string uploadedBy: type: string versionNo: format: int32 type: integer type: object AuditExportRequest: properties: action: maxLength: 100 minLength: 0 type: string actorId: maxLength: 26 minLength: 0 type: string identityCode: maxLength: 40 minLength: 0 type: string keyword: maxLength: 100 minLength: 0 type: string objectId: maxLength: 26 minLength: 0 type: string objectType: maxLength: 80 minLength: 0 type: string occurredFrom: format: date-time type: string occurredTo: format: date-time type: string requestId: maxLength: 26 minLength: 0 type: string result: maxLength: 40 minLength: 0 type: string sort: enum: - occurredAt,asc - occurredAt,desc - eventSequence,asc - eventSequence,desc pattern: "(occurredAt|eventSequence),(asc|desc)" type: string type: object AuditExportView: properties: content: type: string exportId: type: string fileName: type: string rowCount: format: int32 type: integer sha256: type: string type: object AuditLogView: properties: actionCode: type: string activeRole: type: string afterJson: type: string allowedActions: items: type: string type: array beforeJson: type: string companyPublicId: type: string eventSequence: format: int64 type: integer objectPublicId: type: string objectType: type: string occurredAt: format: date-time type: string projectPublicId: type: string publicId: type: string reason: type: string requestId: type: string resultCode: type: string userPublicId: type: string username: type: string type: object AuthorizationScopeView: properties: amountLimit: type: number companyCode: type: string companyName: type: string companyPublicId: type: string permissionCount: format: int64 type: integer projectCode: type: string projectName: type: string projectPublicId: type: string roleCode: type: string roleName: type: string scopeType: type: string type: object BankAccountCreateRequest: properties: accountCategory: minLength: 1 type: string accountName: maxLength: 200 minLength: 0 type: string accountNo: maxLength: 64 minLength: 6 type: string bankName: maxLength: 200 minLength: 0 type: string ownerId: minLength: 1 type: string ownerType: minLength: 1 type: string validFrom: format: date type: string validTo: format: date type: string required: - accountCategory - accountName - accountNo - bankName - ownerId - ownerType - validFrom type: object BankAccountReferenceView: properties: accountName: type: string bankName: type: string maskedAccountNo: type: string publicId: type: string supplierId: type: string versionNo: format: int32 type: integer type: object BankAccountUpdateRequest: properties: accountCategory: minLength: 1 type: string accountName: maxLength: 200 minLength: 0 type: string accountNo: maxLength: 64 minLength: 6 type: string bankName: maxLength: 200 minLength: 0 type: string validFrom: format: date type: string validTo: format: date type: string version: format: int64 type: integer required: - accountCategory - accountName - bankName - validFrom - version type: object BankAccountView: properties: accountCategory: type: string accountName: type: string allowedActions: items: type: string type: array uniqueItems: true bankName: type: string createdAt: format: date-time type: string maskedAccountNo: type: string owner: "$ref": "#/components/schemas/MasterDataReferenceView" ownerType: type: string publicId: type: string status: type: string updatedAt: format: date-time type: string validFrom: format: date type: string validTo: format: date type: string version: format: int64 type: integer versionNo: format: int32 type: integer type: object BorrowCommandRequest: properties: opinion: maxLength: 1000 minLength: 2 type: string returnCondition: maxLength: 500 minLength: 0 type: string version: format: int64 type: integer required: - version type: object BorrowCreateRequest: properties: dueAt: format: date-time type: string fileId: maxLength: 26 minLength: 0 type: string purpose: maxLength: 500 minLength: 2 type: string required: - dueAt - fileId - purpose type: object BorrowView: properties: allowedActions: items: type: string type: array applicantName: type: string approvedAt: format: date-time type: string approvedByName: type: string businessNo: type: string dueAt: format: date-time type: string fileName: type: string filePublicId: type: string projectName: type: string projectPublicId: type: string publicId: type: string purpose: type: string returnCondition: type: string returnedAt: format: date-time type: string returnedByName: type: string reviewOpinion: type: string status: type: string version: format: int64 type: integer type: object CompanyCreateRequest: properties: businessNo: maxLength: 64 minLength: 0 type: string name: maxLength: 200 minLength: 0 type: string taxNo: maxLength: 64 minLength: 0 type: string required: - businessNo - name type: object CompanyUpdateRequest: properties: name: maxLength: 200 minLength: 0 type: string taxNo: maxLength: 64 minLength: 0 type: string version: format: int64 type: integer required: - name - version type: object CompanyView: properties: allowedActions: items: type: string type: array uniqueItems: true businessNo: type: string createdAt: format: date-time type: string name: type: string publicId: type: string status: type: string taxNo: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object ContractChangeCreateRequest: properties: changeAmount: type: number changeNo: maxLength: 64 minLength: 0 type: string contractVersion: format: int64 type: integer effectiveDate: format: date type: string reason: maxLength: 1000 minLength: 0 type: string required: - changeAmount - changeNo - contractVersion - effectiveDate - reason type: object ContractChangeLineView: properties: allowedActions: items: type: string type: array changeAmount: type: string changeNo: type: string createdAt: format: date-time type: string createdByName: type: string effectiveDate: format: date type: string publicId: type: string reason: type: string status: type: string version: format: int64 type: integer type: object ContractCreateRequest: properties: businessNo: maxLength: 64 minLength: 0 type: string companyId: minLength: 1 type: string counterpartyId: minLength: 1 type: string currency: minLength: 1 pattern: "[A-Za-z]{3}" type: string name: maxLength: 200 minLength: 0 type: string originalAmount: minLength: 1 pattern: "\\d{1,18}(\\.\\d{1,2})?" type: string projectId: minLength: 1 type: string required: - businessNo - companyId - counterpartyId - currency - name - originalAmount - projectId type: object ContractExecutionRow: allOf: - "$ref": "#/components/schemas/ReportRow" - properties: approvedChangeAmount: type: string availableAmount: type: string businessNo: type: string currency: type: string invoicedAmount: type: string name: type: string originalAmount: type: string paidAmount: type: string payableAmount: type: string pendingPayableAmount: type: string projectName: type: string rowId: type: string settlementAmount: type: string status: type: string type: object ContractExecutionSourceView: allOf: - "$ref": "#/components/schemas/ReportSourceView" - properties: approvedChangeAmount: type: string availableAmount: type: string businessDate: type: string businessNo: type: string companyName: type: string companyPublicId: type: string counterpartyPublicId: type: string currency: type: string invoicedAmount: type: string metricAmount: type: string name: type: string originalAmount: type: string paidAmount: type: string payableAmount: type: string pendingPayableAmount: type: string projectName: type: string projectPublicId: type: string rowId: type: string settlementAmount: type: string status: type: string updatedAt: type: string type: object ContractLedgerDetailView: properties: changes: items: "$ref": "#/components/schemas/ContractChangeLineView" type: array contract: "$ref": "#/components/schemas/ContractLedgerItemView" invoices: items: "$ref": "#/components/schemas/InvoiceLineView" type: array payables: items: "$ref": "#/components/schemas/PayableLineView" type: array payments: items: "$ref": "#/components/schemas/PaymentLineView" type: array settlements: items: "$ref": "#/components/schemas/ContractSettlementLineView" type: array type: object ContractLedgerItemView: properties: allowedActions: items: type: string type: array approvedChangeAmount: type: string availableAmount: type: string businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" counterparty: "$ref": "#/components/schemas/ReferenceView" currency: type: string invoicedAmount: type: string name: type: string originalAmount: type: string paidAmount: type: string payableAmount: type: string pendingPayableAmount: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string settlementAmount: type: string status: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object ContractLedgerPageView: properties: items: items: "$ref": "#/components/schemas/ContractLedgerItemView" type: array summary: "$ref": "#/components/schemas/ContractLedgerSummaryView" type: object ContractLedgerSummaryView: properties: approvedChangeAmount: type: string availableAmount: type: string contractCount: format: int64 type: integer invoicedAmount: type: string originalAmount: type: string paidAmount: type: string payableAmount: type: string pendingPayableAmount: type: string settlementAmount: type: string type: object ContractListView: properties: business_no: type: string change_amount: type: string company_name: type: string contract_amount: type: string counterparty_name: type: string currency: type: string name: type: string project_business_no: type: string project_name: type: string public_id: type: string settlement_amount: type: string status: type: string updated_at: format: date-time type: string type: object ContractReferenceView: properties: businessNo: type: string companyId: type: string counterpartyId: type: string counterpartyName: type: string counterpartyType: type: string name: type: string projectId: type: string publicId: type: string type: object ContractSettlementCreateRequest: properties: contractVersion: format: int64 type: integer settlementAmount: minimum: 0.0 type: number settlementDate: format: date type: string settlementNo: maxLength: 64 minLength: 0 type: string sourceDocumentId: maxLength: 26 minLength: 26 type: string required: - contractVersion - settlementAmount - settlementDate - settlementNo - sourceDocumentId type: object ContractSettlementLineView: properties: allowedActions: items: type: string type: array createdAt: format: date-time type: string createdByName: type: string publicId: type: string settlementAmount: type: string settlementDate: format: date type: string settlementNo: type: string sourceDocumentId: type: string sourceVersionId: type: string status: type: string version: format: int64 type: integer type: object ContractUpdateRequest: properties: companyId: minLength: 1 type: string counterpartyId: minLength: 1 type: string currency: minLength: 1 pattern: "[A-Za-z]{3}" type: string name: maxLength: 200 minLength: 0 type: string originalAmount: minLength: 1 pattern: "\\d{1,18}(\\.\\d{1,2})?" type: string projectId: minLength: 1 type: string version: format: int64 type: integer required: - companyId - counterpartyId - currency - name - originalAmount - projectId - version type: object ContractView: properties: allowedActions: items: type: string type: array uniqueItems: true approvedChangeAmount: type: string businessNo: type: string company: "$ref": "#/components/schemas/MasterDataReferenceView" counterparty: "$ref": "#/components/schemas/MasterDataReferenceView" createdAt: format: date-time type: string currency: type: string name: type: string originalAmount: type: string project: "$ref": "#/components/schemas/MasterDataReferenceView" publicId: type: string settlementAmount: type: string status: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object CounterpartyCreateRequest: properties: businessNo: maxLength: 64 minLength: 0 type: string contactName: maxLength: 100 minLength: 0 type: string contactPhone: maxLength: 32 minLength: 0 type: string name: maxLength: 200 minLength: 0 type: string taxNo: maxLength: 64 minLength: 0 type: string type: minLength: 1 type: string required: - businessNo - name - type type: object CounterpartyUpdateRequest: properties: contactName: maxLength: 100 minLength: 0 type: string contactPhone: maxLength: 32 minLength: 0 type: string name: maxLength: 200 minLength: 0 type: string taxNo: maxLength: 64 minLength: 0 type: string type: minLength: 1 type: string version: format: int64 type: integer required: - name - type - version type: object CounterpartyView: properties: allowedActions: items: type: string type: array uniqueItems: true businessNo: type: string contactName: type: string contactPhone: type: string createdAt: format: date-time type: string name: type: string publicId: type: string status: type: string taxNo: type: string type: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object CsrfView: properties: headerName: type: string parameterName: type: string token: type: string type: object DictionaryCreateRequest: properties: accountType: type: string auxiliaryRequired: type: boolean code: maxLength: 64 minLength: 0 type: string name: maxLength: 128 minLength: 0 type: string parentId: type: string rate: maxLength: 16 minLength: 0 type: string required: - code - name type: object DictionaryUpdateRequest: properties: accountType: type: string auxiliaryRequired: type: boolean name: maxLength: 128 minLength: 0 type: string parentId: type: string rate: maxLength: 16 minLength: 0 type: string version: format: int64 type: integer required: - name - version type: object DictionaryView: properties: accountType: type: string allowedActions: items: type: string type: array uniqueItems: true auxiliaryRequired: type: boolean code: type: string createdAt: format: date-time type: string name: type: string parent: "$ref": "#/components/schemas/MasterDataReferenceView" publicId: type: string rate: type: string resource: type: string status: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object DownloadUpdateRequest: properties: version: minLength: 1 pattern: "^[0-9A-Za-z][0-9A-Za-z._+\\-]{0,63}$" type: string required: - version type: object FailureResultRequest: properties: reason: maxLength: 1000 minLength: 0 type: string receiptFileIds: items: maxLength: 26 minLength: 0 type: string maxItems: 20 minItems: 0 type: array remark: maxLength: 1000 minLength: 0 type: string resultAt: format: date type: string version: format: int64 type: integer required: - reason - resultAt - version type: object FileLinkMetadata: properties: contractId: maxLength: 26 minLength: 0 type: string counterpartyId: maxLength: 26 minLength: 0 type: string fileType: maxLength: 64 minLength: 0 type: string formType: maxLength: 32 minLength: 0 type: string notApplicableReason: maxLength: 500 minLength: 0 type: string originalType: maxLength: 64 minLength: 0 type: string packageId: maxLength: 26 minLength: 0 type: string packageItemId: maxLength: 26 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string replacementReason: maxLength: 500 minLength: 0 type: string replacesFileId: maxLength: 26 minLength: 0 type: string required: - fileType - projectId type: object FileView: properties: createdAt: format: date-time type: string extension: type: string mediaType: type: string originalName: type: string publicId: type: string scanDetail: type: string scanStatus: type: string scannedAt: format: date-time type: string sha256: type: string sizeBytes: format: int64 type: integer type: object FilterOptionsView: properties: companies: items: "$ref": "#/components/schemas/ReferenceView" type: array costCategories: items: "$ref": "#/components/schemas/ReferenceView" type: array counterparties: items: "$ref": "#/components/schemas/ReferenceView" type: array projects: items: "$ref": "#/components/schemas/ReferenceView" type: array type: object FormReferenceOptionsView: properties: companies: items: "$ref": "#/components/schemas/ReferenceView" type: array contracts: items: "$ref": "#/components/schemas/ContractReferenceView" type: array costCategories: items: "$ref": "#/components/schemas/ReferenceView" type: array customers: items: "$ref": "#/components/schemas/ReferenceView" type: array payables: items: "$ref": "#/components/schemas/PayableReferenceView" type: array projects: items: "$ref": "#/components/schemas/ReferenceView" type: array suppliers: items: "$ref": "#/components/schemas/ReferenceView" type: array type: object FreezeRequest: properties: reason: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - reason - version type: object FundControlView: properties: approvedAdjustment: type: string approvedUnpaid: type: string availableBalance: type: string confirmedDeduction: type: string confirmedReceipt: type: string currency: type: string frozenAmount: type: string paidAmount: type: string projectCode: type: string projectId: type: string projectName: type: string version: format: int64 type: integer type: object FundLedgerEntryView: properties: approvedAdjustmentAfter: type: string approvedAdjustmentDelta: type: string approvedUnpaidAfter: type: string approvedUnpaidDelta: type: string balanceAfter: type: string confirmedDeductionAfter: type: string confirmedDeductionDelta: type: string confirmedReceiptAfter: type: string confirmedReceiptDelta: type: string controlVersionAfter: format: int64 type: integer createdByName: type: string currency: type: string deltaAmount: type: string description: type: string entryType: type: string eventAmount: type: string frozenAmountAfter: type: string frozenAmountDelta: type: string occurredAt: format: date-time type: string paidAmountAfter: type: string paidAmountDelta: type: string publicId: type: string sourceBusinessNo: type: string sourcePublicId: type: string sourceType: type: string type: object FundLedgerPageView: properties: control: "$ref": "#/components/schemas/FundControlView" items: items: "$ref": "#/components/schemas/FundLedgerEntryView" type: array meta: additionalProperties: {} type: object type: object GenerateDraftRequest: properties: ruleVersion: maxLength: 64 minLength: 0 type: string version: format: int64 type: integer required: - ruleVersion - version type: object InstallUpdateRequest: properties: reason: maxLength: 500 minLength: 0 type: string version: minLength: 1 pattern: "^[0-9A-Za-z][0-9A-Za-z._+\\-]{0,63}$" type: string required: - version type: object InvoiceCreateRequest: properties: amount: minimum: 0.01 type: number companyId: maxLength: 26 minLength: 0 type: string contractId: maxLength: 26 minLength: 0 type: string counterpartyId: maxLength: 26 minLength: 0 type: string invoiceType: minLength: 1 pattern: SPECIAL|NORMAL|RECEIPT type: string projectId: maxLength: 26 minLength: 0 type: string requestedDate: format: date type: string taxRate: maximum: 1 minimum: 0 type: number required: - amount - companyId - counterpartyId - invoiceType - projectId - requestedDate - taxRate type: object InvoiceLineView: properties: amount: type: string businessNo: type: string invoiceNo: type: string invoiceType: type: string issuedDate: format: date type: string publicId: type: string requestedDate: format: date type: string status: type: string taxRate: type: string updatedAt: format: date-time type: string type: object InvoiceResultRequest: properties: invoiceNo: maxLength: 100 minLength: 0 type: string issuedDate: format: date type: string resultFileId: maxLength: 26 minLength: 0 type: string version: format: int64 type: integer required: - invoiceNo - issuedDate - version type: object InvoiceReviewRequest: properties: decision: minLength: 1 pattern: APPROVE|RETURN|REJECT type: string opinion: maxLength: 1000 minLength: 0 type: string returnPoints: items: maxLength: 64 minLength: 0 type: string maxItems: 32 minItems: 0 type: array version: format: int64 type: integer required: - decision - opinion - version type: object InvoiceUpdateRequest: properties: amount: minimum: 0.01 type: number companyId: maxLength: 26 minLength: 0 type: string contractId: maxLength: 26 minLength: 0 type: string counterpartyId: maxLength: 26 minLength: 0 type: string invoiceType: minLength: 1 pattern: SPECIAL|NORMAL|RECEIPT type: string projectId: maxLength: 26 minLength: 0 type: string requestedDate: format: date type: string taxRate: maximum: 1 minimum: 0 type: number version: format: int64 type: integer required: - amount - companyId - counterpartyId - invoiceType - projectId - requestedDate - taxRate - version type: object InvoiceView: properties: allowedActions: items: type: string type: array amount: type: string businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" contract: "$ref": "#/components/schemas/ReferenceView" contractAvailableAmount: type: string contractCommittedAmount: type: string contractLimit: type: string counterparty: "$ref": "#/components/schemas/ReferenceView" createdAt: format: date-time type: string currency: type: string invoiceNo: type: string invoiceType: type: string issuedDate: format: date type: string originalInvoiceId: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string requestedDate: format: date type: string resultFileId: type: string resultRecordedAt: format: date-time type: string resultRecordedByName: type: string reviewOpinion: type: string reviewedAt: format: date-time type: string reviewedByName: type: string sourceDocumentId: type: string sourceVersionId: type: string status: type: string submittedAt: format: date-time type: string submittedByName: type: string taxRate: type: string terminationReason: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object JsonNode: {} LegacyIdentifierCreateRequest: properties: legacyCode: maxLength: 128 minLength: 0 type: string sourceSystem: maxLength: 64 minLength: 0 type: string required: - legacyCode - sourceSystem type: object LegacyIdentifierResolutionView: properties: legacyCode: type: string mappingPublicId: type: string resource: type: string sourceSystem: type: string targetPublicId: type: string type: object LegacyIdentifierView: properties: allowedActions: items: type: string type: array uniqueItems: true createdAt: format: date-time type: string legacyCode: type: string publicId: type: string resource: type: string sourceSystem: type: string status: type: string targetPublicId: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object LoginRequest: properties: password: maxLength: 64 minLength: 12 type: string username: maxLength: 64 minLength: 0 type: string required: - password - username type: object MasterDataReferenceOptionsView: properties: companies: items: "$ref": "#/components/schemas/MasterDataReferenceView" type: array costCategories: items: "$ref": "#/components/schemas/MasterDataReferenceView" type: array counterparties: items: "$ref": "#/components/schemas/MasterDataReferenceView" type: array projects: items: "$ref": "#/components/schemas/MasterDataReferenceView" type: array type: object MasterDataReferenceView: properties: code: type: string name: type: string publicId: type: string type: object MasterDataVersionView: properties: actionCode: type: string actorName: type: string after: "$ref": "#/components/schemas/JsonNode" auditId: type: string before: "$ref": "#/components/schemas/JsonNode" changedAt: format: date-time type: string status: type: string version: format: int64 type: integer type: object NotApplicableRequest: properties: reason: maxLength: 500 minLength: 2 type: string version: format: int64 type: integer required: - reason - version type: object NotApplicableReviewRequest: properties: approved: type: boolean opinion: maxLength: 1000 minLength: 2 type: string version: format: int64 type: integer required: - approved - opinion - version type: object OfflineResultRequest: properties: amount: minimum: 0.01 type: number receiptFileIds: items: maxLength: 26 minLength: 0 type: string maxItems: 20 minItems: 0 type: array remark: maxLength: 1000 minLength: 0 type: string resultAt: format: date type: string version: format: int64 type: integer required: - amount - receiptFileIds - resultAt - version type: object PackageActionView: properties: actionCode: type: string actorName: type: string fromStatus: type: string manifestSha256: type: string occurredAt: format: date-time type: string opinion: type: string sequenceNo: format: int32 type: integer toStatus: type: string type: object PackageCommandRequest: properties: opinion: maxLength: 1000 minLength: 0 type: string returnItemIds: items: pattern: "[0-9A-HJKMNP-TV-Z]{26}" type: string maxItems: 50 minItems: 0 type: array version: format: int64 type: integer required: - version type: object PackageCreateRequest: properties: physicalLocation: maxLength: 500 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string retentionYears: format: int32 minimum: 1 type: integer required: - projectId type: object PackageItemView: properties: allowedActions: items: type: string type: array fileName: type: string filePublicId: type: string fileSha256: type: string itemName: type: string itemType: type: string missingReason: type: string notApplicableReason: type: string notApplicableRequestedAt: format: date-time type: string notApplicableRequestedByName: type: string notApplicableReviewOpinion: type: string notApplicableReviewedAt: format: date-time type: string notApplicableReviewedByName: type: string objectPublicId: type: string objectType: type: string publicId: type: string required: type: boolean returnReason: type: string status: type: string type: object PackageObjectSnapshotView: properties: capturedAt: format: date-time type: string itemType: type: string objectBusinessNo: type: string objectFormType: type: string objectName: type: string objectPublicId: type: string objectStatus: type: string objectType: type: string objectVersion: format: int64 type: integer publicId: type: string snapshotSha256: type: string sourceVersionPublicId: type: string type: object PackageRevisionRequest: properties: reason: maxLength: 1000 minLength: 2 type: string version: format: int64 type: integer required: - reason - version type: object PackageView: properties: actions: items: "$ref": "#/components/schemas/PackageActionView" type: array allowedActions: items: type: string type: array archivedAt: format: date-time type: string businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" completeness: type: string frozen: type: boolean items: items: "$ref": "#/components/schemas/PackageItemView" type: array manifestSha256: type: string missingCount: format: int32 type: integer objectSnapshots: items: "$ref": "#/components/schemas/PackageObjectSnapshotView" type: array packageVersion: format: int32 type: integer physicalLocation: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string retentionExpiresOn: format: date type: string retentionStatus: type: string retentionYears: format: int32 type: integer reviewedByName: type: string revisionReason: type: string rootPackagePublicId: type: string ruleVersion: type: string status: type: string submittedAt: format: date-time type: string submittedByName: type: string supersedesPackagePublicId: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object PasswordChangeRequest: properties: confirmPassword: minLength: 1 type: string currentPassword: minLength: 1 type: string newPassword: maxLength: 100 minLength: 12 type: string required: - confirmPassword - currentPassword - newPassword type: object PayableCreateRequest: properties: amount: minimum: 0.01 type: number businessDate: format: date type: string businessNo: maxLength: 64 minLength: 0 type: string contractVersion: format: int64 type: integer costCategoryId: maxLength: 26 minLength: 0 type: string sourceDocumentId: maxLength: 26 minLength: 26 type: string required: - amount - businessDate - businessNo - contractVersion - costCategoryId - sourceDocumentId type: object PayableLineView: properties: allowedActions: items: type: string type: array amount: type: string businessDate: format: date type: string businessNo: type: string costCategory: "$ref": "#/components/schemas/ReferenceView" invoicedAmount: type: string paidAmount: type: string publicId: type: string sourceDocumentId: type: string sourceVersionId: type: string status: type: string unpaidAmount: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object PayableListView: properties: amount: type: string business_date: format: date type: string business_no: type: string cost_category_name: type: string counterparty_name: type: string invoiced_amount: type: string paid_amount: type: string project_business_no: type: string project_name: type: string public_id: type: string status: type: string updated_at: format: date-time type: string type: object PayableReferenceView: properties: amount: type: string businessNo: type: string contractId: type: string paidAmount: type: string projectId: type: string publicId: type: string remainingAmount: type: string supplierId: type: string type: object PaymentAttachmentExceptionInput: properties: documentType: minLength: 1 pattern: "[A-Z][A-Z0-9_]{1,63}" type: string reason: maxLength: 500 minLength: 0 type: string required: - documentType - reason type: object PaymentAttachmentExceptionReviewRequest: properties: decision: minLength: 1 pattern: APPROVE|REJECT type: string opinion: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - decision - opinion - version type: object PaymentAttachmentExceptionView: properties: allowedActions: items: type: string type: array consumedAt: format: date-time type: string documentName: type: string documentType: type: string publicId: type: string reason: type: string requestedAt: format: date-time type: string requestedByName: type: string reviewOpinion: type: string reviewedAt: format: date-time type: string reviewedByName: type: string status: type: string version: format: int64 type: integer type: object PaymentAttachmentInput: properties: documentType: minLength: 1 pattern: "[A-Z][A-Z0-9_]{1,63}" type: string fileId: maxLength: 26 minLength: 0 type: string required: - documentType - fileId type: object PaymentAttachmentView: properties: createdAt: format: date-time type: string documentType: type: string fileId: type: string fileName: type: string publicId: type: string scanStatus: type: string type: object PaymentCheckView: properties: checkedAt: format: date-time type: string code: type: string message: type: string publicId: type: string result: type: string type: object PaymentControlExceptionRequest: properties: controlCode: minLength: 1 pattern: "[A-Z][A-Z0-9_]{1,63}" type: string paymentVersion: format: int64 type: integer reason: maxLength: 500 minLength: 0 type: string validUntil: format: date type: string required: - controlCode - paymentVersion - reason - validUntil type: object PaymentControlExceptionReviewRequest: properties: decision: minLength: 1 pattern: APPROVE|REJECT type: string opinion: maxLength: 1000 minLength: 0 type: string paymentVersion: format: int64 type: integer version: format: int64 type: integer required: - decision - opinion - paymentVersion - version type: object PaymentControlExceptionView: properties: allowedActions: items: type: string type: array consumedAt: format: date-time type: string controlCode: type: string findingSummary: type: string publicId: type: string reason: type: string requestedAt: format: date-time type: string requestedByName: type: string reviewOpinion: type: string reviewedAt: format: date-time type: string reviewedByName: type: string status: type: string validUntil: format: date type: string version: format: int64 type: integer type: object PaymentCreateRequest: properties: attachmentExceptions: items: "$ref": "#/components/schemas/PaymentAttachmentExceptionInput" maxItems: 20 minItems: 0 type: array attachmentFileIds: items: maxLength: 26 minLength: 0 type: string maxItems: 20 minItems: 0 type: array attachments: items: "$ref": "#/components/schemas/PaymentAttachmentInput" maxItems: 20 minItems: 0 type: array bankAccountVersionId: maxLength: 26 minLength: 0 type: string companyId: maxLength: 26 minLength: 0 type: string contractId: maxLength: 26 minLength: 0 type: string currency: minLength: 1 pattern: "[A-Z]{3}" type: string payableId: maxLength: 26 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string purpose: maxLength: 500 minLength: 0 type: string requestedAmount: minimum: 0.01 type: number requestedDate: format: date type: string sourceDocumentId: maxLength: 26 minLength: 0 type: string supplierId: maxLength: 26 minLength: 0 type: string required: - bankAccountVersionId - companyId - contractId - currency - projectId - purpose - requestedAmount - requestedDate - supplierId type: object PaymentDetailView: properties: attachmentExceptions: items: "$ref": "#/components/schemas/PaymentAttachmentExceptionView" type: array attachments: items: "$ref": "#/components/schemas/PaymentAttachmentView" type: array checks: items: "$ref": "#/components/schemas/PaymentCheckView" type: array controlExceptions: items: "$ref": "#/components/schemas/PaymentControlExceptionView" type: array payment: "$ref": "#/components/schemas/PaymentView" results: items: "$ref": "#/components/schemas/PaymentResultView" type: array type: object PaymentExportRequest: properties: companyId: maxLength: 26 minLength: 0 type: string keyword: maxLength: 100 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string riskCode: maxLength: 32 minLength: 0 type: string sort: maxLength: 40 minLength: 0 type: string status: maxLength: 32 minLength: 0 type: string submittedDateFrom: format: date type: string submittedDateTo: format: date type: string supplierId: maxLength: 26 minLength: 0 type: string tab: maxLength: 32 minLength: 0 type: string type: object PaymentLineView: properties: approvedAmount: type: string businessNo: type: string publicId: type: string purpose: type: string requestedAmount: type: string requestedDate: format: date type: string status: type: string updatedAt: format: date-time type: string type: object PaymentProgressRow: allOf: - "$ref": "#/components/schemas/ReportRow" - properties: accountingStatus: type: string approvedAmount: type: string approvedAt: type: string businessNo: type: string checkedAt: type: string offlineResult: type: string paidDate: type: string projectName: type: string receiptFileCount: format: int64 type: integer requestedAmount: type: string requestedDate: type: string resultAmount: type: string rowId: type: string status: type: string submittedAt: type: string transactionNo: type: string type: object PaymentProgressSourceView: allOf: - "$ref": "#/components/schemas/ReportSourceView" - properties: accountingStatus: type: string approvedAmount: type: string approvedAt: type: string businessDate: type: string businessNo: type: string checkedAt: type: string companyName: type: string companyPublicId: type: string counterpartyPublicId: type: string currency: type: string metricAmount: type: string offlineResult: type: string paidDate: type: string projectName: type: string projectPublicId: type: string receiptFileCount: format: int64 type: integer requestedAmount: type: string requestedDate: type: string resultAmount: type: string resultId: type: string rowId: type: string sourceDocumentId: type: string status: type: string submittedAt: type: string transactionNo: type: string updatedAt: type: string type: object PaymentResultView: properties: amount: type: string failureReason: type: string publicId: type: string receiptFileIds: items: type: string type: array recordedAt: format: date-time type: string recordedByName: type: string recordedFromStatus: type: string remark: type: string resultAt: format: date type: string resultNo: type: string resultType: type: string returnOpinion: type: string returnedAt: format: date-time type: string returnedByName: type: string status: type: string verificationOpinion: type: string verifiedAt: format: date-time type: string verifiedByName: type: string version: format: int64 type: integer type: object PaymentUpdateRequest: properties: attachmentExceptions: items: "$ref": "#/components/schemas/PaymentAttachmentExceptionInput" maxItems: 20 minItems: 0 type: array attachmentFileIds: items: maxLength: 26 minLength: 0 type: string maxItems: 20 minItems: 0 type: array attachments: items: "$ref": "#/components/schemas/PaymentAttachmentInput" maxItems: 20 minItems: 0 type: array bankAccountVersionId: maxLength: 26 minLength: 0 type: string companyId: maxLength: 26 minLength: 0 type: string contractId: maxLength: 26 minLength: 0 type: string currency: minLength: 1 pattern: "[A-Z]{3}" type: string payableId: maxLength: 26 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string purpose: maxLength: 500 minLength: 0 type: string requestedAmount: minimum: 0.01 type: number requestedDate: format: date type: string sourceDocumentId: maxLength: 26 minLength: 0 type: string supplierId: maxLength: 26 minLength: 0 type: string version: format: int64 type: integer required: - bankAccountVersionId - companyId - contractId - currency - projectId - purpose - requestedAmount - requestedDate - supplierId - version type: object PaymentView: properties: allowedActions: items: type: string type: array approvedAmount: type: string approvedByName: type: string bankAccount: "$ref": "#/components/schemas/BankAccountReferenceView" businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" contract: "$ref": "#/components/schemas/ReferenceView" createdAt: format: date-time type: string currency: type: string frozenAmount: type: string originalPaymentId: type: string paidAmount: type: string payable: "$ref": "#/components/schemas/ReferenceView" project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string purpose: type: string repaymentSequence: format: int32 type: integer requestedAmount: type: string requestedDate: format: date type: string resultRecordedByName: type: string resultVerifiedByName: type: string sourceDocumentId: type: string status: type: string submittedByName: type: string supplier: "$ref": "#/components/schemas/ReferenceView" updatedAt: format: date-time type: string version: format: int64 type: integer type: object ProjectCreateRequest: properties: businessNo: maxLength: 64 minLength: 0 type: string companyId: minLength: 1 pattern: "[0-9A-HJKMNP-TV-Z]{26}" type: string currency: minLength: 1 pattern: "[A-Za-z]{3}" type: string customerId: pattern: "[0-9A-HJKMNP-TV-Z]{26}" type: string description: maxLength: 1000 minLength: 0 type: string endDate: format: date type: string name: maxLength: 200 minLength: 0 type: string ownerId: minLength: 1 pattern: "[0-9A-HJKMNP-TV-Z]{26}" type: string startDate: format: date type: string required: - businessNo - companyId - currency - name - ownerId type: object ProjectDetailView: properties: allowedActions: items: type: string type: array uniqueItems: true archiveStatus: type: string businessNo: type: string company: "$ref": "#/components/schemas/ProjectReferenceView" createdAt: format: date-time type: string currency: type: string customer: "$ref": "#/components/schemas/ProjectReferenceView" description: type: string endDate: format: date type: string financeStatus: type: string name: type: string overview: "$ref": "#/components/schemas/ProjectOverviewView" owner: "$ref": "#/components/schemas/ProjectReferenceView" publicId: type: string riskFlags: items: "$ref": "#/components/schemas/ProjectRiskFlagView" type: array stage: type: string startDate: format: date type: string status: type: string timeline: items: "$ref": "#/components/schemas/ProjectTimelineView" type: array updatedAt: format: date-time type: string version: format: int64 type: integer type: object ProjectExportRequest: properties: archiveStatus: maxLength: 32 minLength: 0 type: string columns: items: type: string maxItems: 20 minItems: 0 type: array companyId: maxLength: 26 minLength: 0 type: string customerId: maxLength: 26 minLength: 0 type: string endDateFrom: format: date type: string endDateTo: format: date type: string financeStatus: maxLength: 32 minLength: 0 type: string keyword: maxLength: 100 minLength: 0 type: string ownerId: maxLength: 26 minLength: 0 type: string sort: maxLength: 40 minLength: 0 type: string stage: maxLength: 32 minLength: 0 type: string startDateFrom: format: date type: string startDateTo: format: date type: string status: maxLength: 32 minLength: 0 type: string type: object ProjectExportView: properties: columns: items: type: string type: array content: type: string exportId: type: string fileName: type: string filterHash: type: string rowCount: format: int32 type: integer sha256: type: string type: object ProjectImportIssueView: properties: fieldCode: type: string message: type: string rowNo: format: int32 type: integer type: object ProjectImportRequest: properties: fileSha256: minLength: 1 pattern: "[0-9a-fA-F]{64}" type: string rows: items: "$ref": "#/components/schemas/ProjectImportRowRequest" maxItems: 10000 minItems: 0 type: array sourceFileId: maxLength: 26 minLength: 0 type: string required: - fileSha256 - sourceFileId type: object ProjectImportRowRequest: properties: businessNo: maxLength: 64 minLength: 0 type: string companyId: maxLength: 26 minLength: 0 type: string currency: minLength: 1 pattern: "[A-Za-z]{3}" type: string customerId: maxLength: 26 minLength: 0 type: string description: maxLength: 1000 minLength: 0 type: string endDate: format: date type: string name: maxLength: 200 minLength: 0 type: string ownerId: maxLength: 26 minLength: 0 type: string rowNo: format: int32 type: integer startDate: format: date type: string required: - businessNo - companyId - currency - name - ownerId - rowNo type: object ProjectImportSummaryView: properties: batchNo: type: string createdAt: format: date-time type: string errorRows: format: int32 type: integer fileSha256: type: string issues: items: "$ref": "#/components/schemas/ProjectImportIssueView" type: array publicId: type: string sourceFileId: type: string status: type: string totalRows: format: int32 type: integer updatedAt: format: date-time type: string validRows: format: int32 type: integer version: format: int64 type: integer type: object ProjectLedgerRow: allOf: - "$ref": "#/components/schemas/ReportRow" - properties: archiveStatus: type: string businessNo: type: string companyName: type: string completedVoucherCount: format: int64 type: integer completeness: type: string contractAmount: type: string costAmount: type: string fileCount: format: int64 type: integer financeStatus: type: string paymentAmount: type: string pendingAccountingCount: format: int64 type: integer projectName: type: string receiptAmount: type: string rowId: type: string status: type: string type: object ProjectLedgerSourceView: allOf: - "$ref": "#/components/schemas/ReportSourceView" - properties: archiveStatus: type: string businessDate: type: string businessNo: type: string companyName: type: string companyPublicId: type: string completedVoucherCount: format: int64 type: integer completeness: type: string contractAmount: type: string costAmount: type: string counterpartyPublicId: type: string currency: type: string fileCount: format: int64 type: integer financeStatus: type: string latestPackageStatus: type: string metricAmount: type: string paymentAmount: type: string pendingAccountingCount: format: int64 type: integer projectName: type: string projectPublicId: type: string receiptAmount: type: string rowId: type: string stage: type: string status: type: string updatedAt: type: string type: object ProjectListItemView: properties: allowedActions: items: type: string type: array uniqueItems: true archiveStatus: type: string businessNo: type: string company: "$ref": "#/components/schemas/ProjectReferenceView" contractAmount: type: string currency: type: string customer: "$ref": "#/components/schemas/ProjectReferenceView" documentCompleteness: format: int32 type: integer endDate: format: date type: string financeStatus: type: string name: type: string owner: "$ref": "#/components/schemas/ProjectReferenceView" paidAmount: type: string pendingTaskCount: format: int32 type: integer publicId: type: string receivedAmount: type: string stage: type: string startDate: format: date type: string status: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object ProjectOverviewView: properties: accountingCount: format: int32 type: integer activeRiskCount: format: int32 type: integer availableBalance: type: string contractAmount: type: string contractCount: format: int32 type: integer documentCompleteness: format: int32 type: integer fileCount: format: int32 type: integer invoiceCount: format: int32 type: integer paidAmount: type: string paymentCount: format: int32 type: integer pendingTaskCount: format: int32 type: integer peopleCount: format: int32 type: integer progressCount: format: int32 type: integer receiptCount: format: int32 type: integer receivedAmount: type: string sourceFormCount: format: int32 type: integer voucherCount: format: int32 type: integer type: object ProjectReferenceOptionsView: properties: companies: items: "$ref": "#/components/schemas/ProjectReferenceView" type: array customers: items: "$ref": "#/components/schemas/ProjectReferenceView" type: array owners: items: "$ref": "#/components/schemas/ProjectReferenceView" type: array type: object ProjectReferenceView: properties: name: type: string publicId: type: string type: object ProjectRiskFlagCreateRequest: properties: blocking: type: boolean effectiveFrom: format: date-time type: string effectiveUntil: format: date-time type: string reason: maxLength: 1000 minLength: 0 type: string riskType: maxLength: 32 minLength: 0 type: string required: - blocking - reason - riskType type: object ProjectRiskFlagResolveRequest: properties: reason: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - reason - version type: object ProjectRiskFlagView: properties: allowedActions: items: type: string type: array uniqueItems: true blocking: type: boolean createdAt: format: date-time type: string createdByName: type: string effectiveFrom: format: date-time type: string effectiveUntil: format: date-time type: string publicId: type: string reason: type: string resolvedAt: format: date-time type: string resolvedByName: type: string resolvedReason: type: string riskType: type: string status: type: string version: format: int64 type: integer type: object ProjectTimelineView: properties: actionCode: type: string activeRole: type: string occurredAt: format: date-time type: string publicId: type: string reason: type: string resultCode: type: string username: type: string type: object ProjectUpdateRequest: properties: customerId: pattern: "[0-9A-HJKMNP-TV-Z]{26}" type: string description: maxLength: 1000 minLength: 0 type: string endDate: format: date type: string name: maxLength: 200 minLength: 0 type: string ownerId: minLength: 1 pattern: "[0-9A-HJKMNP-TV-Z]{26}" type: string startDate: format: date type: string version: format: int64 type: integer required: - name - ownerId - version type: object ReasonCommandRequest: properties: opinion: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - opinion - version type: object ReceiptAllocationRequest: properties: amount: minimum: 0.01 type: number note: maxLength: 500 minLength: 0 type: string receivableId: maxLength: 26 minLength: 0 type: string version: format: int64 type: integer required: - amount - receivableId - version type: object ReceiptAllocationView: properties: amount: type: string contract: "$ref": "#/components/schemas/ReferenceView" createdAt: format: date-time type: string createdByName: type: string note: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string receivable: "$ref": "#/components/schemas/ReferenceView" receivableAmount: type: string receivableOutstandingAmount: type: string sequenceNo: format: int32 type: integer type: object ReceiptCreateRequest: properties: amount: minimum: 0.01 type: number companyId: maxLength: 26 minLength: 0 type: string currency: minLength: 1 pattern: "[A-Z]{3}" type: string customerId: maxLength: 26 minLength: 0 type: string payerName: maxLength: 200 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string receiptDate: format: date type: string referenceNo: maxLength: 100 minLength: 0 type: string required: - amount - companyId - currency - payerName - receiptDate type: object ReceiptDetailView: properties: allocations: items: "$ref": "#/components/schemas/ReceiptAllocationView" type: array receipt: "$ref": "#/components/schemas/ReceiptView" type: object ReceiptInvoiceRow: allOf: - "$ref": "#/components/schemas/ReportRow" - properties: allocatedAmount: type: string amount: type: string businessDate: type: string businessNo: type: string cumulativeInvoiceAmount: type: string cumulativeReceiptAmount: type: string invoiceNo: type: string invoiceType: type: string outstandingAmount: type: string projectName: type: string recordType: type: string rowId: type: string status: type: string type: object ReceiptInvoiceSourceView: allOf: - "$ref": "#/components/schemas/ReportSourceView" - properties: allocatedAmount: type: string amount: type: string businessDate: type: string businessNo: type: string companyName: type: string companyPublicId: type: string counterpartyPublicId: type: string cumulativeInvoiceAmount: type: string cumulativeReceiptAmount: type: string currency: type: string invoiceNo: type: string invoiceType: type: string metricAmount: type: string outstandingAmount: type: string projectName: type: string projectPublicId: type: string recordType: type: string rowId: type: string sourceDocumentId: type: string status: type: string updatedAt: type: string type: object ReceiptUpdateRequest: properties: amount: minimum: 0.01 type: number companyId: maxLength: 26 minLength: 0 type: string currency: minLength: 1 pattern: "[A-Z]{3}" type: string customerId: maxLength: 26 minLength: 0 type: string payerName: maxLength: 200 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string receiptDate: format: date type: string referenceNo: maxLength: 100 minLength: 0 type: string version: format: int64 type: integer required: - amount - companyId - currency - payerName - receiptDate - version type: object ReceiptView: properties: allocatedAmount: type: string allowedActions: items: type: string type: array amount: type: string businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" confirmedAt: format: date-time type: string confirmedByName: type: string createdAt: format: date-time type: string currency: type: string customer: "$ref": "#/components/schemas/ReferenceView" payerName: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string receiptDate: format: date type: string referenceNo: type: string status: type: string unallocatedAmount: type: string updatedAt: format: date-time type: string version: format: int64 type: integer voidReason: type: string type: object ReceivableOptionView: properties: amount: type: string businessNo: type: string counterparty: "$ref": "#/components/schemas/ReferenceView" currency: type: string outstandingAmount: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string type: object ReceivableView: properties: amount: type: string businessDate: format: date type: string businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" contract: "$ref": "#/components/schemas/ReferenceView" counterparty: "$ref": "#/components/schemas/ReferenceView" createdAt: format: date-time type: string currency: type: string outstandingAmount: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string settledAmount: type: string sourceInvoiceId: type: string status: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object RecentLoginView: properties: deviceSummary: type: string maskedIp: type: string occurredAt: format: date-time type: string type: object RedLetterRequest: properties: invoiceNo: maxLength: 100 minLength: 0 type: string issuedDate: format: date type: string reason: maxLength: 1000 minLength: 0 type: string resultFileId: maxLength: 26 minLength: 0 type: string version: format: int64 type: integer required: - invoiceNo - issuedDate - reason - version type: object ReferenceOptionsView: properties: companies: items: "$ref": "#/components/schemas/ReferenceView" type: array contracts: items: "$ref": "#/components/schemas/ReferenceView" type: array counterparties: items: "$ref": "#/components/schemas/ReferenceView" type: array projects: items: "$ref": "#/components/schemas/ReferenceView" type: array receivables: items: "$ref": "#/components/schemas/ReceivableOptionView" type: array type: object ReferenceView: properties: name: type: string publicId: type: string type: object RefundResultRequest: properties: amount: minimum: 0.01 type: number reason: maxLength: 1000 minLength: 0 type: string receiptFileIds: items: maxLength: 26 minLength: 0 type: string maxItems: 20 minItems: 0 type: array remark: maxLength: 1000 minLength: 0 type: string resultAt: format: date type: string version: format: int64 type: integer required: - amount - reason - receiptFileIds - resultAt - version type: object ReopenResultRequest: properties: reason: maxLength: 1000 minLength: 2 pattern: "(?s).*\\S.*\\S.*" type: string version: format: int64 type: integer required: - reason - version type: object RepaymentRequest: properties: purpose: maxLength: 500 minLength: 0 type: string requestedAmount: minimum: 0.01 type: number requestedDate: format: date type: string version: format: int64 type: integer required: - purpose - requestedAmount - requestedDate - version type: object ReportApprovalEventView: properties: actedAt: type: string action: type: string actorName: type: string nodeCode: type: string opinion: type: string publicId: type: string sourceDocumentId: type: string sourceVersionId: type: string type: object ReportAttachmentView: properties: displayName: type: string documentType: type: string fileId: type: string ownerId: type: string ownerType: type: string scanStatus: type: string sourceDocumentId: type: string versionNo: format: int32 type: integer type: object ReportDrilldownView: properties: approvals: items: "$ref": "#/components/schemas/ReportApprovalEventView" type: array attachments: items: "$ref": "#/components/schemas/ReportAttachmentView" type: array definitionVersion: type: string filterHash: type: string groups: items: "$ref": "#/components/schemas/ReportMetricGroupView" type: array relatedRecords: items: "$ref": "#/components/schemas/ReportRelatedRecordView" type: array reportCode: type: string rowId: type: string source: oneOf: - "$ref": "#/components/schemas/ArchiveCompletenessSourceView" - "$ref": "#/components/schemas/ContractExecutionSourceView" - "$ref": "#/components/schemas/PaymentProgressSourceView" - "$ref": "#/components/schemas/ProjectLedgerSourceView" - "$ref": "#/components/schemas/ReceiptInvoiceSourceView" - "$ref": "#/components/schemas/WorkflowDurationSourceView" sourceForms: items: "$ref": "#/components/schemas/ReportSourceFormView" type: array type: object ReportExportConfirmRequest: properties: exportId: minLength: 1 pattern: "[0-9A-HJKMNP-TV-Z]{26}" type: string maskingConfirmed: type: boolean required: - exportId - maskingConfirmed type: object ReportExportPrepareRequest: properties: columns: items: type: string type: array companyId: maxLength: 26 minLength: 0 type: string counterpartyId: maxLength: 26 minLength: 0 type: string dateFrom: format: date type: string dateTo: format: date type: string expectedDefinitionVersion: maxLength: 64 minLength: 0 type: string expectedFilterHash: minLength: 1 pattern: "[a-fA-F0-9]{64}" type: string keyword: maxLength: 100 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string sort: maxLength: 64 minLength: 0 type: string status: maxLength: 32 minLength: 0 type: string required: - expectedDefinitionVersion - expectedFilterHash - sort type: object ReportExportPreviewView: properties: columns: items: type: string type: array definitionVersion: type: string estimatedRows: format: int32 type: integer expiresAt: type: string exportId: type: string filterHash: type: string maskingNotice: type: string reportCode: type: string sort: type: string status: type: string type: object ReportExportView: properties: content: type: string definitionVersion: type: string estimatedRows: format: int32 type: integer exportId: type: string fileName: type: string filterHash: type: string reportCode: type: string rowCount: format: int32 type: integer sha256: type: string status: type: string type: object ReportMetricGroupView: properties: code: type: string label: type: string value: type: string type: object ReportRelatedRecordView: properties: amount: type: string businessDate: type: string businessNo: type: string objectType: type: string publicId: type: string relationType: type: string sourceDocumentId: type: string status: type: string type: object ReportRow: {} ReportSourceFormView: properties: businessNo: type: string exactVersion: type: boolean formType: type: string ownerPublicId: type: string ownerType: type: string publicId: type: string relationType: type: string sourceNo: type: string sourceSystem: type: string sourceVersionId: type: string status: type: string versionNo: format: int32 type: integer type: object ReportSourceView: {} ResourceCommandRequest: properties: reason: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - version type: object ResourceCreateRequest: properties: amountLimit: minimum: 0.0 type: number code: maxLength: 64 minLength: 0 type: string companyId: maxLength: 26 minLength: 0 type: string departmentName: maxLength: 128 minLength: 0 type: string description: maxLength: 255 minLength: 0 type: string displayName: maxLength: 128 minLength: 0 type: string formType: maxLength: 32 minLength: 0 type: string name: maxLength: 128 minLength: 0 type: string parameterGroup: maxLength: 80 minLength: 0 type: string password: maxLength: 64 minLength: 0 type: string permissionCode: maxLength: 100 minLength: 0 type: string permissionCodes: items: maxLength: 100 minLength: 0 type: string type: array projectId: maxLength: 26 minLength: 0 type: string roleCode: maxLength: 40 minLength: 0 type: string roleCodes: items: maxLength: 40 minLength: 0 type: string type: array schemaVersion: format: int32 type: integer scopeType: maxLength: 16 minLength: 0 type: string templateVersion: format: int32 type: integer userId: maxLength: 26 minLength: 0 type: string username: maxLength: 64 minLength: 0 type: string valueJson: maxLength: 10000 minLength: 0 type: string versionNo: format: int32 type: integer type: object ResourceListView: properties: amountLimit: type: string code: type: string companyPublicId: type: string createdAt: format: date-time type: string departmentName: type: string description: type: string displayName: type: string effectiveAt: format: date-time type: string enabled: type: boolean formType: type: string memberCount: format: int64 type: integer mustChangePassword: type: boolean name: type: string parameterGroup: type: string permissionCode: type: string projectPublicId: type: string publicId: type: string publishedAt: format: date-time type: string resource: type: string roleCode: type: string roleCodes: items: type: string type: array schemaVersion: format: int32 type: integer scopeType: type: string sortOrder: format: int32 type: integer status: type: string templateVersion: format: int32 type: integer updatedAt: format: date-time type: string userPublicId: type: string username: type: string version: format: int64 type: integer versionNo: format: int32 type: integer type: object ResourceUpdateRequest: properties: amountLimit: minimum: 0.0 type: number companyId: maxLength: 26 minLength: 0 type: string departmentName: maxLength: 128 minLength: 0 type: string description: maxLength: 255 minLength: 0 type: string displayName: maxLength: 128 minLength: 0 type: string enabled: type: boolean name: maxLength: 128 minLength: 0 type: string permissionCodes: items: maxLength: 100 minLength: 0 type: string type: array projectId: maxLength: 26 minLength: 0 type: string roleCodes: items: maxLength: 40 minLength: 0 type: string type: array scopeType: maxLength: 16 minLength: 0 type: string valueJson: maxLength: 10000 minLength: 0 type: string version: format: int64 type: integer required: - version type: object ResourceView: properties: allowedActions: items: type: string type: array businessCode: type: string publicId: type: string resource: type: string status: type: string values: additionalProperties: {} type: object version: format: int64 type: integer type: object ResultEvidenceFileView: properties: mediaType: type: string originalName: type: string publicId: type: string scanStatus: type: string sha256: type: string sizeBytes: format: int64 type: integer type: object ResultRequest: properties: evidenceFileIds: items: maxLength: 26 minLength: 0 type: string maxItems: 20 minItems: 0 type: array externalVoucherNo: maxLength: 100 minLength: 0 type: string remark: maxLength: 1000 minLength: 0 type: string resultAt: format: date type: string version: format: int64 type: integer required: - evidenceFileIds - externalVoucherNo - resultAt - version type: object ReturnRequest: properties: opinion: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - opinion - version type: object ReturnResultRequest: properties: opinion: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - opinion - version type: object ReverseResultRequest: properties: reason: maxLength: 1000 minLength: 2 pattern: "(?s).*\\S.*\\S.*" type: string version: format: int64 type: integer required: - reason - version type: object ReviewRequest: properties: decision: minLength: 1 type: string opinion: maxLength: 1000 minLength: 2 type: string version: format: int64 type: integer required: - decision - opinion - version type: object RoleView: properties: code: type: string description: type: string name: type: string workbenchRoute: type: string type: object SelectRoleRequest: properties: roleCode: minLength: 1 type: string required: - roleCode type: object SessionSummaryView: properties: createdAt: format: date-time type: string current: type: boolean deviceSummary: type: string expiresAt: format: date-time type: string lastAccessedAt: format: date-time type: string maskedIp: type: string sessionId: type: string type: object SessionView: properties: absoluteSessionExpiresAt: format: date-time type: string activeRole: type: string authenticated: type: boolean permissionVersion: type: string permissions: items: type: string type: array uniqueItems: true roles: items: "$ref": "#/components/schemas/RoleView" type: array sessionExpiresAt: format: date-time type: string user: "$ref": "#/components/schemas/UserView" type: object SourceFormCreateRequest: properties: applicantName: maxLength: 100 minLength: 0 type: string businessDate: format: date type: string companyId: maxLength: 26 minLength: 0 type: string formType: minLength: 1 pattern: OA-(0[1-9]|1[0-4]) type: string projectId: maxLength: 26 minLength: 0 type: string sourceNo: maxLength: 100 minLength: 0 type: string sourceSystem: maxLength: 32 minLength: 0 type: string sourceVersion: maxLength: 32 minLength: 0 type: string templateVersion: format: int32 type: integer values: "$ref": "#/components/schemas/JsonNode" required: - applicantName - businessDate - companyId - formType - sourceNo - sourceSystem - sourceVersion - values type: object SourceFormDetailView: properties: approvals: items: "$ref": "#/components/schemas/ApprovalView" type: array documentVersion: format: int32 type: integer fields: items: "$ref": "#/components/schemas/TemplateFieldView" type: array snapshotSha256: type: string summary: "$ref": "#/components/schemas/SourceFormSummaryView" validation: "$ref": "#/components/schemas/ValidationView" values: "$ref": "#/components/schemas/JsonNode" type: object SourceFormSummaryView: properties: allowedActions: items: type: string type: array applicantName: type: string businessDate: format: date type: string businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" createdAt: format: date-time type: string createdByName: type: string currentNodeCode: type: string currentNodeName: type: string formName: type: string formType: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string sourceNo: type: string sourceSystem: type: string sourceVersion: type: string status: type: string templateVersion: format: int32 type: integer updatedAt: format: date-time type: string version: format: int64 type: integer type: object SourceFormUpdateRequest: properties: applicantName: maxLength: 100 minLength: 0 type: string businessDate: format: date type: string companyId: maxLength: 26 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string sourceNo: maxLength: 100 minLength: 0 type: string sourceVersion: maxLength: 32 minLength: 0 type: string values: "$ref": "#/components/schemas/JsonNode" version: format: int64 type: integer required: - applicantName - businessDate - companyId - sourceNo - sourceVersion - values - version type: object SourceImportIssueView: properties: fieldCode: type: string message: type: string rowNo: format: int32 type: integer type: object SourceImportRequest: properties: fileSha256: minLength: 1 pattern: "[0-9a-fA-F]{64}" type: string formType: minLength: 1 pattern: OA-(0[1-9]|1[0-4]) type: string rows: items: "$ref": "#/components/schemas/SourceImportRowRequest" maxItems: 500 minItems: 1 type: array sourceFileId: maxLength: 26 minLength: 0 type: string sourceSystem: minLength: 1 pattern: EXCEL_IMPORT|OA_EXPORT type: string templateVersion: format: int32 type: integer required: - fileSha256 - formType - rows - sourceFileId - sourceSystem - templateVersion type: object SourceImportRowRequest: properties: applicantName: maxLength: 100 minLength: 0 type: string businessDate: format: date type: string companyId: maxLength: 26 minLength: 0 type: string projectId: maxLength: 26 minLength: 0 type: string rowNo: format: int32 type: integer sourceNo: maxLength: 100 minLength: 0 type: string sourceVersion: maxLength: 32 minLength: 0 type: string values: "$ref": "#/components/schemas/JsonNode" required: - applicantName - businessDate - companyId - rowNo - sourceNo - sourceVersion - values type: object SourceImportSummaryView: properties: batchNo: type: string createdAt: format: date-time type: string errorRows: format: int32 type: integer fileSha256: type: string formType: type: string issues: items: "$ref": "#/components/schemas/SourceImportIssueView" type: array publicId: type: string sourceFileId: type: string sourceSystem: type: string status: type: string totalRows: format: int32 type: integer updatedAt: format: date-time type: string validRows: format: int32 type: integer version: format: int64 type: integer type: object SystemUpdateView: properties: allowedActions: items: type: string type: array checkedAt: format: date-time type: string currentVersion: type: string enabled: type: boolean latestVersion: type: string message: type: string publishedAt: format: date-time type: string releaseNotes: type: string state: type: string statusUpdatedAt: format: date-time type: string updateAvailable: type: boolean type: object TemplateFieldView: properties: code: type: string dataType: type: string helpText: type: string label: type: string maskingRule: type: string maxLength: format: int32 type: integer numericPrecision: format: int32 type: integer numericScale: format: int32 type: integer options: "$ref": "#/components/schemas/JsonNode" repeatable: type: boolean required: type: boolean sectionCode: type: string sectionName: type: string sensitivity: type: string sortOrder: format: int32 type: integer unit: type: string type: object TemplateView: properties: canCreate: type: boolean fields: items: "$ref": "#/components/schemas/TemplateFieldView" type: array formType: type: string groupCode: type: string groupName: type: string initiatorRoles: items: type: string type: array myDraftCount: format: int64 type: integer myPendingCount: format: int64 type: integer name: type: string publicId: type: string publishedAt: format: date-time type: string purpose: type: string status: type: string templateVersion: format: int32 type: integer type: object UserView: properties: authorizationScopes: items: "$ref": "#/components/schemas/AuthorizationScopeView" type: array departmentName: type: string displayName: type: string mustChangePassword: type: boolean publicId: type: string recentLogins: items: "$ref": "#/components/schemas/RecentLoginView" type: array username: type: string type: object ValidationIssueView: properties: fieldCode: type: string level: type: string message: type: string rowNo: format: int32 type: integer sectionCode: type: string type: object ValidationView: properties: canSubmit: type: boolean documentId: type: string errors: items: "$ref": "#/components/schemas/ValidationIssueView" type: array valid: type: boolean validatedAt: format: date-time type: string version: format: int64 type: integer warnings: items: "$ref": "#/components/schemas/ValidationIssueView" type: array type: object VerifyResultRequest: properties: opinion: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - opinion - version type: object VersionCommandRequest: properties: version: format: int64 type: integer required: - version type: object VersionReasonCommandRequest: properties: reason: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - reason - version type: object VoidRequest: properties: reason: maxLength: 1000 minLength: 0 type: string version: format: int64 type: integer required: - reason - version type: object VoucherDetailView: properties: entries: items: "$ref": "#/components/schemas/VoucherEntryView" type: array event: "$ref": "#/components/schemas/AccountingEventView" evidenceFiles: items: "$ref": "#/components/schemas/ResultEvidenceFileView" type: array resultActions: items: "$ref": "#/components/schemas/VoucherResultActionView" type: array voucher: "$ref": "#/components/schemas/VoucherView" type: object VoucherEntryRequest: properties: accountId: maxLength: 26 minLength: 0 type: string amount: minimum: 0.01 type: number auxiliaryJson: maxLength: 4000 minLength: 0 type: string direction: minLength: 1 pattern: DEBIT|CREDIT type: string lineNo: format: int32 type: integer summary: maxLength: 500 minLength: 0 type: string required: - accountId - amount - direction - lineNo - summary type: object VoucherEntryView: properties: account: "$ref": "#/components/schemas/ReferenceView" amount: type: string auxiliaryJson: type: string direction: type: string lineNo: format: int32 type: integer publicId: type: string summary: type: string type: object VoucherExportView: properties: batchNo: type: string fileId: type: string rowCount: format: int32 type: integer sha256: type: string voucher: "$ref": "#/components/schemas/VoucherView" type: object VoucherResultActionView: properties: actionType: type: string evidenceFiles: items: "$ref": "#/components/schemas/ResultEvidenceFileView" type: array externalVoucherNo: type: string operatedAt: format: date-time type: string operatedByName: type: string publicId: type: string reason: type: string resultAt: format: date type: string resultCycleNo: format: int32 type: integer resultRecordRemark: type: string resultRecordedAt: format: date-time type: string resultRecordedByName: type: string resultVerifiedAt: format: date-time type: string resultVerifiedByName: type: string resultVerifyOpinion: type: string sequenceNo: format: int32 type: integer versionAfter: format: int64 type: integer versionBefore: format: int64 type: integer type: object VoucherUpdateRequest: properties: businessDate: format: date type: string changeReason: maxLength: 1000 minLength: 0 type: string entries: items: "$ref": "#/components/schemas/VoucherEntryRequest" maxItems: 100 minItems: 0 type: array period: minLength: 1 pattern: "\\d{4}-\\d{2}" type: string summary: maxLength: 500 minLength: 0 type: string version: format: int64 type: integer required: - businessDate - changeReason - entries - period - summary - version type: object VoucherView: properties: allowedActions: items: type: string type: array balanceStatus: type: string businessDate: format: date type: string businessNo: type: string company: "$ref": "#/components/schemas/ReferenceView" createdAt: format: date-time type: string creditTotal: type: string debitTotal: type: string eventBusinessNo: type: string eventPublicId: type: string evidenceFileIds: items: type: string type: array exportBatchNo: type: string exportFileId: type: string exportSha256: type: string exportedAt: format: date-time type: string externalVoucherNo: type: string period: type: string project: "$ref": "#/components/schemas/ReferenceView" publicId: type: string resultAt: format: date type: string resultCycleNo: format: int32 type: integer resultRecordRemark: type: string resultRecordedAt: format: date-time type: string resultRecordedByName: type: string resultVerifiedAt: format: date-time type: string resultVerifiedByName: type: string resultVerifyOpinion: type: string reviewedByName: type: string ruleVersion: type: string status: type: string submittedByName: type: string summary: type: string updatedAt: format: date-time type: string version: format: int64 type: integer voidReason: type: string type: object WorkbenchActivityView: properties: actionCode: type: string objectPublicId: type: string objectType: type: string occurredAt: format: date-time type: string publicId: type: string resultCode: type: string targetRoute: type: string title: type: string type: object WorkbenchArchiveItemView: properties: completeness: type: string dueAt: format: date-time type: string kind: type: string missingCount: format: int64 type: integer publicId: type: string status: type: string subtitle: type: string targetRoute: type: string title: type: string updatedAt: format: date-time type: string type: object WorkbenchFundView: properties: approvedUnpaid: type: string availableAmount: type: string confirmedReceipt: type: string currency: type: string frozenAmount: type: string paidAmount: type: string projectName: type: string projectPublicId: type: string targetRoute: type: string type: object WorkbenchIssueView: properties: code: type: string count: format: int64 type: integer detail: type: string label: type: string severity: type: string targetRoute: type: string type: object WorkbenchMetricView: properties: code: type: string label: type: string targetRoute: type: string value: format: int64 type: integer type: object WorkbenchProjectView: properties: businessNo: type: string companyName: type: string contractAmount: type: string name: type: string publicId: type: string stage: type: string status: type: string targetRoute: type: string updatedAt: format: date-time type: string type: object WorkbenchTodoView: properties: arrivedAt: format: date-time type: string businessNo: type: string dueAt: format: date-time type: string formName: type: string formType: type: string nodeCode: type: string projectName: type: string projectPublicId: type: string publicId: type: string status: type: string targetRoute: type: string type: object WorkbenchView: properties: activities: items: "$ref": "#/components/schemas/WorkbenchActivityView" type: array archiveItems: items: "$ref": "#/components/schemas/WorkbenchArchiveItemView" type: array funds: items: "$ref": "#/components/schemas/WorkbenchFundView" type: array issues: items: "$ref": "#/components/schemas/WorkbenchIssueView" type: array metrics: items: "$ref": "#/components/schemas/WorkbenchMetricView" type: array projects: items: "$ref": "#/components/schemas/WorkbenchProjectView" type: array refreshedAt: format: date-time type: string roleCode: type: string title: type: string todos: items: "$ref": "#/components/schemas/WorkbenchTodoView" type: array type: object WorkflowActionRequest: properties: opinion: maxLength: 1000 minLength: 0 type: string returnPoints: items: maxLength: 100 minLength: 0 type: string type: array version: format: int64 type: integer required: - opinion - version type: object WorkflowDurationRow: allOf: - "$ref": "#/components/schemas/ReportRow" - properties: arrivedAt: type: string businessNo: type: string completedAt: type: string durationSeconds: format: int64 type: integer formType: type: string nodeCode: type: string pendingTaskCount: format: int64 type: integer projectName: type: string returnCount: format: int64 type: integer rowId: type: string status: type: string type: object WorkflowDurationSourceView: allOf: - "$ref": "#/components/schemas/ReportSourceView" - properties: arrivedAt: type: string businessDate: type: string businessNo: type: string companyName: type: string companyPublicId: type: string completedAt: type: string counterpartyPublicId: type: string currency: type: string durationSeconds: format: int64 type: integer formType: type: string metricAmount: type: string nodeCode: type: string pendingTaskCount: format: int64 type: integer projectName: type: string projectPublicId: type: string returnCount: format: int64 type: integer rowId: type: string sourceDocumentId: type: string sourceVersionId: type: string status: type: string updatedAt: type: string workflowInstanceId: type: string type: object WorkflowTaskDetailView: properties: form: "$ref": "#/components/schemas/SourceFormDetailView" task: "$ref": "#/components/schemas/WorkflowTaskSummaryView" timeline: items: "$ref": "#/components/schemas/ApprovalView" type: array type: object WorkflowTaskSummaryView: properties: allowedActions: items: type: string type: array arrivedAt: format: date-time type: string assigneeName: type: string dueAt: format: date-time type: string form: "$ref": "#/components/schemas/SourceFormSummaryView" instancePublicId: type: string keyAmount: type: string nodeCode: type: string nodeName: type: string publicId: type: string sequenceNo: format: int32 type: integer status: type: string updatedAt: format: date-time type: string version: format: int64 type: integer type: object info: title: Kaidi Finance API version: 1.0.0-preview.8 openapi: 3.1.0 paths: "/api/v1/accounting/accounts": get: operationId: listAccountingAccounts responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListAccountView" description: OK summary: 查询会计科目 tags: - accounting-controller "/api/v1/accounting/events": get: operationId: listAccountingEvents parameters: - in: query name: period required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: eventType required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: sort required: false schema: default: businessDate,asc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListAccountingEventView" description: OK summary: 查询财务事件 tags: - accounting-controller "/api/v1/accounting/events/{publicId}/generate-draft": post: operationId: generateVoucherDraft parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/GenerateDraftRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 生成凭证草稿 tags: - accounting-controller "/api/v1/accounting/vouchers": get: operationId: listVouchers parameters: - in: query name: tab required: false schema: type: string - in: query name: period required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: eventType required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: externalVoucherNo required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListVoucherView" description: OK summary: 查询凭证草稿 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}": get: operationId: getVoucher parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 查询凭证详情 tags: - accounting-controller patch: operationId: updateVoucher parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VoucherUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 修改凭证草稿 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/approve": post: operationId: approveVoucher parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 复核通过凭证 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/export": post: operationId: exportVoucher parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherExportView" description: OK summary: 导出凭证 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/export-file": get: operationId: downloadVoucherExport parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: format: binary type: string description: OK summary: 下载凭证导出文件 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/record-result": post: operationId: recordVoucherResult parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 登记人工记账结果 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/reopen-result": post: operationId: reopenVoucherResult parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReopenResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 重开已冲销人工记账结果 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/return": post: operationId: returnVoucher parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReturnRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 退回凭证 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/reverse-result": post: operationId: reverseVoucherResult parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReverseResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 冲销已复核人工记账结果 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/submit": post: operationId: submitVoucher parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 提交凭证复核 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/verify-result": post: operationId: verifyVoucherResult parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VerifyResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 复核人工记账结果 tags: - accounting-controller "/api/v1/accounting/vouchers/{publicId}/void": post: operationId: voidVoucher parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VoidRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoucherDetailView" description: OK summary: 作废凭证 tags: - accounting-controller "/api/v1/accounting/vouchers/{voucherPublicId}/result-files/{filePublicId}/content": get: operationId: downloadVoucherResultEvidence parameters: - in: path name: voucherPublicId required: true schema: type: string - in: path name: filePublicId required: true schema: type: string responses: '200': content: "*/*": schema: format: binary type: string description: OK summary: 下载凭证结果附件 tags: - accounting-controller "/api/v1/admin/system-update": get: operationId: getSystemUpdateStatus responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseSystemUpdateView" description: OK summary: 读取系统版本与更新状态 tags: - system-update-controller "/api/v1/admin/system-update/check": post: operationId: checkSystemUpdate responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseSystemUpdateView" description: OK summary: 检查最新签名发布版本 tags: - system-update-controller "/api/v1/admin/system-update/download": post: operationId: downloadSystemUpdate requestBody: content: application/json: schema: "$ref": "#/components/schemas/DownloadUpdateRequest" required: true responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseSystemUpdateView" description: OK summary: 下载并校验最新签名发布版本 tags: - system-update-controller "/api/v1/admin/system-update/install": post: operationId: installSystemUpdate requestBody: content: application/json: schema: "$ref": "#/components/schemas/InstallUpdateRequest" required: true responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseSystemUpdateView" description: OK summary: 排队安装最新签名发布版本 tags: - system-update-controller "/api/v1/admin/{resource}": get: operationId: listGovernanceResources parameters: - in: path name: resource required: true schema: enum: - users - roles - scopes - templates - parameters type: string - in: query name: keyword required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseListResourceListView" description: OK summary: 查询系统治理资源 tags: - governance-controller post: operationId: createGovernanceResource parameters: - in: path name: resource required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ResourceCreateRequest" required: true responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseResourceView" description: OK summary: 创建系统治理资源 tags: - governance-controller "/api/v1/admin/{resource}/{publicId}": get: operationId: getGovernanceResource parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseResourceView" description: OK summary: 读取系统治理资源详情 tags: - governance-controller patch: operationId: updateGovernanceResource parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ResourceUpdateRequest" required: true responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseResourceView" description: OK summary: 更新系统治理资源 tags: - governance-controller "/api/v1/admin/{resource}/{publicId}/{command}": post: operationId: commandGovernanceResource parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string - in: path name: command required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ResourceCommandRequest" required: true responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseResourceView" description: OK summary: 执行系统治理资源命令 tags: - governance-controller "/api/v1/archive/borrows": get: operationId: listBorrows parameters: - in: query name: status required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListBorrowView" description: OK summary: 查询档案借阅 tags: - archive-controller post: operationId: createBorrow parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BorrowCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBorrowView" description: OK summary: 申请档案借阅 tags: - archive-controller "/api/v1/archive/borrows/{publicId}/approve": post: operationId: approveBorrow parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BorrowCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBorrowView" description: OK summary: 批准档案借阅 tags: - archive-controller "/api/v1/archive/borrows/{publicId}/reject": post: operationId: rejectBorrow parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BorrowCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBorrowView" description: OK summary: 驳回档案借阅 tags: - archive-controller "/api/v1/archive/borrows/{publicId}/return": post: operationId: returnBorrow parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BorrowCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBorrowView" description: OK summary: 登记档案归还 tags: - archive-controller "/api/v1/archive/files": get: operationId: listArchiveFiles parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: contractId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: formType required: false schema: type: string - in: query name: fileName required: false schema: type: string - in: query name: uploadedBy required: false schema: type: string - in: query name: uploadedDateFrom required: false schema: format: date type: string - in: query name: uploadedDateTo required: false schema: format: date type: string - in: query name: originalType required: false schema: type: string - in: query name: archiveStatus required: false schema: type: string - in: query name: scanStatus required: false schema: type: string - in: query name: sort required: false schema: default: uploadedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListArchiveFileView" description: OK summary: 查询档案文件 tags: - archive-controller post: operationId: uploadArchiveFile parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: multipart/form-data: schema: properties: file: format: binary type: string metadata: "$ref": "#/components/schemas/FileLinkMetadata" required: - file - metadata type: object responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseArchiveFileView" description: OK summary: 上传档案文件 tags: - archive-controller "/api/v1/archive/files/{publicId}": get: operationId: getArchiveFile parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseArchiveFileDetailView" description: OK summary: 查询档案文件详情 tags: - archive-controller "/api/v1/archive/files/{publicId}/content": get: operationId: getArchiveFileContent parameters: - in: path name: publicId required: true schema: type: string - in: query name: preview required: false schema: default: false type: boolean responses: '200': content: "*/*": schema: format: binary type: string description: OK summary: 读取档案文件内容 tags: - archive-controller "/api/v1/archive/files/{publicId}/rescan": post: operationId: rescanArchiveFile parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseArchiveFileView" description: OK summary: 重新扫描业务范围内的隔离档案 tags: - archive-controller "/api/v1/archive/packages": get: operationId: listArchivePackages parameters: - in: query name: view required: false schema: type: string - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: completeness required: false schema: type: string - in: query name: frozen required: false schema: type: boolean - in: query name: keyword required: false schema: type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListPackageView" description: OK summary: 查询项目档案包 tags: - archive-controller post: operationId: createArchivePackage parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 生成档案包 tags: - archive-controller "/api/v1/archive/packages/{packageId}/items/{itemId}/not-applicable": post: operationId: markArchiveItemNotApplicable parameters: - in: path name: packageId required: true schema: type: string - in: path name: itemId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/NotApplicableRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 申请档案项不涉及 tags: - archive-controller "/api/v1/archive/packages/{packageId}/items/{itemId}/not-applicable/review": post: operationId: reviewArchiveItemNotApplicable parameters: - in: path name: packageId required: true schema: type: string - in: path name: itemId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/NotApplicableReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 复核档案项不涉及 tags: - archive-controller "/api/v1/archive/packages/{publicId}": get: operationId: getArchivePackage parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 查询档案包详情 tags: - archive-controller "/api/v1/archive/packages/{publicId}/archive": post: operationId: archivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 确认归档 tags: - archive-controller "/api/v1/archive/packages/{publicId}/check": post: operationId: checkArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 检查档案包完整性 tags: - archive-controller "/api/v1/archive/packages/{publicId}/freeze": post: operationId: freezeArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/FreezeRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 冻结档案包 tags: - archive-controller "/api/v1/archive/packages/{publicId}/return": post: operationId: returnArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 退回档案包 tags: - archive-controller "/api/v1/archive/packages/{publicId}/revise": post: operationId: reviseArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageRevisionRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 生成档案包补件版本 tags: - archive-controller "/api/v1/archive/packages/{publicId}/submit": post: operationId: submitArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 提交档案包审核 tags: - archive-controller "/api/v1/archive/packages/{publicId}/unfreeze": post: operationId: unfreezeArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 解冻档案包 tags: - archive-controller "/api/v1/archives/borrows": get: operationId: listBorrows parameters: - in: query name: status required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListBorrowView" description: OK summary: 查询档案借阅 tags: - archive-controller post: operationId: createBorrow parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BorrowCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBorrowView" description: OK summary: 申请档案借阅 tags: - archive-controller "/api/v1/archives/borrows/{publicId}/approve": post: operationId: approveBorrow parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BorrowCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBorrowView" description: OK summary: 批准档案借阅 tags: - archive-controller "/api/v1/archives/borrows/{publicId}/reject": post: operationId: rejectBorrow parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BorrowCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBorrowView" description: OK summary: 驳回档案借阅 tags: - archive-controller "/api/v1/archives/borrows/{publicId}/return": post: operationId: returnBorrow parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BorrowCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBorrowView" description: OK summary: 登记档案归还 tags: - archive-controller "/api/v1/archives/files": get: operationId: listArchiveFiles parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: contractId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: formType required: false schema: type: string - in: query name: fileName required: false schema: type: string - in: query name: uploadedBy required: false schema: type: string - in: query name: uploadedDateFrom required: false schema: format: date type: string - in: query name: uploadedDateTo required: false schema: format: date type: string - in: query name: originalType required: false schema: type: string - in: query name: archiveStatus required: false schema: type: string - in: query name: scanStatus required: false schema: type: string - in: query name: sort required: false schema: default: uploadedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListArchiveFileView" description: OK summary: 查询档案文件 tags: - archive-controller post: operationId: uploadArchiveFile parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: multipart/form-data: schema: properties: file: format: binary type: string metadata: "$ref": "#/components/schemas/FileLinkMetadata" required: - file - metadata type: object responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseArchiveFileView" description: OK summary: 上传档案文件 tags: - archive-controller "/api/v1/archives/files/{publicId}": get: operationId: getArchiveFile parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseArchiveFileDetailView" description: OK summary: 查询档案文件详情 tags: - archive-controller "/api/v1/archives/files/{publicId}/content": get: operationId: getArchiveFileContent parameters: - in: path name: publicId required: true schema: type: string - in: query name: preview required: false schema: default: false type: boolean responses: '200': content: "*/*": schema: format: binary type: string description: OK summary: 读取档案文件内容 tags: - archive-controller "/api/v1/archives/files/{publicId}/rescan": post: operationId: rescanArchiveFile parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseArchiveFileView" description: OK summary: 重新扫描业务范围内的隔离档案 tags: - archive-controller "/api/v1/archives/packages": get: operationId: listArchivePackages parameters: - in: query name: view required: false schema: type: string - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: completeness required: false schema: type: string - in: query name: frozen required: false schema: type: boolean - in: query name: keyword required: false schema: type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListPackageView" description: OK summary: 查询项目档案包 tags: - archive-controller post: operationId: createArchivePackage parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 生成档案包 tags: - archive-controller "/api/v1/archives/packages/{packageId}/items/{itemId}/not-applicable": post: operationId: markArchiveItemNotApplicable parameters: - in: path name: packageId required: true schema: type: string - in: path name: itemId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/NotApplicableRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 申请档案项不涉及 tags: - archive-controller "/api/v1/archives/packages/{packageId}/items/{itemId}/not-applicable/review": post: operationId: reviewArchiveItemNotApplicable parameters: - in: path name: packageId required: true schema: type: string - in: path name: itemId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/NotApplicableReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 复核档案项不涉及 tags: - archive-controller "/api/v1/archives/packages/{publicId}": get: operationId: getArchivePackage parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 查询档案包详情 tags: - archive-controller "/api/v1/archives/packages/{publicId}/archive": post: operationId: archivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 确认归档 tags: - archive-controller "/api/v1/archives/packages/{publicId}/check": post: operationId: checkArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 检查档案包完整性 tags: - archive-controller "/api/v1/archives/packages/{publicId}/freeze": post: operationId: freezeArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/FreezeRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 冻结档案包 tags: - archive-controller "/api/v1/archives/packages/{publicId}/return": post: operationId: returnArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 退回档案包 tags: - archive-controller "/api/v1/archives/packages/{publicId}/revise": post: operationId: reviseArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageRevisionRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 生成档案包补件版本 tags: - archive-controller "/api/v1/archives/packages/{publicId}/submit": post: operationId: submitArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 提交档案包审核 tags: - archive-controller "/api/v1/archives/packages/{publicId}/unfreeze": post: operationId: unfreezeArchivePackage parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PackageCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePackageView" description: OK summary: 解冻档案包 tags: - archive-controller "/api/v1/audit/exports": post: operationId: exportAuditLogs requestBody: content: application/json: schema: "$ref": "#/components/schemas/AuditExportRequest" responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseAuditExportView" description: OK '400': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 请求体格式无效 '401': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 登录会话缺失或失效 '403': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 缺少审计导出权限 '422': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 导出筛选参数无效 summary: 导出审计日志 tags: - audit-controller "/api/v1/audit/logs": get: operationId: listAuditLogs parameters: - in: query name: occurredFrom required: false schema: format: date-time type: string - in: query name: occurredTo required: false schema: format: date-time type: string - in: query name: actorId required: false schema: maxLength: 26 minLength: 0 type: string - in: query name: identityCode required: false schema: maxLength: 40 minLength: 0 type: string - in: query name: objectType required: false schema: maxLength: 80 minLength: 0 type: string - in: query name: objectId required: false schema: maxLength: 26 minLength: 0 type: string - in: query name: action required: false schema: maxLength: 100 minLength: 0 type: string - in: query name: requestId required: false schema: maxLength: 26 minLength: 0 type: string - in: query name: result required: false schema: enum: - SUCCESS - FAILED - DENIED - BLOCKED maxLength: 40 minLength: 0 type: string - in: query name: keyword required: false schema: maxLength: 100 minLength: 0 type: string - in: query name: sort required: false schema: enum: - occurredAt,asc - occurredAt,desc - eventSequence,asc - eventSequence,desc pattern: "(occurredAt|eventSequence),(asc|desc)" type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: enum: - 20 - 50 - 100 format: int32 type: integer responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseListAuditLogView" description: OK '400': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 查询参数不受支持 '401': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 登录会话缺失或失效 '403': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 缺少审计查看权限 '422': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 筛选或分页参数无效 summary: 查询审计日志 tags: - audit-controller "/api/v1/audit/logs/{publicId}": get: operationId: getAuditLog parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: application/json: schema: "$ref": "#/components/schemas/ApiResponseAuditLogView" description: OK '401': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 登录会话缺失或失效 '403': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 缺少权限或数据范围不匹配 '404': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 审计日志不存在 summary: 读取审计日志详情 tags: - audit-controller "/api/v1/auth/csrf": get: operationId: csrf responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCsrfView" description: OK tags: - auth-controller "/api/v1/auth/login": post: operationId: login requestBody: content: application/json: schema: "$ref": "#/components/schemas/LoginRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSessionView" description: OK tags: - auth-controller "/api/v1/auth/logout": post: operationId: logout responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoid" description: OK tags: - auth-controller "/api/v1/auth/password": patch: operationId: changePassword requestBody: content: application/json: schema: "$ref": "#/components/schemas/PasswordChangeRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSessionView" description: OK tags: - auth-controller "/api/v1/auth/profile": get: operationId: profile responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseUserView" description: OK tags: - auth-controller "/api/v1/auth/roles": get: operationId: roles responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListRoleView" description: OK tags: - auth-controller "/api/v1/auth/select-role": post: operationId: selectRole requestBody: content: application/json: schema: "$ref": "#/components/schemas/SelectRoleRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSessionView" description: OK tags: - auth-controller "/api/v1/auth/session": get: operationId: session responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSessionView" description: OK tags: - auth-controller "/api/v1/auth/sessions": delete: operationId: deleteAllSessions responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoid" description: OK tags: - auth-controller get: operationId: sessions responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListSessionSummaryView" description: OK tags: - auth-controller "/api/v1/auth/sessions/{sessionId}": delete: operationId: deleteSession parameters: - in: path name: sessionId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseVoid" description: OK tags: - auth-controller "/api/v1/contract-costs/changes/{changeId}/void": post: operationId: voidChange parameters: - in: path name: changeId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerDetailView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/contracts": get: operationId: list_1 parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: costCategoryId required: false schema: type: string - in: query name: businessDateFrom required: false schema: format: date type: string - in: query name: businessDateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerPageView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/contracts/export": get: operationId: export_3 parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: costCategoryId required: false schema: type: string - in: query name: businessDateFrom required: false schema: format: date type: string - in: query name: businessDateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string responses: '200': content: text/csv: schema: format: byte type: string description: OK tags: - contract-cost-controller "/api/v1/contract-costs/contracts/{contractId}/changes": post: operationId: createChange parameters: - in: path name: contractId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ContractChangeCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerDetailView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/contracts/{contractId}/payables": post: operationId: createPayable parameters: - in: path name: contractId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PayableCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerDetailView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/contracts/{contractId}/settlements": post: operationId: createSettlement parameters: - in: path name: contractId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ContractSettlementCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerDetailView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/contracts/{publicId}": get: operationId: detail_1 parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerDetailView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/payables/{payableId}/confirm": post: operationId: confirmPayable parameters: - in: path name: payableId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerDetailView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/payables/{payableId}/void": post: operationId: voidPayable parameters: - in: path name: payableId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerDetailView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/references": get: operationId: references_6 responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseFilterOptionsView" description: OK tags: - contract-cost-controller "/api/v1/contract-costs/settlements/{settlementId}/void": post: operationId: voidSettlement parameters: - in: path name: settlementId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerDetailView" description: OK tags: - contract-cost-controller "/api/v1/contracts": get: operationId: listFinanceContracts parameters: - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: enum: - DRAFT - REVIEWING - RETURNED - ACTIVE - SETTLED - DISABLED - VOID type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer - description: 可重复;格式 field,asc|desc in: query name: sort schema: items: pattern: "^(updatedAt|businessNo|name|status|contractAmount|settlementAmount),(asc|desc)$" type: string type: array responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListContractListView" description: OK summary: 查询合同运营台账 tags: - finance-operations-controller "/api/v1/costs": get: operationId: listFinanceCosts parameters: - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: enum: - PENDING - CONFIRMED - PART_PAID - PAID - VOID type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer - description: 可重复;格式 field,asc|desc in: query name: sort schema: items: pattern: "^(updatedAt|businessNo|businessDate|amount|status|projectName|counterpartyName),(asc|desc)$" type: string type: array responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListPayableListView" description: OK summary: 查询成本运营台账 tags: - finance-operations-controller "/api/v1/files": post: operationId: upload parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: multipart/form-data: schema: properties: file: format: binary type: string required: - file type: object responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseFileView" description: OK tags: - file-controller "/api/v1/files/{publicId}": get: operationId: metadata parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseFileView" description: OK tags: - file-controller "/api/v1/files/{publicId}/content": get: operationId: download parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: format: binary type: string description: OK tags: - file-controller "/api/v1/files/{publicId}/rescan": post: operationId: rescanOwnedFile parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseFileView" description: OK summary: 重新扫描本人上传的隔离文件 tags: - file-controller "/api/v1/funds/ledger": get: operationId: listFundLedger parameters: - in: query name: projectId required: true schema: type: string - in: query name: currency required: false schema: default: CNY type: string - in: query name: entryType required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer - in: query name: sortBy required: false schema: default: occurredAt type: string - in: query name: sortDirection required: false schema: default: desc type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseFundLedgerPageView" description: OK summary: 查询项目逐笔资金流水 tags: - fund-ledger-controller "/api/v1/invoices": get: operationId: invoices parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListInvoiceView" description: OK tags: - receivable-controller post: operationId: createInvoice parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/InvoiceCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseInvoiceView" description: OK tags: - receivable-controller "/api/v1/invoices/export": get: operationId: exportInvoices parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string responses: '200': content: text/csv: schema: format: byte type: string description: OK tags: - receivable-controller "/api/v1/invoices/{publicId}": get: operationId: invoice parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseInvoiceView" description: OK tags: - receivable-controller patch: operationId: updateInvoice parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/InvoiceUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseInvoiceView" description: OK tags: - receivable-controller "/api/v1/invoices/{publicId}/record-result": post: operationId: recordInvoiceResult parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/InvoiceResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseInvoiceView" description: OK tags: - receivable-controller "/api/v1/invoices/{publicId}/red-letter": post: operationId: redLetterInvoice parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/RedLetterRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseInvoiceView" description: OK tags: - receivable-controller "/api/v1/invoices/{publicId}/review": post: operationId: reviewInvoice parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/InvoiceReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseInvoiceView" description: OK tags: - receivable-controller "/api/v1/invoices/{publicId}/submit": post: operationId: submitInvoice parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseInvoiceView" description: OK tags: - receivable-controller "/api/v1/invoices/{publicId}/void": post: operationId: voidInvoice parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseInvoiceView" description: OK tags: - receivable-controller "/api/v1/masterdata/bank-accounts": get: operationId: listBankAccounts parameters: - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListBankAccountView" description: OK tags: - master-data-controller post: operationId: createBankAccount requestBody: content: application/json: schema: "$ref": "#/components/schemas/BankAccountCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBankAccountView" description: OK tags: - master-data-controller "/api/v1/masterdata/bank-accounts/{publicId}": get: operationId: getBankAccount parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBankAccountView" description: OK tags: - master-data-controller patch: operationId: updateBankAccount parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/BankAccountUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBankAccountView" description: OK tags: - master-data-controller "/api/v1/masterdata/bank-accounts/{publicId}/disable": post: operationId: disableBankAccount parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBankAccountView" description: OK tags: - master-data-controller "/api/v1/masterdata/bank-accounts/{publicId}/review": post: operationId: reviewBankAccount parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBankAccountView" description: OK tags: - master-data-controller "/api/v1/masterdata/bank-accounts/{publicId}/submit": post: operationId: submitBankAccount parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseBankAccountView" description: OK tags: - master-data-controller "/api/v1/masterdata/companies": get: operationId: listCompanies parameters: - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListCompanyView" description: OK tags: - master-data-controller post: operationId: createCompany requestBody: content: application/json: schema: "$ref": "#/components/schemas/CompanyCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCompanyView" description: OK tags: - master-data-controller "/api/v1/masterdata/companies/{publicId}": get: operationId: getCompany parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCompanyView" description: OK tags: - master-data-controller patch: operationId: updateCompany parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/CompanyUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCompanyView" description: OK tags: - master-data-controller "/api/v1/masterdata/companies/{publicId}/disable": post: operationId: disableCompany parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCompanyView" description: OK tags: - master-data-controller "/api/v1/masterdata/companies/{publicId}/review": post: operationId: reviewCompany parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCompanyView" description: OK tags: - master-data-controller "/api/v1/masterdata/companies/{publicId}/submit": post: operationId: submitCompany parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCompanyView" description: OK tags: - master-data-controller "/api/v1/masterdata/contracts": get: operationId: listContracts parameters: - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListContractView" description: OK tags: - master-data-controller post: operationId: createContract requestBody: content: application/json: schema: "$ref": "#/components/schemas/ContractCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractView" description: OK tags: - master-data-controller "/api/v1/masterdata/contracts/{publicId}": get: operationId: getContract parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractView" description: OK tags: - master-data-controller patch: operationId: updateContract parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ContractUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractView" description: OK tags: - master-data-controller "/api/v1/masterdata/contracts/{publicId}/disable": post: operationId: disableContract parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractView" description: OK tags: - master-data-controller "/api/v1/masterdata/contracts/{publicId}/review": post: operationId: reviewContract parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractView" description: OK tags: - master-data-controller "/api/v1/masterdata/contracts/{publicId}/submit": post: operationId: submitContract parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractView" description: OK tags: - master-data-controller "/api/v1/masterdata/counterparties": get: operationId: listCounterparties parameters: - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: type required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListCounterpartyView" description: OK tags: - master-data-controller post: operationId: createCounterparty requestBody: content: application/json: schema: "$ref": "#/components/schemas/CounterpartyCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCounterpartyView" description: OK tags: - master-data-controller "/api/v1/masterdata/counterparties/{publicId}": get: operationId: getCounterparty parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCounterpartyView" description: OK tags: - master-data-controller patch: operationId: updateCounterparty parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/CounterpartyUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCounterpartyView" description: OK tags: - master-data-controller "/api/v1/masterdata/counterparties/{publicId}/disable": post: operationId: disableCounterparty parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCounterpartyView" description: OK tags: - master-data-controller "/api/v1/masterdata/counterparties/{publicId}/review": post: operationId: reviewCounterparty parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCounterpartyView" description: OK tags: - master-data-controller "/api/v1/masterdata/counterparties/{publicId}/submit": post: operationId: submitCounterparty parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseCounterpartyView" description: OK tags: - master-data-controller "/api/v1/masterdata/references": get: operationId: references_5 responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseMasterDataReferenceOptionsView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}": get: operationId: listDictionaries parameters: - in: path name: resource required: true schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListDictionaryView" description: OK tags: - master-data-controller post: operationId: createDictionary parameters: - in: path name: resource required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/DictionaryCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseDictionaryView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}/legacy-identifiers/resolve": get: operationId: resolveLegacyIdentifier parameters: - in: path name: resource required: true schema: type: string - in: query name: sourceSystem required: true schema: type: string - in: query name: legacyCode required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseLegacyIdentifierResolutionView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}/{publicId}": get: operationId: getDictionary parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseDictionaryView" description: OK tags: - master-data-controller patch: operationId: updateDictionary parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/DictionaryUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseDictionaryView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}/{publicId}/disable": post: operationId: disableDictionary parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseDictionaryView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}/{publicId}/legacy-identifiers": get: operationId: listLegacyIdentifiers parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string - in: query name: status required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListLegacyIdentifierView" description: OK tags: - master-data-controller post: operationId: createLegacyIdentifier parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/LegacyIdentifierCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseLegacyIdentifierView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}/{publicId}/legacy-identifiers/{mappingPublicId}/disable": post: operationId: disableLegacyIdentifier parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string - in: path name: mappingPublicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseLegacyIdentifierView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}/{publicId}/review": post: operationId: reviewDictionary parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseDictionaryView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}/{publicId}/submit": post: operationId: submitDictionary parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseDictionaryView" description: OK tags: - master-data-controller "/api/v1/masterdata/{resource}/{publicId}/versions": get: operationId: listMasterDataVersions parameters: - in: path name: resource required: true schema: type: string - in: path name: publicId required: true schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: enum: - 20 - 50 - 100 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListMasterDataVersionView" description: OK '400': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 请求参数格式无效 '401': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 登录会话缺失或失效 '403': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 缺少资源查看权限 '404': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 主数据对象或版本不存在 '422': content: application/problem+json: schema: "$ref": "#/components/schemas/ApiProblem" description: 分页参数无效 summary: 查询主数据版本记录 tags: - master-data-controller "/api/v1/payables": get: operationId: listFinancePayables parameters: - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: enum: - PENDING - CONFIRMED - PART_PAID - PAID - VOID type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer - description: 可重复;格式 field,asc|desc in: query name: sort schema: items: pattern: "^(updatedAt|businessNo|businessDate|amount|status|projectName|counterpartyName),(asc|desc)$" type: string type: array responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListPayableListView" description: OK summary: 查询应付运营台账 tags: - finance-operations-controller "/api/v1/payments": get: operationId: payments parameters: - in: query name: tab required: false schema: type: string - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: supplierId required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: riskCode required: false schema: type: string - in: query name: submittedDateFrom required: false schema: format: date type: string - in: query name: submittedDateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListPaymentView" description: OK tags: - payment-controller post: operationId: create_2 parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PaymentCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/export": get: operationId: export_2 parameters: - in: query name: tab required: false schema: type: string - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: supplierId required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: riskCode required: false schema: type: string - in: query name: submittedDateFrom required: false schema: format: date type: string - in: query name: submittedDateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string responses: '200': content: text/csv: schema: format: byte type: string description: OK tags: - payment-controller "/api/v1/payments/exports": post: operationId: export_1 requestBody: content: application/json: schema: "$ref": "#/components/schemas/PaymentExportRequest" responses: '200': content: text/csv: schema: format: byte type: string description: OK tags: - payment-controller "/api/v1/payments/references": get: operationId: references_4 responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReferenceOptionsView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}": get: operationId: detail parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentDetailView" description: OK tags: - payment-controller patch: operationId: update_2 parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PaymentUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/approve": post: operationId: approve parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/attachment-exceptions/{exceptionPublicId}/review": post: operationId: reviewAttachmentException parameters: - in: path name: publicId required: true schema: type: string - in: path name: exceptionPublicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PaymentAttachmentExceptionReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/checks": get: operationId: checks parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListPaymentCheckView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/confirm-offline-result": post: operationId: confirmOfflineResult parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/OfflineResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/control-exceptions": post: operationId: requestControlException parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PaymentControlExceptionRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/control-exceptions/{exceptionPublicId}/review": post: operationId: reviewControlException parameters: - in: path name: publicId required: true schema: type: string - in: path name: exceptionPublicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/PaymentControlExceptionReviewRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/create-repayment": post: operationId: createRepayment parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/RepaymentRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/record-failure": post: operationId: recordFailure parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/FailureResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/record-refund": post: operationId: recordRefund parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/RefundResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/return": post: operationId: returnPayment parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReturnRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/return-result": post: operationId: returnResult parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReturnResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/submit": post: operationId: submit_1 parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/verify-result": post: operationId: verifyResult parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VerifyResultRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/payments/{publicId}/void": post: operationId: voidPayment parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReturnRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponsePaymentView" description: OK tags: - payment-controller "/api/v1/projects": get: operationId: list parameters: - in: query name: companyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: ownerId required: false schema: type: string - in: query name: customerId required: false schema: type: string - in: query name: stage required: false schema: type: string - in: query name: financeStatus required: false schema: type: string - in: query name: archiveStatus required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: startDateFrom required: false schema: format: date type: string - in: query name: startDateTo required: false schema: format: date type: string - in: query name: endDateFrom required: false schema: format: date type: string - in: query name: endDateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListProjectListItemView" description: OK tags: - project-controller post: operationId: create_1 requestBody: content: application/json: schema: "$ref": "#/components/schemas/ProjectCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectDetailView" description: OK tags: - project-controller "/api/v1/projects/exports": post: operationId: export requestBody: content: application/json: schema: "$ref": "#/components/schemas/ProjectExportRequest" responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectExportView" description: OK tags: - project-controller "/api/v1/projects/imports": post: operationId: importProjects parameters: - in: header name: Idempotency-Key required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ProjectImportRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectImportSummaryView" description: OK tags: - project-controller "/api/v1/projects/imports/{publicId}": get: operationId: getImport parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectImportSummaryView" description: OK tags: - project-controller "/api/v1/projects/imports/{publicId}/confirm": post: operationId: confirmImport_1 parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListProjectDetailView" description: OK tags: - project-controller "/api/v1/projects/references": get: operationId: references_3 responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectReferenceOptionsView" description: OK tags: - project-controller "/api/v1/projects/{projectPublicId}/accounting": get: operationId: getProjectAccounting parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: view required: false schema: default: events type: string - in: query name: period required: false schema: type: string - in: query name: eventType required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: externalVoucherNo required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: tab required: false schema: type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseObject" description: OK summary: 查询项目记账准备 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/archives": get: operationId: getProjectArchives parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: view required: false schema: default: packages type: string - in: query name: status required: false schema: type: string - in: query name: completeness required: false schema: type: string - in: query name: frozen required: false schema: type: boolean - in: query name: keyword required: false schema: type: string - in: query name: formType required: false schema: type: string - in: query name: fileName required: false schema: type: string - in: query name: originalType required: false schema: type: string - in: query name: sort required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseObject" description: OK summary: 查询项目资料与档案 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/contracts": get: operationId: getProjectContracts parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: costCategoryId required: false schema: type: string - in: query name: businessDateFrom required: false schema: format: date type: string - in: query name: businessDateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseContractLedgerPageView" description: OK summary: 查询项目合同与成本 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/forms": get: operationId: getProjectForms parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: formType required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: sourceSystem required: false schema: type: string - in: query name: createdByMe required: false schema: type: boolean - in: query name: keyword required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListSourceFormSummaryView" description: OK summary: 查询项目来源表单 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/invoices": get: operationId: getProjectInvoices parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListInvoiceView" description: OK summary: 查询项目发票 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/payments": get: operationId: getProjectPayments parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: tab required: false schema: type: string - in: query name: supplierId required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: riskCode required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListPaymentView" description: OK summary: 查询项目付款 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/people": get: operationId: getProjectPeople parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: view required: false schema: type: string - in: query name: formType required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListSourceFormSummaryView" description: OK summary: 查询项目人员 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/progress": get: operationId: getProjectProgress parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: view required: false schema: type: string - in: query name: formType required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListSourceFormSummaryView" description: OK summary: 查询项目履约与验收进度 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/receipts": get: operationId: getProjectReceipts parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: view required: false schema: default: receipts type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseObject" description: OK summary: 查询项目应收、收款与发票 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/risk-flags": get: operationId: getProjectRiskFlags parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListProjectRiskFlagView" description: OK summary: 查询项目风险标记 tags: - project-subresource-controller "/api/v1/projects/{projectPublicId}/timeline": get: operationId: getProjectTimeline parameters: - in: path name: projectPublicId required: true schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListProjectTimelineView" description: OK summary: 查询项目操作时间线 tags: - project-subresource-controller "/api/v1/projects/{publicId}": get: operationId: get parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectDetailView" description: OK tags: - project-controller patch: operationId: update_1 parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ProjectUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectDetailView" description: OK tags: - project-controller "/api/v1/projects/{publicId}/finance-complete": post: operationId: completeProjectFinance parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectDetailView" description: OK summary: 确认项目财务资料完整 tags: - project-controller "/api/v1/projects/{publicId}/risk-flags": post: operationId: createRiskFlag parameters: - in: path name: publicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ProjectRiskFlagCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectRiskFlagView" description: OK tags: - project-controller "/api/v1/projects/{publicId}/risk-flags/{riskPublicId}/resolve": post: operationId: resolveRiskFlag parameters: - in: path name: publicId required: true schema: type: string - in: path name: riskPublicId required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ProjectRiskFlagResolveRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseProjectRiskFlagView" description: OK tags: - project-controller "/api/v1/receipts": get: operationId: receipts parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListReceiptView" description: OK tags: - receivable-controller post: operationId: createReceipt parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReceiptCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReceiptView" description: OK tags: - receivable-controller "/api/v1/receipts/export": get: operationId: exportReceipts parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string responses: '200': content: text/csv: schema: format: byte type: string description: OK tags: - receivable-controller "/api/v1/receipts/{publicId}": get: operationId: receipt parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReceiptDetailView" description: OK tags: - receivable-controller patch: operationId: updateReceipt parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReceiptUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReceiptView" description: OK tags: - receivable-controller "/api/v1/receipts/{publicId}/allocations": post: operationId: allocateReceipt parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReceiptAllocationRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReceiptDetailView" description: OK tags: - receivable-controller "/api/v1/receipts/{publicId}/confirm": post: operationId: confirmReceipt parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReceiptView" description: OK tags: - receivable-controller "/api/v1/receipts/{publicId}/void": post: operationId: voidReceipt parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReceiptView" description: OK tags: - receivable-controller "/api/v1/receivables": get: operationId: receivables parameters: - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: default: updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListReceivableView" description: OK tags: - receivable-controller "/api/v1/receivables/references": get: operationId: references_2 responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReferenceOptionsView" description: OK tags: - receivable-controller "/api/v1/reports/{reportCode}": get: operationId: report parameters: - in: path name: reportCode required: true schema: type: string - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string - in: query name: sort required: false schema: type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: default: 20 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListReportRow" description: OK tags: - report-controller "/api/v1/reports/{reportCode}/exports/confirm": post: operationId: confirmExport parameters: - in: path name: reportCode required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReportExportConfirmRequest" responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReportExportView" description: OK tags: - report-controller "/api/v1/reports/{reportCode}/exports/prepare": post: operationId: prepareExport parameters: - in: path name: reportCode required: true schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReportExportPrepareRequest" responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReportExportPreviewView" description: OK tags: - report-controller "/api/v1/reports/{reportCode}/{rowId}/drilldown": get: operationId: drilldown parameters: - in: path name: reportCode required: true schema: type: string - in: path name: rowId required: true schema: type: string - in: query name: companyId required: false schema: type: string - in: query name: projectId required: false schema: type: string - in: query name: counterpartyId required: false schema: type: string - in: query name: keyword required: false schema: type: string - in: query name: status required: false schema: type: string - in: query name: dateFrom required: false schema: format: date type: string - in: query name: dateTo required: false schema: format: date type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseReportDrilldownView" description: OK tags: - report-controller "/api/v1/source/forms": get: operationId: listSourceForms parameters: - in: query name: groupCode required: false schema: enum: - PROJECT_PREPARATION - INCOME_EXPENSE - PROJECT_PROCESS - CLOSING_ARCHIVE - BANK_INFORMATION type: string - in: query name: formType required: false schema: pattern: "^OA-(0[1-9]|1[0-4])$" type: string - in: query name: templateVersion required: false schema: minimum: 1 type: string - in: query name: projectId required: false schema: pattern: "^[0-9A-HJKMNP-TV-Z]{26}$" type: string - in: query name: status required: false schema: type: string - in: query name: sourceSystem required: false schema: type: string - in: query name: createdByMe required: false schema: type: boolean - in: query name: keyword required: false schema: type: string - in: query name: createdDateFrom required: false schema: format: date type: string - in: query name: createdDateTo required: false schema: format: date type: string - in: query name: sort required: false schema: enum: - updatedAt,asc - updatedAt,desc - createdAt,asc - createdAt,desc - businessNo,asc - businessNo,desc - status,asc - status,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: enum: - 20 - 50 - 100 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListSourceFormSummaryView" description: OK summary: 查询来源表单 tags: - source-form-controller post: operationId: create parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/SourceFormCreateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceFormDetailView" description: OK tags: - source-form-controller "/api/v1/source/forms/references": get: operationId: references_1 responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseFormReferenceOptionsView" description: OK tags: - source-form-controller "/api/v1/source/forms/{publicId}": get: operationId: form parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceFormDetailView" description: OK tags: - source-form-controller patch: operationId: update parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/SourceFormUpdateRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceFormDetailView" description: OK tags: - source-form-controller "/api/v1/source/forms/{publicId}/submit": post: operationId: submit parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceFormDetailView" description: OK tags: - source-form-controller "/api/v1/source/forms/{publicId}/validate": post: operationId: validate parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseValidationView" description: OK tags: - source-form-controller "/api/v1/source/forms/{publicId}/void": post: operationId: voidForm parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceFormDetailView" description: OK tags: - source-form-controller "/api/v1/source/forms/{publicId}/withdraw": post: operationId: withdraw parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceFormDetailView" description: OK tags: - source-form-controller "/api/v1/source/imports": post: operationId: createImport parameters: - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/SourceImportRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceImportSummaryView" description: OK tags: - source-form-controller "/api/v1/source/imports/{publicId}": get: operationId: importBatch parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceImportSummaryView" description: OK tags: - source-form-controller "/api/v1/source/imports/{publicId}/confirm": post: operationId: confirmImport parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/VersionCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListSourceFormDetailView" description: OK tags: - source-form-controller "/api/v1/source/references": get: operationId: references responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseFormReferenceOptionsView" description: OK tags: - source-form-controller "/api/v1/source/templates": get: operationId: templates responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListTemplateView" description: OK tags: - source-form-controller "/api/v1/source/templates/{formType}/versions/{version}": get: operationId: template parameters: - in: path name: formType required: true schema: type: string - in: path name: version required: true schema: format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseTemplateView" description: OK tags: - source-form-controller "/api/v1/workbenches/archive": get: operationId: archive responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseWorkbenchView" description: OK tags: - workbench-controller "/api/v1/workbenches/finance": get: operationId: finance responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseWorkbenchView" description: OK tags: - workbench-controller "/api/v1/workbenches/project": get: operationId: project responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseWorkbenchView" description: OK tags: - workbench-controller "/api/v1/workflow/instances/{instancePublicId}/void": post: operationId: voidWorkflowInstance parameters: - in: path name: instancePublicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceFormDetailView" description: OK tags: - workflow-controller "/api/v1/workflow/instances/{instancePublicId}/withdraw": post: operationId: withdrawWorkflowInstance parameters: - in: path name: instancePublicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/ReasonCommandRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseSourceFormDetailView" description: OK tags: - workflow-controller "/api/v1/workflow/tasks": get: operationId: listWorkflowTasks parameters: - in: query name: view required: false schema: enum: - TODO - PROCESSED - CREATED - RETURNED - COMPLETED type: string - in: query name: formType required: false schema: pattern: OA-(0[1-9]|1[0-4]) type: string - in: query name: status required: false schema: enum: - PENDING - APPROVED - RETURNED - REJECTED - CANCELLED type: string - in: query name: keyword required: false schema: type: string - in: query name: projectId required: false schema: pattern: "[0-9A-HJKMNP-TV-Z]{26}" type: string - in: query name: arrivedDateFrom required: false schema: format: date type: string - in: query name: arrivedDateTo required: false schema: format: date type: string - in: query name: overdue required: false schema: type: boolean - in: query name: sort required: false schema: enum: - arrivedAt,asc - arrivedAt,desc - dueAt,asc - dueAt,desc - updatedAt,asc - updatedAt,desc type: string - in: query name: page required: false schema: default: 1 format: int32 type: integer - in: query name: size required: false schema: enum: - 20 - 50 - 100 format: int32 type: integer responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseListWorkflowTaskSummaryView" description: OK tags: - workflow-controller "/api/v1/workflow/tasks/{publicId}": get: operationId: getWorkflowTask parameters: - in: path name: publicId required: true schema: type: string responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseWorkflowTaskDetailView" description: OK tags: - workflow-controller "/api/v1/workflow/tasks/{publicId}/approve": post: operationId: approveWorkflowTask parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/WorkflowActionRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseWorkflowTaskDetailView" description: OK tags: - workflow-controller "/api/v1/workflow/tasks/{publicId}/reject": post: operationId: rejectWorkflowTask parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/WorkflowActionRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseWorkflowTaskDetailView" description: OK tags: - workflow-controller "/api/v1/workflow/tasks/{publicId}/return": post: operationId: returnWorkflowTask parameters: - in: path name: publicId required: true schema: type: string - in: header name: Idempotency-Key required: false schema: type: string requestBody: content: application/json: schema: "$ref": "#/components/schemas/WorkflowActionRequest" required: true responses: '200': content: "*/*": schema: "$ref": "#/components/schemas/ApiResponseWorkflowTaskDetailView" description: OK tags: - workflow-controller