definitions: apperrors.APIError400: properties: code: example: CDE-0004 type: string detail: example: The request sent was invalid or malformed. Please review the request parameters or body and try again. type: string type: example: bad_request type: string type: object apperrors.APIError401: properties: code: example: CDE-0002 type: string detail: example: Authentication is required or has failed. Please log in or provide valid credentials. type: string type: example: unauthorized type: string type: object apperrors.APIError403: properties: code: example: CDE-0003 type: string detail: example: You do not have the necessary permissions to perform this action or access this resource. type: string type: example: permission_denied type: string type: object apperrors.APIError404: properties: code: example: CDE-0001 type: string detail: example: The requested resource could not be found. Please verify the URL or identifier and try again. type: string type: example: not_found type: string type: object apperrors.APIError409: properties: code: example: CDE-0008 type: string detail: example: A resource with the same identifier already exists. Please use a different value or update the existing resource. type: string type: example: conflict type: string type: object apperrors.APIError422: properties: code: example: CDE-0005 type: string detail: example: One or more provided input values failed validation. Please review the data and ensure it meets the required format or constraints. type: string type: example: validation_error type: string validation_errors: additionalProperties: items: type: string type: array type: object type: object apperrors.APIError502: properties: code: example: CDE-0006 type: string detail: example: An external service encountered an error. This is usually a temporary issue, please try again later. type: string type: example: external_service_error type: string type: object attribute.ReplaceAttributeInput: properties: asset_id: type: string x-nullable: true asset_level_id: type: string x-nullable: true id: type: integer values: items: {} type: array type: object attribute.ReplaceRequest: properties: attributes: description: Полный желаемый набор атрибутов. Отсутствующие атрибуты и атрибуты с пустым values удаляются из активного набора; пустой список очищает все атрибуты документа. items: $ref: '#/definitions/attribute.ReplaceAttributeInput' type: array type: object binding.AuthorOutput: properties: first_name: type: string id: type: integer last_name: type: string type: object binding.BindingItemOutput: properties: author: $ref: '#/definitions/binding.AuthorOutput' bundle_conversion_status: type: string changelog: $ref: '#/definitions/binding.ChangelogOutput' comment: type: string created_at: type: string deleted_at: type: string disk_id: type: string has_digital_signature: type: boolean has_qr_code: type: boolean has_stamp: type: boolean id: type: string is_canceled_qr: type: boolean is_document_allowed: type: boolean name: type: string path: type: string pretty_path: type: string reviews: items: $ref: '#/definitions/binding.ReviewOutput' type: array size: type: integer transmittals: items: $ref: '#/definitions/binding.TransmittalOutput' type: array type: type: string version: type: integer workflow_id: type: string type: object binding.ChangelogOutput: properties: description: type: string "no": type: string type: object binding.GetBindingsOutput: properties: binding_id: type: string items: items: $ref: '#/definitions/binding.BindingItemOutput' type: array type: object binding.ReviewOutput: properties: review: type: string review_id: type: integer review_status: type: string status: $ref: '#/definitions/binding.ReviewStatusOutput' type: object binding.ReviewStatusOutput: properties: id: type: integer key: type: string value: type: string type: object binding.TransmittalOutput: properties: created_at: type: string id: type: string name: type: string status: $ref: '#/definitions/binding.TransmittalStatusOutput' type: object binding.TransmittalStatusOutput: properties: id: type: integer name: type: string slug: type: string type: object bundle.AddWorkflowRequest: properties: workflow_id: type: string required: - workflow_id type: object bundle.ChangeAuthorRequest: properties: user_id: type: integer required: - user_id type: object bundle.ChangelogRequest: properties: description: type: string "no": type: string type: object bundle.CompleteUploadResponse: properties: id: type: string upload_status: type: string type: object bundle.CreateRequest: properties: changelog: $ref: '#/definitions/bundle.ChangelogRequest' comment: type: string date: type: string disk_id: type: string keys: items: $ref: '#/definitions/bundle.DataSourceKeyRequest' minItems: 1 type: array type: type: string required: - disk_id - keys - type type: object bundle.CreateResponse: properties: created_at: type: string data_sources: items: $ref: '#/definitions/bundle.DataSourceResponse' type: array id: type: string type: type: string type: object bundle.DataSourceKeyRequest: properties: key: type: string name: maxLength: 250 type: string type: enum: - folder - file type: string required: - key - name - type type: object bundle.DataSourceResponse: properties: file_name: type: string id: type: string key: type: string type: type: string type: object bundle.EnsureDataSourceRequest: properties: name: type: string type: enum: - file - folder type: string required: - type type: object bundle.EnsureDataSourceResponse: properties: created: type: boolean data_source_id: type: string type: object bundle.PresignResponse: properties: bundle_id: type: string hash: type: string type: object bundle.RestartContext: properties: attributes: additionalProperties: {} type: object bucketName: type: string companyID: type: integer documentID: type: integer pdfDataSourceID: type: string tilesDataSourceID: type: string workflowID: description: external workflows-service workflow id type: string workflowRecordID: description: our workflow row id (workflows_uid param) type: string type: object bundle.RestartResponse: properties: workflow_id: type: string type: object bundle.UpdateAttributesOutput: properties: bundleID: type: string restart: allOf: - $ref: '#/definitions/bundle.RestartContext' description: |- Restart is non-nil when the type re-runs georeferencing and a workflow exists: the service performs the restart (network) out of the transaction. type: type: string workflowStatus: type: string type: object bundle.UpdateAttributesRequest: properties: attributes: additionalProperties: {} type: object type: object bundle.UpdateCommentRequest: properties: comment: $ref: '#/definitions/optional.Value-string' type: object bundle.markBundleRequest: properties: clean_bundle_id: type: string qrs: items: $ref: '#/definitions/bundle.markBundleRequestQR' maxItems: 1 type: array signatures: items: $ref: '#/definitions/bundle.markBundleRequestSignature' type: array stamps: items: $ref: '#/definitions/bundle.markBundleRequestStamp' type: array use_existing_version: type: boolean type: object bundle.markBundleRequestQR: properties: pages: items: type: integer type: array positioning_type: type: integer timestamp: type: string x_coordinate: minimum: 0 type: integer y_coordinate: minimum: 0 type: integer required: - timestamp type: object bundle.markBundleRequestSignature: properties: company_name: maxLength: 255 type: string header: maxLength: 255 type: string mrpa_id: type: string owner: maxLength: 255 type: string pages: items: type: integer type: array positioning_type: type: integer signature: type: string thumbprint: maxLength: 255 type: string valid_from: type: string valid_to: type: string x_coordinate: minimum: 0 type: integer y_coordinate: minimum: 0 type: integer required: - company_name - header - owner - signature - thumbprint - valid_from - valid_to type: object bundle.markBundleRequestStamp: properties: company_name: maxLength: 255 type: string header: maxLength: 255 type: string pages: items: type: integer type: array positioning_type: type: integer role_name: maxLength: 255 type: string timestamp: type: string user_full_name: maxLength: 255 type: string x_coordinate: minimum: 0 type: integer y_coordinate: minimum: 0 type: integer required: - company_name - header - role_name - timestamp - user_full_name type: object bundle.markBundleResponse: properties: bundle_id: type: string type: object bundle.markExternalBundleRequest: properties: clean_bundle_id: type: string created_by: type: integer qrs: items: $ref: '#/definitions/bundle.markBundleRequestQR' maxItems: 1 type: array signatures: items: $ref: '#/definitions/bundle.markBundleRequestSignature' type: array stamps: items: $ref: '#/definitions/bundle.markBundleRequestStamp' type: array use_existing_version: type: boolean type: object changelog.CreateRequest: properties: description: type: string "no": type: string type: object changelog.Response: properties: author: $ref: '#/definitions/document.AuthorOutput' bundle_id: type: string created_at: type: string description: type: string "no": type: string updated_at: type: string type: object changelog.UpdateRequest: properties: description: description: Описание изменений; отсутствие поля сохраняет значение, null очищает его. type: string x-nullable: true "no": type: string type: object changelog.UpdateResponse: properties: bundle_id: type: string created_at: type: string description: type: string "no": type: string updated_at: type: string type: object copy.AddVersionOptions: properties: copy_issues: description: Копирование замечаний не поддерживается; значение поля игнорируется. type: boolean publish: type: boolean set_copied_from: description: Сохранять связь копии с исходной версией; по умолчанию true. type: boolean type: object copy.FlatOptions: properties: copy_attributes: type: boolean copy_issues: description: Копирование замечаний не поддерживается; значение поля игнорируется. type: boolean publish: type: boolean set_copied_from: type: boolean type: object copy.LegacyBundle: properties: attributes: additionalProperties: {} type: object bim_id: type: integer bundle_copied_from: type: string comment: type: string created_at: type: string data_sources: items: $ref: '#/definitions/copy.LegacyDataSource' type: array date: type: string document_id: type: integer has_digital_signature: type: boolean has_qr_code: type: boolean has_stamp: type: boolean id: type: string published_at: type: string size: type: integer type: type: string upload_status: type: string workflow_status: type: string type: object copy.LegacyBundleCopyRequest: properties: document_name: type: string to_disk_document_id: type: string to_parent_document_id: type: integer use_source_bundle_as_copied_from: type: boolean type: object copy.LegacyDataSource: properties: file_name: type: string format: type: string id: type: string key: type: string size: type: integer type: type: string type: object copy.LegacyDocument: properties: bundles: items: $ref: '#/definitions/copy.LegacyBundle' type: array created_at: type: string dashboard_id: type: integer disk_id: type: string document_copied_from: type: integer files: items: type: integer type: array folders: items: type: integer type: array has_bindings: type: boolean has_digital_signature: type: boolean has_public_link: type: boolean has_qr_code: type: boolean has_stamp: type: boolean id: type: integer is_folder: type: boolean name: type: string path: type: string project_id: type: integer published_at: type: string type: type: string workspace_id: type: string type: object copy.NewDocumentItem: properties: document_name: type: string source_bundle_id: type: string to_parent_document_id: description: Папка, в которой будет создан новый документ. type: integer type: object copy.NewDocumentRequest: properties: items: items: $ref: '#/definitions/copy.NewDocumentItem' type: array options: $ref: '#/definitions/copy.FlatOptions' type: object copy.SelectionRequest: properties: document_ids: items: type: integer type: array options: $ref: '#/definitions/copy.TreeOptions' to_parent_document_id: type: integer type: object copy.StartResponse: properties: operation_id: type: string type: object copy.SubtreeRequest: properties: exclude: items: type: integer type: array options: $ref: '#/definitions/copy.TreeOptions' to_parent_document_id: type: integer type: object copy.ToDocumentItem: properties: source_bundle_id: type: string target_document_id: type: integer type: object copy.ToDocumentRequest: properties: items: items: $ref: '#/definitions/copy.ToDocumentItem' type: array options: $ref: '#/definitions/copy.AddVersionOptions' type: object copy.TreeOptions: properties: conflict_policy: default: skip description: 'При совпадении имени: skip (по умолчанию, также при пустом значении) — пропустить документ или папку со всем содержимым; as_copy — выбрать первое свободное имя с суффиксом « copy», « copy 2», …, « copy 50». Если все варианты заняты, элемент пропускается. При отсутствии совпадения имя сохраняется. Существующие элементы не перезаписываются и не объединяются.' enum: - skip - as_copy example: as_copy type: string copy_attributes: type: boolean copy_issues: description: Копирование замечаний не поддерживается; значение поля игнорируется. type: boolean publish: type: boolean set_copied_from: type: boolean type: object disk.CreateInternalRequest: properties: admin_ids: items: type: integer minItems: 1 type: array author_id: type: integer company_id: type: integer storage_type: enum: - sarex type: string required: - admin_ids - author_id - company_id - storage_type type: object disk.CreateInternalResponse: properties: admin_ids: items: type: integer type: array bucket_name: type: string company_id: type: integer document_id: type: integer id: type: string name: type: string storage_type: type: string type: object disk.CreateRequest: properties: admin_ids: items: type: integer minItems: 1 type: array company_id: type: integer storage_type: enum: - sarex type: string required: - admin_ids - company_id - storage_type type: object document.AddBundleRequest: properties: bundle_id: type: string required: - bundle_id type: object document.AddBundleResponse: properties: bundle_id: type: string document_id: type: integer document_name: type: string type: object document.AttributeInput: properties: asset_id: type: integer asset_level_id: type: integer id: type: integer values: items: {} type: array type: object document.AuthorOutput: properties: first_name: type: string id: type: integer last_name: type: string type: object document.BulkDeleteResponse: properties: deleted_ids: items: type: integer type: array skipped_ids: items: type: integer type: array type: object document.BulkMovedRoot: properties: id: type: integer name: type: string parent_id: type: integer path: type: string type: object document.BulkUpdatePathRequest: properties: document_ids: items: type: integer maxItems: 301 minItems: 1 type: array uniqueItems: true parent_id: type: integer required: - document_ids - parent_id type: object document.BulkUpdatePathResponse: properties: roots: items: $ref: '#/definitions/document.BulkMovedRoot' type: array skipped_ids: items: type: integer type: array type: object document.ChangeAuthorRequest: properties: include_bundles: description: IncludeBundles also reassigns the author of every version of the document. type: boolean user_id: type: integer required: - user_id type: object document.CopyStructureRequest: properties: copy_permissions: type: boolean overwrite: type: boolean source_document_id: type: integer target_document_id: type: integer required: - source_document_id - target_document_id type: object document.CreateDashboardRequest: properties: dashboard_id: type: integer disk_id: type: string name: maxLength: 100 type: string parent_id: type: integer required: - dashboard_id - disk_id - name - parent_id type: object document.CreateDashboardResponse: properties: dashboard_id: type: integer disk_id: type: string id: type: integer name: type: string path: type: string type: type: string type: object document.CreateDocumentWorkspaceResponse: properties: workspace_id: type: string type: object document.CreateInternalRequest: properties: author_id: type: integer name: maxLength: 250 type: string parent_disk_id: type: string parent_doc_id: type: integer type: enum: - deviation - abap - c2c - c2s - pdf - folder - bim2bim - ksg type: string required: - author_id - name - parent_disk_id - parent_doc_id - type type: object document.CreateInternalResponse: properties: bundle: $ref: '#/definitions/document.CreatedBundleResponse' id: type: integer is_folder: type: boolean name: type: string path: type: string type: type: string workspace_id: type: string type: object document.CreateRequest: properties: attributes: items: $ref: '#/definitions/document.AttributeInput' type: array bundle_id: type: string disk_id: type: string is_folder: type: boolean is_project: type: boolean name: maxLength: 250 type: string parent_id: type: integer target_id: type: integer required: - disk_id - is_folder - name - parent_id type: object document.CreateResponse: properties: disk_id: type: string id: type: integer is_folder: type: boolean name: type: string path: type: string project_id: type: integer type: type: string workspace_id: type: string type: object document.CreateWorkspaceNodeRequest: properties: disk_id: type: string documents: items: type: integer type: array name: maxLength: 250 type: string parent_id: type: integer required: - disk_id - documents - name - parent_id type: object document.CreateWorkspaceNodeResponse: properties: disk_id: type: string id: type: integer name: type: string path: type: string type: type: string workspace_id: type: string type: object document.CreatedBundleResponse: properties: data_sources: items: $ref: '#/definitions/document.CreatedDataSourceResponse' type: array id: type: string type: type: string upload_status: type: string type: object document.CreatedDataSourceResponse: properties: id: type: string key: type: string name: type: string type: type: string type: object document.DocumentType: enum: - workspace - dashboard - cloud - bim - bimv2 - bimv3 - project - folder - root - surface - pdf - xlsx - orthophoto - dem - dxf - ksg - docx - dwg - jpeg - png - gif - heic - docx_template - docx_maf - link - doc - rtf - xls - other_files - deviation - abap - c2c - c2s - bim2bim - glb - gaussian_splats type: string x-enum-varnames: - TypeWorkspace - TypeDashboard - TypeCloudLas - TypeBIM - TypeBIMV2 - TypeBIMV3 - TypeProject - TypeFolder - TypeRoot - TypeSurface - TypePDF - TypeXlsx - TypeOrthophoto - TypeDem - TypeDxf - TypeKSG - TypeDocx - TypeDWG - TypeJpeg - TypePng - TypeGif - TypeHeic - TypeDocxTemplate - TypeDocxMAF - TypeLink - TypeDoc - TypeRtf - TypeXls - TypeOtherFiles - TypeDeviation - TypeAbap - TypeC2c - TypeC2s - TypeBim2Bim - TypeGlb - TypeGaussianSplats document.FileTypeCount: properties: count: type: integer type: type: string type: object document.FolderPropertiesOutput: properties: author: $ref: '#/definitions/document.AuthorOutput' created_at: type: string document_id: type: integer file_count: type: integer file_types: items: $ref: '#/definitions/document.FileTypeCount' type: array folder_count: type: integer size: type: integer type: object document.RenameRequest: properties: name: maxLength: 250 type: string required: - name type: object document.RenameResponse: properties: id: type: integer name: type: string path: type: string type: object document.ResolveRelativePathRequest: properties: document_ids: items: type: integer minItems: 1 type: array relative_path: type: string should_folder_be_created: type: boolean user_service_accounts: items: type: string minItems: 1 type: array required: - document_ids - user_service_accounts type: object document.ResolveRelativePathResponse: properties: result: items: $ref: '#/definitions/document.ResolvedDocumentPathResponse' type: array type: object document.ResolvedDocumentPathResponse: properties: document_id: type: integer path: type: string type: object document.SuperCreateBundleRequest: properties: date: type: string keys: items: $ref: '#/definitions/document.SuperCreateKeyRequest' minItems: 1 type: array type: type: string required: - keys - type type: object document.SuperCreateKeyRequest: properties: key: type: string name: maxLength: 250 type: string type: enum: - folder - file type: string required: - key - name - type type: object document.SuperCreateRequest: properties: author_id: type: integer bundles: items: $ref: '#/definitions/document.SuperCreateBundleRequest' minItems: 1 type: array name: maxLength: 250 type: string parent_doc_id: type: integer type: type: string required: - author_id - bundles - name - parent_doc_id - type type: object document.SuperCreateResponse: properties: bundles: items: $ref: '#/definitions/document.CreatedBundleResponse' type: array id: type: integer name: type: string path: type: string type: type: string workspace_id: type: string type: object document.TreeNodeOutput: properties: has_children: type: boolean id: type: integer is_folder: type: boolean name: type: string parent_id: type: integer path: type: string type: type: string type: object document.TreeOutput: properties: documents: items: $ref: '#/definitions/document.TreeNodeOutput' type: array type: object document.UpdatePathRequest: properties: parent_id: type: integer required: - parent_id type: object document.UpdatePathResponse: properties: id: type: integer name: type: string parent_id: type: integer path: type: string type: object link.CreateOutput: properties: created_at: type: string id: type: integer name: type: string path: type: string target_document_id: type: integer type: $ref: '#/definitions/document.DocumentType' type: object link.CreateRequest: properties: disk_id: type: string parent_id: type: integer target_document_id: type: integer required: - disk_id - parent_id - target_document_id type: object mark.deleteMarksRequest: properties: qr_ids: items: type: string type: array signature_ids: items: type: string type: array stamp_ids: items: type: string type: array type: object mark.listMarksMarkResponse: properties: id: type: string pages: items: type: integer type: array timestamp: type: string x_coordinate: type: integer y_coordinate: type: integer type: object mark.listMarksQRsResponse: properties: is_canceled: type: boolean mark: $ref: '#/definitions/mark.listMarksMarkResponse' type: object mark.listMarksResponse: properties: qrs: items: $ref: '#/definitions/mark.listMarksQRsResponse' type: array signatures: items: $ref: '#/definitions/mark.listMarksSignaturesResponse' type: array stamps: items: $ref: '#/definitions/mark.listMarksStampsResponse' type: array type: object mark.listMarksSignaturesResponse: properties: company_name: type: string header: type: string mark: $ref: '#/definitions/mark.listMarksMarkResponse' owner: type: string thumbprint: type: string user_full_name: type: string valid_from: type: string valid_to: type: string type: object mark.listMarksStampsResponse: properties: company_name: type: string header: type: string mark: $ref: '#/definitions/mark.listMarksMarkResponse' role_name: type: string user_full_name: type: string type: object move.ItemStatusResponse: properties: action: type: string document_id: type: integer name: type: string path: type: string reason: type: string status: type: string target_document_id: description: Созданный или целевой документ копирования. type: integer type: object move.MoveBundlesRequest: properties: bundle_ids: items: type: string type: array skip_copied_guard: description: |- Разрешить объединение версий, у которых есть копии на согласовании. Завершение активного согласования может ссылаться на уже удалённый исходный документ. type: boolean type: object move.MoveRequest: properties: items: items: $ref: '#/definitions/move.MoveRequestItem' type: array skip_copied_guard: description: |- Разрешить объединение версий, у которых есть копии на согласовании. Завершение активного согласования может ссылаться на уже удалённый исходный документ. type: boolean to_parent_document_id: type: integer type: object move.MoveRequestItem: properties: action: description: 'Action: reparent (default) | as_copy | union | skip.' type: string document_id: type: integer new_document_name: description: |- NewDocumentName — опциональное переименование в рамках переноса (например, когда целевая папка диктует шаблон наименования). reparent: документ переносится под новым именем, конфликт в назначении проверяется по финальному имени (новому, если задано, иначе текущему). union: пара для объединения ищется по старому имени источника, объединение происходит под ним, затем целевой документ переименовывается — новое имя должно быть свободно (иначе 409). as_copy: новое имя служит базой для суффикса « copy N». Переименование без смены папки — 400 (это задача /rename). type: string type: object move.OperationListResponse: properties: operations: items: $ref: '#/definitions/move.StatusResponse' type: array type: object move.ProgressResponse: properties: done: type: integer failed: type: integer in_progress: type: integer percent: type: integer skipped: type: integer total: type: integer type: object move.RefreshDocument: properties: document_id: type: integer name: type: string role: type: string type: object move.StartResponse: properties: operation_id: type: string type: object move.StatusResponse: properties: cancel_requested: type: boolean created_at: type: string current_step: type: string error: type: string items: items: $ref: '#/definitions/move.ItemStatusResponse' type: array items_total: description: |- Число элементов, соответствующих фильтру; при переносе учитываются только пропущенные элементы и ошибки. type: integer operation_id: type: string progress: $ref: '#/definitions/move.ProgressResponse' refresh_document_ids: items: $ref: '#/definitions/move.RefreshDocument' type: array status: type: string type: type: string updated_at: type: string type: object optional.Value-string: type: object page.CreateRequest: properties: data_source: type: string id: type: string page_order: type: integer thumbnail: type: string required: - data_source - id type: object page.CreateResponse: properties: id: type: string page_order: type: integer thumbnail: type: string type: object permission.SetRequest: properties: permissions: description: 'Полный желаемый набор прав: отсутствующие права отзываются, новые добавляются. Пустой список отзывает все прямые права получателя; унаследованные права сохраняются.' items: type: string type: array service_account: description: Получатель, чьи прямые права на документе нужно полностью заменить. type: string type: object permissionmatrix.GrantOutput: properties: document_id: type: integer permissions: items: type: string type: array service_account: type: string type: object permissionmatrix.GrantsQueryRequest: properties: document_ids: items: type: integer minItems: 1 type: array service_accounts: items: type: string minItems: 1 type: array required: - document_ids - service_accounts type: object permissionmatrix.GrantsQueryResponse: properties: grants: items: $ref: '#/definitions/permissionmatrix.GrantOutput' type: array type: object publiclink.CreateOutput: properties: id: type: string public_link: type: string type: object publiclink.CreateRequest: properties: bundle_id: type: string document_id: type: integer document_url: type: string expires_at: type: string is_auto_deletion_available: type: boolean version: enum: - latest - specified - latest_approved type: string required: - version type: object publiclink.UpdateOutput: properties: bundle_id: type: string created_at: type: string created_by: type: integer document_id: type: integer expires_at: type: string id: type: string is_auto_deletion_available: type: boolean updated_at: type: string version: type: string type: object publiclink.UpdateRequest: properties: bundle_id: description: Идентификатор выбранной версии; null очищает значение. Для version=specified у ссылки должна быть выбрана версия. format: uuid type: string x-nullable: true expires_at: description: Срок действия ссылки; null делает ссылку бессрочной. format: date-time type: string x-nullable: true is_auto_deletion_available: description: Разрешить автоматическое удаление; null равнозначен false. type: boolean x-nullable: true version: description: Выбор версии; отсутствие поля сохраняет текущее значение. enum: - latest - specified - latest_approved type: string type: object s32d.CheckConflictsRequest: properties: disk_id: type: string items: items: $ref: '#/definitions/s32d.ConflictCheckItem' minItems: 1 type: array required: - disk_id - items type: object s32d.CheckConflictsResponse: properties: conflicts: items: $ref: '#/definitions/s32d.ConflictResult' type: array no_conflict_count: type: integer type: object s32d.ConflictCheckItem: properties: name: maxLength: 250 type: string parent_id: type: integer required: - name - parent_id type: object s32d.ConflictResult: properties: existing_document_id: type: integer existing_document_type: type: string name: type: string parent_id: type: integer type: object s32d.CreateSessionRequest: properties: archive_name: maxLength: 500 type: string disk_id: type: string manifest: $ref: '#/definitions/s32d.ManifestRequest' required: - archive_name - disk_id - manifest type: object s32d.CreateSessionResponse: properties: session_id: type: string type: object s32d.InitMultipartResponse: properties: upload_id: type: string type: object s32d.ListSessionsResponse: properties: items: items: $ref: '#/definitions/s32d.SessionListItemResponse' type: array total: type: integer type: object s32d.ManifestAttributeRequest: properties: asset_id: type: integer asset_level_id: type: integer id: type: integer values: items: {} type: array required: - id type: object s32d.ManifestBundleRequest: properties: changelog: $ref: '#/definitions/s32d.ManifestChangelogRequest' comment: type: string keys: items: $ref: '#/definitions/s32d.ManifestKeyRequest' minItems: 1 type: array type: type: string required: - keys - type type: object s32d.ManifestChangelogRequest: properties: description: maxLength: 1000 type: string "no": type: string required: - "no" type: object s32d.ManifestDocumentRequest: properties: attributes: items: $ref: '#/definitions/s32d.ManifestAttributeRequest' type: array name: maxLength: 250 type: string required: - name type: object s32d.ManifestItemRequest: properties: action: enum: - create - add_bundle type: string bundle: $ref: '#/definitions/s32d.ManifestBundleRequest' document: $ref: '#/definitions/s32d.ManifestDocumentRequest' existing_document_id: type: integer parent_id: type: integer s32d_file_path: type: string required: - action - bundle - parent_id - s32d_file_path type: object s32d.ManifestKeyRequest: properties: key: type: string name: maxLength: 250 type: string type: enum: - folder - file type: string required: - key - name - type type: object s32d.ManifestRequest: properties: items: items: $ref: '#/definitions/s32d.ManifestItemRequest' minItems: 1 type: array required: - items type: object s32d.ProcessSessionResponse: properties: session_id: type: string type: object s32d.ProgressOutput: properties: published_files: type: integer total_files: type: integer uploaded_files: type: integer workflows_completed: type: integer type: object s32d.SessionListItemResponse: properties: archive_name: type: string completed_at: type: string created_at: type: string current_step: type: string errors: items: type: string type: array progress: $ref: '#/definitions/s32d.ProgressOutput' session_id: type: string status: type: string type: object s32d.SessionStatusResponse: properties: archive_name: type: string completed_at: type: string created_at: type: string current_step: type: string errors: items: type: string type: array progress: $ref: '#/definitions/s32d.ProgressOutput' session_id: type: string status: type: string type: object s32d.UploadArchiveResponse: properties: archive_size: type: integer type: object s32d.UploadPartResponse: properties: etag: type: string part_number: type: integer type: object sizer.getLatestStatResponse: properties: created_at: type: string run_id: type: string stat: items: $ref: '#/definitions/sizer.getLatestStatResponseStat' type: array type: object sizer.getLatestStatResponseStat: properties: count: type: integer total_size: type: integer type: type: string user_size: type: integer type: object upload.MultipartFinishedResponse: properties: status: example: completed type: string upload_id: type: string type: object upload.StartMultipartInternalResponse: properties: upload_id: type: string upload_url: type: string type: object upload.StartMultipartResponse: properties: bundle_id: type: string key: example: pdf type: string upload_id: type: string upload_url: type: string type: object upload.UploadPartResponse: properties: etag: type: string part_number: type: integer size: type: integer status: example: uploaded type: string upload_id: type: string type: object upload.UploadSingleResponse: properties: bundle_id: type: string filename: type: string key: example: pdf type: string size: type: integer status: example: uploaded type: string type: object info: contact: {} description: API для работы с документами, версиями, файлами, правами доступа и публичными ссылками. title: cde-api version: "1.0" paths: /app/v1/async-operations: get: description: Возвращает активные и недавно завершённые операции копирования и переноса. Доступны только собственные операции пользователя. parameters: - description: 'Фильтр по типу: copy|move|move_bundles' in: query name: type type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/move.OperationListResponse' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' summary: Получить список операций tags: - async-operations /app/v1/async-operations/{id}: get: description: Возвращает состояние, прогресс и результаты копирования или переноса. Доступно только создателю операции. parameters: - description: UUID операции in: path name: id required: true type: string - description: 'copy: размер страницы items (default 1000)' in: query name: items_limit type: integer - description: 'copy: смещение' in: query name: items_offset type: integer - description: 'copy: фильтр pending|running|done|skipped|failed' in: query name: items_status type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/move.StatusResponse' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Получить состояние операции tags: - async-operations /app/v1/async-operations/{id}/cancel: post: description: Запрашивает отмену копирования или переноса. Уже выполненные изменения не откатываются. Если копирование достигло этапа публикации результата, возвращается 409. Доступно только создателю операции. parameters: - description: UUID операции in: path name: id required: true type: string produces: - application/json responses: "202": description: Отмена запрошена "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Отменить операцию tags: - async-operations /app/v1/bundles/: post: consumes: - application/json description: Создаёт версию и возвращает параметры для загрузки её файлов. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Параметры версии документа in: body name: request required: true schema: $ref: '#/definitions/bundle.CreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.CreateResponse' "400": description: Некорректное тело / диск не найден schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "422": description: Ключи не подходят типу версии / расширение имени schema: $ref: '#/definitions/apperrors.APIError422' summary: Создать версию документа tags: - bundles /app/v1/bundles/{bundle_id}: delete: description: Мягкое удаление версии; последнюю версию документа удалить нельзя. parameters: - description: UUID бандла in: path name: bundle_id required: true type: string produces: - application/json responses: "204": description: Удалён "400": description: Не загружен / без документа / последняя версия schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Удалить бандл tags: - bundles /app/v1/bundles/{bundle_id}/{key}/upload_multipart: post: description: Возвращает идентификатор загрузки и адрес для отправки частей в той же версии API. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Ключ файла версии in: path name: key required: true type: string - description: Относительный путь файла в наборе файлов версии; только для типа folder in: query name: path type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.StartMultipartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Начать загрузку файла по частям tags: - uploads /app/v1/bundles/{bundle_id}/{key}/upload_single: post: consumes: - application/octet-stream description: 'Файл передаётся в теле запроса с Content-Type: application/octet-stream и Content-Length. Формат multipart/form-data не поддерживается. Диск должен принадлежать одной из компаний пользователя, указанных в токене.' parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Ключ файла версии in: path name: key required: true type: string - description: Относительный путь файла в наборе файлов версии; только для типа folder in: query name: path type: string - description: Имя файла in: query name: filename type: string - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 in: body name: content required: true schema: type: string - description: Размер тела запроса в байтах format: int64 in: header minimum: 1 name: Content-Length required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.UploadSingleResponse' "400": description: Форма вместо raw / нет Content-Length schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить файл версии одним запросом tags: - uploads /app/v1/bundles/{bundle_id}/bindings: get: parameters: - description: UUID бандла in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/binding.GetBindingsOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Связи s32d бандла tags: - bundles /app/v1/bundles/{bundle_id}/cancel_qr: post: description: Аннулирует QR-код указанной версии. Требуется право нанесения QR-кода или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string produces: - application/json responses: "204": description: Аннулирован "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Аннулировать QR-код версии документа tags: - bundles /app/v1/bundles/{bundle_id}/changelog/: patch: consumes: - application/json description: Обновляет номер и описание изменений. Отсутствующее description сохраняется, null очищает его. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Изменения in: body name: request required: true schema: $ref: '#/definitions/changelog.UpdateRequest' produces: - application/json responses: "200": description: Обновлённое описание изменений schema: $ref: '#/definitions/changelog.UpdateResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "422": description: Unprocessable Entity schema: $ref: '#/definitions/apperrors.APIError422' summary: Изменить описание изменений версии tags: - changelogs post: consumes: - application/json description: Сохраняет номер и описание изменений версии. Повторное создание возвращает 409. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Номер и описание in: body name: request required: true schema: $ref: '#/definitions/changelog.CreateRequest' produces: - application/json responses: "201": description: Описание изменений версии schema: $ref: '#/definitions/changelog.Response' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' "422": description: Unprocessable Entity schema: $ref: '#/definitions/apperrors.APIError422' summary: Добавить описание изменений версии tags: - changelogs /app/v1/bundles/{bundle_id}/comment: patch: consumes: - application/json description: 'Tri-state тело: строка — установить, null — очистить, отсутствие поля — 400.' parameters: - description: UUID бандла in: path name: bundle_id required: true type: string - description: Комментарий in: body name: request required: true schema: $ref: '#/definitions/bundle.UpdateCommentRequest' produces: - application/json responses: "204": description: Обновлён "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Изменить комментарий бандла tags: - bundles /app/v1/bundles/{bundle_id}/mark: post: consumes: - application/json description: Создаёт новую промаркированную версию по чистому бандлу и определениям марок. parameters: - description: UUID бандла in: path name: bundle_id required: true type: string - description: Определения марок in: body name: request required: true schema: $ref: '#/definitions/bundle.markBundleRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.markBundleResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Нанести марки (QR/штамп/подпись) tags: - bundles /app/v1/bundles/{bundle_id}/presign: get: description: Возвращает хеш файла версии для формирования электронной подписи. Требуется право электронной подписи или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор формата UUID версии документа in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.PresignResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Подготовить версию к электронной подписи tags: - bundles /app/v1/bundles/{bundle_id}/regenerate_marks: put: description: Замещает текущую печатную версию на новую, сгенерированную по состоянию из базы данных parameters: - description: UUID бандла in: path name: bundle_id required: true type: string responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Перегенерация печатной версии документа tags: - bundles /app/v1/bundles/{bundle_id}/restart: post: description: Переигрывает упавшую задачу workflow либо стартует пайплайн, если workflow ещё нет. parameters: - description: UUID бандла in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.RestartResponse' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Уже выполняется (CDE-0011) / завершена (CDE-0012) / нечего перезапускать (CDE-0013) schema: $ref: '#/definitions/apperrors.APIError409' summary: Перезапустить обработку tags: - bundles /app/v1/bundles/{bundle_id}/upload_finish: post: description: Подтверждает завершение загрузки всех файлов версии. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.CompleteUploadResponse' "400": description: Некорректный bundle_id / контент не залит schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Версия не найдена schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку версии документа tags: - bundles /app/v1/bundles/copy: post: consumes: - application/json description: |- Создаёт новый документ на основе выбранной версии. Возвращает идентификатор операции; Prefer: wait заголовок позволяет дождаться результата в течение выбранного количества секунд в том же запросе, вместо того, чтобы отслеживать статус через API асинхронных операций. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.NewDocumentRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать версию в новый документ tags: - copy /app/v1/bundles/copy-to-document: post: consumes: - application/json description: |- Добавляет копию версии в другой документ. Копирование BIM-версий этим способом не поддерживается. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата в том же запросе, если операция не успела завершиться за это время, то возвращает статус создания асинхронной операции, а не ее результат. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.ToDocumentRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать версию в существующий документ tags: - copy /app/v1/dashboards: post: consumes: - application/json parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/document.CreateDashboardRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.CreateDashboardResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Создать дашборд-документ tags: - documents /app/v1/disks: post: consumes: - application/json description: 'Создаёт диск компании: имя и бакет выводятся из компании, создаётся S3-бакет и корневой документ. Доступно только суперюзеру. Ответ упрощённый.' parameters: - description: Параметры диска in: body name: request required: true schema: $ref: '#/definitions/disk.CreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/disk.CreateInternalResponse' "400": description: Компания/админы не найдены schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Требуются права суперюзера schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Бакет уже существует schema: $ref: '#/definitions/apperrors.APIError409' "422": description: Unprocessable Entity schema: $ref: '#/definitions/apperrors.APIError422' "502": description: Каталог пользователей недоступен schema: $ref: '#/definitions/apperrors.APIError502' summary: Создать диск tags: - disks /app/v1/disks/{disk_id}/documents/tree: get: description: 'Минимальная проекция дерева с видимостью запрашивающего. parent_id — дети узла (по умолчанию корень диска); child_id — deep-link: цепочка от корня до узла и дети каждого узла цепочки. Параметры взаимоисключающие.' parameters: - description: ID диска (UUID) in: path name: disk_id required: true type: string - description: Узел, детей которого вернуть in: query name: parent_id type: integer - description: Deep-link до узла in: query name: child_id type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.TreeOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Дерево документации с минимальным набором данных tags: - documents /app/v1/disks/{disk_id}/permission-matrix/grants: post: consumes: - application/json description: 'Прямые permission-строки запрошенных сервисных аккаунтов на запрошенных документах. Доступ: администратор диска или права админа на корне диска. Удалённые, неопубликованные и принадлежащие другому диску документы исключаются. Лимиты: ≤100 SA, ≤1000 id, произведение ≤50000.' parameters: - description: ID диска (UUID) in: path name: disk_id required: true type: string - description: Прямоугольник запроса in: body name: request required: true schema: $ref: '#/definitions/permissionmatrix.GrantsQueryRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/permissionmatrix.GrantsQueryResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Гранты матрицы прав (прямоугольник ids × SA) tags: - permission-matrix /app/v1/documents/: delete: description: ID через запятую в query; недоступные попадают в skipped_ids. parameters: - description: ID через запятую in: query name: document_ids required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.BulkDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' summary: Массовое удаление tags: - documents post: consumes: - application/json description: Для проекта требуется право администрирования родительской папки; для папки — записи или администрирования; для документа — загрузки, записи или администрирования. Также доступно администратору диска. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Параметры документа in: body name: request required: true schema: $ref: '#/definitions/document.CreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.CreateResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Родитель не найден schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Имя занято schema: $ref: '#/definitions/apperrors.APIError409' summary: Создать документ, папку или проект tags: - documents /app/v1/documents/{document_id}: delete: parameters: - description: ID документа in: path name: document_id required: true type: integer produces: - application/json responses: "204": description: Удалён "400": description: Корень диска удалить нельзя schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Удалить документ tags: - documents /app/v1/documents/{document_id}/add_bundle: post: consumes: - application/json description: Привязывает загруженную версию к документу. Требуется право загрузки, записи или администрирования документа; также доступно администратору диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Идентификатор версии документа in: body name: request required: true schema: $ref: '#/definitions/document.AddBundleRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.AddBundleResponse' "400": description: Версия уже привязана к документу или ещё не загружена schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Добавить версию в документ tags: - documents /app/v1/documents/{document_id}/attributes/: put: consumes: - application/json description: 'Заменяет атрибуты документа полным набором из attributes. Новые атрибуты добавляются, значения существующих обновляются, отсутствующие в запросе атрибуты удаляются из активного набора. Атрибуты с пустым списком values также удаляются из активного набора. Передавайте весь желаемый набор атрибутов, а не только изменения. Пустой список attributes: [] очищает все атрибуты документа. Требуется право редактирования или администрирования документа; также доступно администратору соответствующего диска.' parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Полный желаемый набор атрибутов; пустой список очищает все атрибуты документа in: body name: request required: true schema: $ref: '#/definitions/attribute.ReplaceRequest' produces: - application/json responses: "204": description: Набор атрибутов документа полностью заменён "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "422": description: Unprocessable Entity schema: $ref: '#/definitions/apperrors.APIError422' summary: Полностью заменить набор атрибутов документа tags: - attributes /app/v1/documents/{document_id}/move_bundles: patch: consumes: - application/json description: |- Переносит выбранные версии в целевой документ; исходные документы без версий удаляются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: ID целевого документа in: path name: document_id required: true type: integer - description: Идентификаторы версий документа in: body name: request required: true schema: $ref: '#/definitions/move.MoveBundlesRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/move.StartResponse' "400": description: Разные документы-источники / не загружен / гейт обработки schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Перенести версии в другой документ tags: - move /app/v1/documents/{document_id}/permissions/: post: consumes: - application/json description: 'Заменяет права, назначенные непосредственно на документе указанному в service_account получателю, полным набором из permissions. Новые права добавляются, отсутствующие в переданном списке отзываются, совпадающие сохраняются. Передавайте весь желаемый набор прав, а не только изменения. Пустой список permissions: [] отзывает все прямые права этого получателя на документе. Права других получателей и права, унаследованные от родительских папок, не изменяются; поэтому отзыв прямых прав не обязательно лишает получателя доступа. Требуется право управления доступом или администрирования документа; также доступно администратору диска. При управлении доступом без прав администратора можно добавлять и отзывать только те права, которыми обладает пользователь.' parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Получатель и полный желаемый набор прав; пустой список отзывает все его прямые права на документе in: body name: request required: true schema: $ref: '#/definitions/permission.SetRequest' produces: - application/json responses: "204": description: Прямые права получателя заменены переданным набором "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Полностью заменить набор прав на документ для указанного получателя tags: - permissions /app/v1/documents/{document_id}/properties: get: parameters: - description: ID документа in: path name: document_id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.FolderPropertiesOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Свойства документа tags: - documents /app/v1/documents/{document_id}/rename: patch: consumes: - application/json description: Изменяет имя документа или папки. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Новое имя in: body name: request required: true schema: $ref: '#/definitions/document.RenameRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.RenameResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Имя занято в папке schema: $ref: '#/definitions/apperrors.APIError409' summary: Переименовать документ или папку tags: - documents /app/v1/documents/{document_id}/update-path: patch: consumes: - application/json description: Изменяет родительскую папку. Требуется право записи или администрирования исходного документа и право редактирования или администрирования папки назначения; администратор соответствующего диска имеет доступ к объектам этого диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Новый родитель in: body name: request required: true schema: $ref: '#/definitions/document.UpdatePathRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.UpdatePathResponse' "400": description: Между дисками/проектами / в своё поддерево schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Переместить документ или папку tags: - documents /app/v1/documents/{document_id}/workspace: post: description: Создаёт workspace, если отсутствует связь рабочей области и документа в СОД. Требует storage.edit или storage.admin на документе. parameters: - description: ID документа in: path name: document_id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.CreateDocumentWorkspaceResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' "502": description: Bad Gateway schema: $ref: '#/definitions/apperrors.APIError502' summary: Создать рабочую область документа tags: - documents /app/v1/documents/{id}/copy: post: consumes: - application/json description: |- Копирует документ либо папку с содержимым. exclude исключает выбранные ветки. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: ID корня in: path name: id required: true type: integer - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.SubtreeRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать документ или дерево папок tags: - copy /app/v1/documents/bin: delete: parameters: - description: Корневая папка in: query name: parent_id required: true type: integer produces: - application/json responses: "204": description: Очищено "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' summary: Очистить корзину tags: - documents /app/v1/documents/bin/restore: patch: parameters: - description: Корневая папка in: query name: parent_id required: true type: integer produces: - application/json responses: "204": description: Восстановлено "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' summary: Восстановить из корзины tags: - documents /app/v1/documents/check-conflicts: post: consumes: - application/json description: Проверяет наличие одноимённых документов в указанных папках. Требуется авторизация; отдельная проверка прав на документы не выполняется. parameters: - description: Кандидаты in: body name: request required: true schema: $ref: '#/definitions/s32d.CheckConflictsRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.CheckConflictsResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' summary: Проверить конфликты имён tags: - documents /app/v1/documents/copy: post: consumes: - application/json description: |- Копирует выбранные документы и папки с содержимым. Вложенные выбранные элементы копируются вместе с родительскими. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.SelectionRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать выбранные документы и папки tags: - copy /app/v1/documents/copy_structure: post: consumes: - application/json description: Создаёт копию исходной папки и её вложенных папок в месте назначения без файлов. При copy_permissions=true также копирует действующие права доступа, назначенные непосредственно каждой исходной папке. Унаследованные от родителей источника права и права администраторов диска не копируются. По умолчанию копирование прав выключено. Требуется право администрирования источника и назначения; администратор соответствующего диска имеет доступ к объектам этого диска. parameters: - description: Источник и цель in: body name: request required: true schema: $ref: '#/definitions/document.CopyStructureRequest' produces: - application/json responses: "200": description: Скопировано "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' summary: Скопировать структуру папок tags: - documents /app/v1/documents/move: post: consumes: - application/json description: |- Перемещает выбранные элементы, переименовывает или объединяет одноимённые документы согласно запросу. При объединении версии переходят в целевой документ, а исходный документ удаляется. Перенос между дисками или проектами запрещён. Требуется право записи или администрирования источника; право записи, редактирования или администрирования назначения. Для объединения требуется право записи или администрирования целевого документа. Администратор соответствующего диска имеет доступ к объектам этого диска. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Манифест in: body name: request required: true schema: $ref: '#/definitions/move.MoveRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/move.StartResponse' "400": description: Смешение файлов и папок / между дисками/проектами / невалидный union schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликты имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Переместить документы и папки tags: - move /app/v1/documents/public_link/: post: consumes: - application/json description: Создаёт ссылку на последнюю, указанную или последнюю согласованную версию документа. Можно задать срок действия. Требуется право создания публичных ссылок или администрирования документа; также доступно администратору диска. parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/publiclink.CreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/publiclink.CreateOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Создать публичную ссылку tags: - public-links /app/v1/documents/public_link/{id}: delete: parameters: - description: ID ссылки in: path name: id required: true type: integer produces: - application/json responses: "204": description: Удалена "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Удалить публичную ссылку tags: - public-links patch: consumes: - application/json description: Меняет параметры ссылки. Отсутствующие поля сохраняются; expires_at=null отменяет ограничение срока действия. Требуется право создания публичных ссылок или администрирования документа; также доступно администратору диска. parameters: - description: ID ссылки in: path name: id required: true type: string - description: Изменения in: body name: request required: true schema: $ref: '#/definitions/publiclink.UpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/publiclink.UpdateOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Изменить публичную ссылку tags: - public-links /app/v1/documents/update-path: patch: consumes: - application/json description: Изменяет родительскую папку выбранных документов. Документы, для которых недостаточно прав, пропускаются. Требуется право записи или администрирования исходного документа и право редактирования или администрирования папки назначения; администратор соответствующего диска имеет доступ к объектам этого диска. parameters: - description: Список документов и родитель in: body name: request required: true schema: $ref: '#/definitions/document.BulkUpdatePathRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.BulkUpdatePathResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Переместить несколько документов tags: - documents /app/v1/links/: post: consumes: - application/json description: Создаёт ссылку на существующий документ в выбранной папке. Требуется право записи или администрирования и на документ, и на папку назначения; администратор соответствующего диска имеет доступ к объектам этого диска. parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/link.CreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/link.CreateOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Имя занято / линк уже есть schema: $ref: '#/definitions/apperrors.APIError409' "422": description: Цель — линк или папка schema: $ref: '#/definitions/apperrors.APIError422' summary: Создать ссылку на документ в папке tags: - links /app/v1/marks/: get: description: Возвращает последнюю статистику по занимаемому пространству компанией если она есть parameters: - description: Идентификатор компании in: query name: company_id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/sizer.getLatestStatResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Последняя статистика компании по занимаемому пространству если она есть tags: - sizer /app/v1/marks/delete: post: consumes: - application/json description: Удаляет указанные маркировки если они принадлежат одной версии документа parameters: - description: Параметры удаления in: body name: request required: true schema: $ref: '#/definitions/mark.deleteMarksRequest' responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' summary: Удалить маркировки tags: - marks /app/v1/s32d/sessions/: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.ListSessionsResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Список S32D-сессий tags: - s32d post: consumes: - application/json description: Создаёт сессию конвертации архива страниц в документы. parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/s32d.CreateSessionRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.CreateSessionResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Создать S32D-сессию tags: - s32d /app/v1/s32d/sessions/{session_id}: delete: parameters: - description: UUID сессии in: path name: session_id required: true type: string produces: - application/json responses: "204": description: Удалена "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Удалить S32D-сессию tags: - s32d /app/v1/s32d/sessions/{session_id}/archive: put: consumes: - application/octet-stream description: Архив сырым телом (application/octet-stream). parameters: - description: UUID сессии in: path name: session_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.UploadArchiveResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить архив сессии tags: - s32d /app/v1/s32d/sessions/{session_id}/archive/multipart: post: parameters: - description: UUID сессии in: path name: session_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.InitMultipartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Начать multipart-загрузку архива tags: - s32d /app/v1/s32d/sessions/{session_id}/archive/multipart/{upload_id}/complete: post: parameters: - description: UUID сессии in: path name: session_id required: true type: string - description: UUID загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: Завершена "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить multipart-загрузку архива tags: - s32d /app/v1/s32d/sessions/{session_id}/archive/multipart/{upload_id}/parts/{part_number}: put: consumes: - application/octet-stream description: Часть сырым телом. parameters: - description: UUID сессии in: path name: session_id required: true type: string - description: UUID загрузки in: path name: upload_id required: true type: string - description: Номер части in: path name: part_number required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.UploadPartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить часть архива tags: - s32d /app/v1/s32d/sessions/{session_id}/cancel: post: parameters: - description: UUID сессии in: path name: session_id required: true type: string produces: - application/json responses: "200": description: Отменена "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Отменить S32D-сессию tags: - s32d /app/v1/s32d/sessions/{session_id}/process: post: description: Стартует BPMN-процесс разбора загруженного архива. parameters: - description: UUID сессии in: path name: session_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.ProcessSessionResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Запустить обработку сессии tags: - s32d /app/v1/s32d/sessions/{session_id}/retry: post: parameters: - description: UUID сессии in: path name: session_id required: true type: string produces: - application/json responses: "200": description: Перезапущена "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Повторить упавшую сессию tags: - s32d /app/v1/s32d/sessions/{session_id}/status: get: parameters: - description: UUID сессии in: path name: session_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.SessionStatusResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Статус S32D-сессии tags: - s32d /app/v1/uploads/multipart/{upload_id}/{part_number}: post: consumes: - application/octet-stream description: 'Часть файла передаётся в теле запроса с Content-Type: application/octet-stream и Content-Length. Размер каждой части, кроме последней, должен быть не менее 5 МиБ. Диск должен принадлежать одной из компаний пользователя, указанных в токене.' parameters: - description: UUID загрузки in: path name: upload_id required: true type: string - description: Номер части (с 1) in: path name: part_number required: true type: integer - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 in: body name: content required: true schema: type: string - description: Размер тела запроса в байтах format: int64 in: header minimum: 1 name: Content-Length required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.UploadPartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить часть файла tags: - uploads /app/v1/uploads/multipart/{upload_id}/abort: post: description: Отменяет незавершённую загрузку и удаляет её части. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: UUID загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.MultipartFinishedResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Отменить загрузку файла по частям tags: - uploads /app/v1/uploads/multipart/{upload_id}/complete: post: description: Собирает загруженные части в файл версии документа. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: UUID загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.MultipartFinishedResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку файла по частям tags: - uploads /app/v1/workspaces: post: consumes: - application/json description: Создаёт документ типа workspace и воркспейс во внешнем сервисе для набора документов. parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/document.CreateWorkspaceNodeRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.CreateWorkspaceNodeResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Создать workspace-документ tags: - documents /external/v1/async-operations: get: description: Возвращает активные и недавно завершённые операции копирования и переноса. Доступны только собственные операции пользователя. parameters: - description: 'Фильтр по типу: copy|move|move_bundles' in: query name: type type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/move.OperationListResponse' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' summary: Получить список операций tags: - async-operations /external/v1/async-operations/{id}: get: description: Возвращает состояние, прогресс и результаты копирования или переноса. Доступно только создателю операции. parameters: - description: UUID операции in: path name: id required: true type: string - description: 'copy: размер страницы items (default 1000)' in: query name: items_limit type: integer - description: 'copy: смещение' in: query name: items_offset type: integer - description: 'copy: фильтр pending|running|done|skipped|failed' in: query name: items_status type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/move.StatusResponse' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Получить состояние операции tags: - async-operations /external/v1/async-operations/{id}/cancel: post: description: Запрашивает отмену копирования или переноса. Уже выполненные изменения не откатываются. Если копирование достигло этапа публикации результата, возвращается 409. Доступно только создателю операции. parameters: - description: UUID операции in: path name: id required: true type: string produces: - application/json responses: "202": description: Отмена запрошена "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Отменить операцию tags: - async-operations /external/v1/bundles/: post: consumes: - application/json description: Создаёт версию и возвращает параметры для загрузки её файлов. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Параметры версии документа in: body name: request required: true schema: $ref: '#/definitions/bundle.CreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.CreateResponse' "400": description: Некорректное тело / диск не найден schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "422": description: Ключи не подходят типу версии / расширение имени schema: $ref: '#/definitions/apperrors.APIError422' summary: Создать версию документа tags: - bundles /external/v1/bundles/{bundle_id}/{key}/upload_multipart: post: description: Возвращает идентификатор загрузки и адрес для отправки частей в той же версии API. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Ключ файла версии in: path name: key required: true type: string - description: Относительный путь файла в наборе файлов версии; только для типа folder in: query name: path type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.StartMultipartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Начать загрузку файла по частям tags: - uploads /external/v1/bundles/{bundle_id}/{key}/upload_single: post: consumes: - application/octet-stream description: 'Файл передаётся в теле запроса с Content-Type: application/octet-stream и Content-Length. Формат multipart/form-data не поддерживается. Диск должен принадлежать одной из компаний пользователя, указанных в токене.' parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Ключ файла версии in: path name: key required: true type: string - description: Относительный путь файла в наборе файлов версии; только для типа folder in: query name: path type: string - description: Имя файла in: query name: filename type: string - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 in: body name: content required: true schema: type: string - description: Размер тела запроса в байтах format: int64 in: header minimum: 1 name: Content-Length required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.UploadSingleResponse' "400": description: Форма вместо raw / нет Content-Length schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить файл версии одним запросом tags: - uploads /external/v1/bundles/{bundle_id}/author: patch: consumes: - application/json description: Назначает нового автора указанной версии документа. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор UUID формата версии документа in: path name: bundle_id required: true type: string - description: Новый автор in: body name: request required: true schema: $ref: '#/definitions/bundle.ChangeAuthorRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Сменить автора версии документа tags: - bundles /external/v1/bundles/{bundle_id}/mark: post: consumes: - application/json description: Наносит маркировку на существующую или новую версию документа. Достаточно права на один из запрошенных видов маркировки либо права администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор формата UUID версии документа in: path name: bundle_id required: true type: string - description: Определения марок in: body name: request required: true schema: $ref: '#/definitions/bundle.markExternalBundleRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.markBundleResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Нанести QR-код, штамп или электронную подпись tags: - bundles /external/v1/bundles/{bundle_id}/presign: get: description: Возвращает хеш файла версии для формирования электронной подписи. Требуется право электронной подписи или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор формата UUID версии документа in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.PresignResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Подготовить версию к электронной подписи tags: - bundles /external/v1/bundles/{bundle_id}/upload_finish: post: description: Подтверждает завершение загрузки всех файлов версии. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.CompleteUploadResponse' "400": description: Некорректный bundle_id / контент не залит schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Версия не найдена schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку версии документа tags: - bundles /external/v1/bundles/copy: post: consumes: - application/json description: |- Создаёт новый документ на основе выбранной версии. Возвращает идентификатор операции; Prefer: wait заголовок позволяет дождаться результата в течение выбранного количества секунд в том же запросе, вместо того, чтобы отслеживать статус через API асинхронных операций. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.NewDocumentRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать версию в новый документ tags: - copy /external/v1/bundles/copy-to-document: post: consumes: - application/json description: |- Добавляет копию версии в другой документ. Копирование BIM-версий этим способом не поддерживается. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата в том же запросе, если операция не успела завершиться за это время, то возвращает статус создания асинхронной операции, а не ее результат. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.ToDocumentRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать версию в существующий документ tags: - copy /external/v1/documents/: post: consumes: - application/json description: Для проекта требуется право администрирования родительской папки; для папки — записи или администрирования; для документа — загрузки, записи или администрирования. Также доступно администратору диска. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Параметры документа in: body name: request required: true schema: $ref: '#/definitions/document.CreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.CreateResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Родитель не найден schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Имя занято schema: $ref: '#/definitions/apperrors.APIError409' summary: Создать документ, папку или проект tags: - documents /external/v1/documents/{document_id}/add_bundle: post: consumes: - application/json description: Привязывает загруженную версию к документу. Требуется право загрузки, записи или администрирования документа; также доступно администратору диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Идентификатор версии документа in: body name: request required: true schema: $ref: '#/definitions/document.AddBundleRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.AddBundleResponse' "400": description: Версия уже привязана к документу или ещё не загружена schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Добавить версию в документ tags: - documents /external/v1/documents/{document_id}/author: patch: consumes: - application/json description: Назначает нового автора документа; при include_bundles=true также меняет автора всех его версий. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Новый автор; include_bundles=true также меняет автора всех версий in: body name: request required: true schema: $ref: '#/definitions/document.ChangeAuthorRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Сменить автора документа tags: - documents /external/v1/documents/{document_id}/move_bundles: patch: consumes: - application/json description: |- Переносит выбранные версии в целевой документ; исходные документы без версий удаляются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: ID целевого документа in: path name: document_id required: true type: integer - description: Идентификаторы версий документа in: body name: request required: true schema: $ref: '#/definitions/move.MoveBundlesRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/move.StartResponse' "400": description: Разные документы-источники / не загружен / гейт обработки schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Перенести версии в другой документ tags: - move /external/v1/documents/{document_id}/permissions/: post: consumes: - application/json description: 'Заменяет права, назначенные непосредственно на документе указанному в service_account получателю, полным набором из permissions. Новые права добавляются, отсутствующие в переданном списке отзываются, совпадающие сохраняются. Передавайте весь желаемый набор прав, а не только изменения. Пустой список permissions: [] отзывает все прямые права этого получателя на документе. Права других получателей и права, унаследованные от родительских папок, не изменяются; поэтому отзыв прямых прав не обязательно лишает получателя доступа. Требуется право управления доступом или администрирования документа; также доступно администратору диска. При управлении доступом без прав администратора можно добавлять и отзывать только те права, которыми обладает пользователь.' parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Получатель и полный желаемый набор прав; пустой список отзывает все его прямые права на документе in: body name: request required: true schema: $ref: '#/definitions/permission.SetRequest' produces: - application/json responses: "204": description: Прямые права получателя заменены переданным набором "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Полностью заменить набор прав на документ для указанного получателя tags: - permissions /external/v1/documents/{id}/copy: post: consumes: - application/json description: |- Копирует документ либо папку с содержимым. exclude исключает выбранные ветки. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: ID корня in: path name: id required: true type: integer - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.SubtreeRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать документ или дерево папок tags: - copy /external/v1/documents/check-conflicts: post: consumes: - application/json description: Проверяет наличие одноимённых документов в указанных папках. Требуется авторизация; отдельная проверка прав на документы не выполняется. parameters: - description: Кандидаты in: body name: request required: true schema: $ref: '#/definitions/s32d.CheckConflictsRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.CheckConflictsResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' summary: Проверить конфликты имён tags: - documents /external/v1/documents/copy: post: consumes: - application/json description: |- Копирует выбранные документы и папки с содержимым. Вложенные выбранные элементы копируются вместе с родительскими. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.SelectionRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать выбранные документы и папки tags: - copy /external/v1/documents/move: post: consumes: - application/json description: |- Перемещает выбранные элементы, переименовывает или объединяет одноимённые документы согласно запросу. При объединении версии переходят в целевой документ, а исходный документ удаляется. Перенос между дисками или проектами запрещён. Требуется право записи или администрирования источника; право записи, редактирования или администрирования назначения. Для объединения требуется право записи или администрирования целевого документа. Администратор соответствующего диска имеет доступ к объектам этого диска. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Манифест in: body name: request required: true schema: $ref: '#/definitions/move.MoveRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/move.StartResponse' "400": description: Смешение файлов и папок / между дисками/проектами / невалидный union schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликты имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Переместить документы и папки tags: - move /external/v1/uploads/multipart/{upload_id}/{part_number}: post: consumes: - application/octet-stream description: 'Часть файла передаётся в теле запроса с Content-Type: application/octet-stream и Content-Length. Размер каждой части, кроме последней, должен быть не менее 5 МиБ. Диск должен принадлежать одной из компаний пользователя, указанных в токене.' parameters: - description: UUID загрузки in: path name: upload_id required: true type: string - description: Номер части (с 1) in: path name: part_number required: true type: integer - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 in: body name: content required: true schema: type: string - description: Размер тела запроса в байтах format: int64 in: header minimum: 1 name: Content-Length required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.UploadPartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить часть файла tags: - uploads /external/v1/uploads/multipart/{upload_id}/abort: post: description: Отменяет незавершённую загрузку и удаляет её части. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: UUID загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.MultipartFinishedResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Отменить загрузку файла по частям tags: - uploads /external/v1/uploads/multipart/{upload_id}/complete: post: description: Собирает загруженные части в файл версии документа. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: UUID загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.MultipartFinishedResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку файла по частям tags: - uploads /external/v2/async-operations: get: description: Возвращает активные и недавно завершённые операции копирования и переноса. Доступны только собственные операции пользователя. parameters: - description: 'Фильтр по типу: copy|move|move_bundles' in: query name: type type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/move.OperationListResponse' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' summary: Получить список операций tags: - async-operations /external/v2/async-operations/{id}: get: description: Возвращает состояние, прогресс и результаты копирования или переноса. Доступно только создателю операции. parameters: - description: UUID операции in: path name: id required: true type: string - description: 'copy: размер страницы items (default 1000)' in: query name: items_limit type: integer - description: 'copy: смещение' in: query name: items_offset type: integer - description: 'copy: фильтр pending|running|done|skipped|failed' in: query name: items_status type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/move.StatusResponse' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Получить состояние операции tags: - async-operations /external/v2/async-operations/{id}/cancel: post: description: Запрашивает отмену копирования или переноса. Уже выполненные изменения не откатываются. Если копирование достигло этапа публикации результата, возвращается 409. Доступно только создателю операции. parameters: - description: UUID операции in: path name: id required: true type: string produces: - application/json responses: "202": description: Отмена запрошена "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Отменить операцию tags: - async-operations /external/v2/bundles: post: consumes: - application/json description: Создаёт версию и возвращает параметры для загрузки её файлов. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Параметры версии документа in: body name: request required: true schema: $ref: '#/definitions/bundle.CreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.CreateResponse' "400": description: Некорректное тело / диск не найден schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "422": description: Ключи не подходят типу версии / расширение имени schema: $ref: '#/definitions/apperrors.APIError422' summary: Создать версию документа tags: - bundles /external/v2/bundles/{bundle_id}/{key}/upload_multipart: post: description: Возвращает идентификатор загрузки и адрес для отправки частей в той же версии API. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Ключ файла версии in: path name: key required: true type: string - description: Относительный путь файла в наборе файлов версии; только для типа folder in: query name: path type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.StartMultipartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Начать загрузку файла по частям tags: - uploads /external/v2/bundles/{bundle_id}/{key}/upload_single: post: consumes: - application/octet-stream description: 'Файл передаётся в теле запроса с Content-Type: application/octet-stream и Content-Length. Формат multipart/form-data не поддерживается. Диск должен принадлежать одной из компаний пользователя, указанных в токене.' parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Ключ файла версии in: path name: key required: true type: string - description: Относительный путь файла в наборе файлов версии; только для типа folder in: query name: path type: string - description: Имя файла in: query name: filename type: string - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 in: body name: content required: true schema: type: string - description: Размер тела запроса в байтах format: int64 in: header minimum: 1 name: Content-Length required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.UploadSingleResponse' "400": description: Форма вместо raw / нет Content-Length schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить файл версии одним запросом tags: - uploads /external/v2/bundles/{bundle_id}/author: patch: consumes: - application/json description: Назначает нового автора указанной версии документа. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор UUID формата версии документа in: path name: bundle_id required: true type: string - description: Новый автор in: body name: request required: true schema: $ref: '#/definitions/bundle.ChangeAuthorRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Сменить автора версии документа tags: - bundles /external/v2/bundles/{bundle_id}/cancel_qr: post: description: Аннулирует QR-код указанной версии. Требуется право нанесения QR-кода или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string produces: - application/json responses: "204": description: Аннулирован "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Аннулировать QR-код версии документа tags: - bundles /external/v2/bundles/{bundle_id}/changelog: patch: consumes: - application/json description: Обновляет номер и описание изменений. Отсутствующее description сохраняется, null очищает его. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Изменения in: body name: request required: true schema: $ref: '#/definitions/changelog.UpdateRequest' produces: - application/json responses: "200": description: Обновлённое описание изменений schema: $ref: '#/definitions/changelog.UpdateResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "422": description: Unprocessable Entity schema: $ref: '#/definitions/apperrors.APIError422' summary: Изменить описание изменений версии tags: - changelogs post: consumes: - application/json description: Сохраняет номер и описание изменений версии. Повторное создание возвращает 409. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string - description: Номер и описание in: body name: request required: true schema: $ref: '#/definitions/changelog.CreateRequest' produces: - application/json responses: "201": description: Описание изменений версии schema: $ref: '#/definitions/changelog.Response' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' "422": description: Unprocessable Entity schema: $ref: '#/definitions/apperrors.APIError422' summary: Добавить описание изменений версии tags: - changelogs /external/v2/bundles/{bundle_id}/mark: post: consumes: - application/json description: Наносит маркировку на существующую или новую версию документа. Достаточно права на один из запрошенных видов маркировки либо права администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор формата UUID версии документа in: path name: bundle_id required: true type: string - description: Определения марок in: body name: request required: true schema: $ref: '#/definitions/bundle.markExternalBundleRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.markBundleResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Нанести QR-код, штамп или электронную подпись tags: - bundles /external/v2/bundles/{bundle_id}/presign: get: description: Возвращает хеш файла версии для формирования электронной подписи. Требуется право электронной подписи или администрирования документа; также доступно администратору диска. parameters: - description: Идентификатор формата UUID версии документа in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.PresignResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Подготовить версию к электронной подписи tags: - bundles /external/v2/bundles/{bundle_id}/upload_finish: post: description: Подтверждает завершение загрузки всех файлов версии. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Идентификатор версии документа in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.CompleteUploadResponse' "400": description: Некорректный bundle_id / контент не залит schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Версия не найдена schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку версии документа tags: - bundles /external/v2/bundles/copy: post: consumes: - application/json description: |- Создаёт новый документ на основе выбранной версии. Возвращает идентификатор операции; Prefer: wait заголовок позволяет дождаться результата в течение выбранного количества секунд в том же запросе, вместо того, чтобы отслеживать статус через API асинхронных операций. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.NewDocumentRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать версию в новый документ tags: - copy /external/v2/bundles/copy-to-document: post: consumes: - application/json description: |- Добавляет копию версии в другой документ. Копирование BIM-версий этим способом не поддерживается. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата в том же запросе, если операция не успела завершиться за это время, то возвращает статус создания асинхронной операции, а не ее результат. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.ToDocumentRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать версию в существующий документ tags: - copy /external/v2/documents: post: consumes: - application/json description: Для проекта требуется право администрирования родительской папки; для папки — записи или администрирования; для документа — загрузки, записи или администрирования. Также доступно администратору диска. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: Параметры документа in: body name: request required: true schema: $ref: '#/definitions/document.CreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.CreateResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Родитель не найден schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Имя занято schema: $ref: '#/definitions/apperrors.APIError409' summary: Создать документ, папку или проект tags: - documents /external/v2/documents/{document_id}/add_bundle: post: consumes: - application/json description: Привязывает загруженную версию к документу. Требуется право загрузки, записи или администрирования документа; также доступно администратору диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Идентификатор версии документа in: body name: request required: true schema: $ref: '#/definitions/document.AddBundleRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.AddBundleResponse' "400": description: Версия уже привязана к документу или ещё не загружена schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Добавить версию в документ tags: - documents /external/v2/documents/{document_id}/attributes: put: consumes: - application/json description: 'Заменяет атрибуты документа полным набором из attributes. Новые атрибуты добавляются, значения существующих обновляются, отсутствующие в запросе атрибуты удаляются из активного набора. Атрибуты с пустым списком values также удаляются из активного набора. Передавайте весь желаемый набор атрибутов, а не только изменения. Пустой список attributes: [] очищает все атрибуты документа. Требуется право редактирования или администрирования документа; также доступно администратору соответствующего диска.' parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Полный желаемый набор атрибутов; пустой список очищает все атрибуты документа in: body name: request required: true schema: $ref: '#/definitions/attribute.ReplaceRequest' produces: - application/json responses: "204": description: Набор атрибутов документа полностью заменён "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "422": description: Unprocessable Entity schema: $ref: '#/definitions/apperrors.APIError422' summary: Полностью заменить набор атрибутов документа tags: - attributes /external/v2/documents/{document_id}/author: patch: consumes: - application/json description: Назначает нового автора документа; при include_bundles=true также меняет автора всех его версий. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Новый автор; include_bundles=true также меняет автора всех версий in: body name: request required: true schema: $ref: '#/definitions/document.ChangeAuthorRequest' produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Сменить автора документа tags: - documents /external/v2/documents/{document_id}/move_bundles: patch: consumes: - application/json description: |- Переносит выбранные версии в целевой документ; исходные документы без версий удаляются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право записи или администрирования в месте назначения; также доступно администратору соответствующего диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: ID целевого документа in: path name: document_id required: true type: integer - description: Идентификаторы версий документа in: body name: request required: true schema: $ref: '#/definitions/move.MoveBundlesRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/move.StartResponse' "400": description: Разные документы-источники / не загружен / гейт обработки schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Перенести версии в другой документ tags: - move /external/v2/documents/{document_id}/permissions: post: consumes: - application/json description: 'Заменяет права, назначенные непосредственно на документе указанному в service_account получателю, полным набором из permissions. Новые права добавляются, отсутствующие в переданном списке отзываются, совпадающие сохраняются. Передавайте весь желаемый набор прав, а не только изменения. Пустой список permissions: [] отзывает все прямые права этого получателя на документе. Права других получателей и права, унаследованные от родительских папок, не изменяются; поэтому отзыв прямых прав не обязательно лишает получателя доступа. Требуется право управления доступом или администрирования документа; также доступно администратору диска. При управлении доступом без прав администратора можно добавлять и отзывать только те права, которыми обладает пользователь.' parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Получатель и полный желаемый набор прав; пустой список отзывает все его прямые права на документе in: body name: request required: true schema: $ref: '#/definitions/permission.SetRequest' produces: - application/json responses: "204": description: Прямые права получателя заменены переданным набором "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Полностью заменить набор прав на документ для указанного получателя tags: - permissions /external/v2/documents/{document_id}/rename: patch: consumes: - application/json description: Изменяет имя документа или папки. Требуется право редактирования или администрирования документа; также доступно администратору диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Новое имя in: body name: request required: true schema: $ref: '#/definitions/document.RenameRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.RenameResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Имя занято в папке schema: $ref: '#/definitions/apperrors.APIError409' summary: Переименовать документ или папку tags: - documents /external/v2/documents/{document_id}/update-path: patch: consumes: - application/json description: Изменяет родительскую папку. Требуется право записи или администрирования исходного документа и право редактирования или администрирования папки назначения; администратор соответствующего диска имеет доступ к объектам этого диска. parameters: - description: ID документа in: path name: document_id required: true type: integer - description: Новый родитель in: body name: request required: true schema: $ref: '#/definitions/document.UpdatePathRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.UpdatePathResponse' "400": description: Между дисками/проектами / в своё поддерево schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Переместить документ или папку tags: - documents /external/v2/documents/{id}/copy: post: consumes: - application/json description: |- Копирует документ либо папку с содержимым. exclude исключает выбранные ветки. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: ID корня in: path name: id required: true type: integer - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.SubtreeRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать документ или дерево папок tags: - copy /external/v2/documents/check-conflicts: post: consumes: - application/json description: Проверяет наличие одноимённых документов в указанных папках. Требуется авторизация; отдельная проверка прав на документы не выполняется. parameters: - description: Кандидаты in: body name: request required: true schema: $ref: '#/definitions/s32d.CheckConflictsRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/s32d.CheckConflictsResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' summary: Проверить конфликты имён tags: - documents /external/v2/documents/copy: post: consumes: - application/json description: |- Копирует выбранные документы и папки с содержимым. Вложенные выбранные элементы копируются вместе с родительскими. options.conflict_policy определяет поведение при совпадении имени в папке назначения: skip (по умолчанию, в том числе при пустом значении) — пропустить документ или папку целиком со всем содержимым; as_copy — создать копию под первым свободным именем с суффиксом « copy», « copy 2», …, « copy 50». Например, при занятом имени «Проект» копия получит имя «Проект copy». Если все 50 вариантов заняты, элемент также пропускается. При отсутствии совпадения сохраняется исходное имя. Существующие документы и папки не перезаписываются и не объединяются. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Требуется право администрирования исходных документов и право записи или администрирования в папке назначения; администратор соответствующего диска имеет доступ к объектам этого диска. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.SelectionRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликт имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Скопировать выбранные документы и папки tags: - copy /external/v2/documents/copy_structure: post: consumes: - application/json description: Создаёт копию исходной папки и её вложенных папок в месте назначения без файлов. При copy_permissions=true также копирует действующие права доступа, назначенные непосредственно каждой исходной папке. Унаследованные от родителей источника права и права администраторов диска не копируются. По умолчанию копирование прав выключено. Требуется право администрирования источника и назначения; администратор соответствующего диска имеет доступ к объектам этого диска. parameters: - description: Источник и цель in: body name: request required: true schema: $ref: '#/definitions/document.CopyStructureRequest' produces: - application/json responses: "200": description: Скопировано "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' summary: Скопировать структуру папок tags: - documents /external/v2/documents/move: post: consumes: - application/json description: |- Перемещает выбранные элементы, переименовывает или объединяет одноимённые документы согласно запросу. При объединении версии переходят в целевой документ, а исходный документ удаляется. Перенос между дисками или проектами запрещён. Требуется право записи или администрирования источника; право записи, редактирования или администрирования назначения. Для объединения требуется право записи или администрирования целевого документа. Администратор соответствующего диска имеет доступ к объектам этого диска. Возвращает идентификатор операции; Prefer: wait позволяет дождаться результата. Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию. parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Манифест in: body name: request required: true schema: $ref: '#/definitions/move.MoveRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/move.StartResponse' "400": description: Смешение файлов и папок / между дисками/проектами / невалидный union schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Конфликты имён в назначении schema: $ref: '#/definitions/apperrors.APIError409' summary: Переместить документы и папки tags: - move /external/v2/documents/public_link: post: consumes: - application/json description: Создаёт ссылку на последнюю, указанную или последнюю согласованную версию документа. Можно задать срок действия. Требуется право создания публичных ссылок или администрирования документа; также доступно администратору диска. parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/publiclink.CreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/publiclink.CreateOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Создать публичную ссылку tags: - public-links /external/v2/documents/public_link/{id}: patch: consumes: - application/json description: Меняет параметры ссылки. Отсутствующие поля сохраняются; expires_at=null отменяет ограничение срока действия. Требуется право создания публичных ссылок или администрирования документа; также доступно администратору диска. parameters: - description: ID ссылки in: path name: id required: true type: string - description: Изменения in: body name: request required: true schema: $ref: '#/definitions/publiclink.UpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/publiclink.UpdateOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Изменить публичную ссылку tags: - public-links /external/v2/documents/update-path: patch: consumes: - application/json description: Изменяет родительскую папку выбранных документов. Документы, для которых недостаточно прав, пропускаются. Требуется право записи или администрирования исходного документа и право редактирования или администрирования папки назначения; администратор соответствующего диска имеет доступ к объектам этого диска. parameters: - description: Список документов и родитель in: body name: request required: true schema: $ref: '#/definitions/document.BulkUpdatePathRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.BulkUpdatePathResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Переместить несколько документов tags: - documents /external/v2/links: post: consumes: - application/json description: Создаёт ссылку на существующий документ в выбранной папке. Требуется право записи или администрирования и на документ, и на папку назначения; администратор соответствующего диска имеет доступ к объектам этого диска. parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/link.CreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/link.CreateOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "409": description: Имя занято / линк уже есть schema: $ref: '#/definitions/apperrors.APIError409' "422": description: Цель — линк или папка schema: $ref: '#/definitions/apperrors.APIError422' summary: Создать ссылку на документ в папке tags: - links /external/v2/uploads/multipart/{upload_id}/{part_number}: post: consumes: - application/octet-stream description: 'Часть файла передаётся в теле запроса с Content-Type: application/octet-stream и Content-Length. Размер каждой части, кроме последней, должен быть не менее 5 МиБ. Диск должен принадлежать одной из компаний пользователя, указанных в токене.' parameters: - description: UUID загрузки in: path name: upload_id required: true type: string - description: Номер части (с 1) in: path name: part_number required: true type: integer - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 in: body name: content required: true schema: type: string - description: Размер тела запроса в байтах format: int64 in: header minimum: 1 name: Content-Length required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.UploadPartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить часть файла tags: - uploads /external/v2/uploads/multipart/{upload_id}/abort: post: description: Отменяет незавершённую загрузку и удаляет её части. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: UUID загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.MultipartFinishedResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Отменить загрузку файла по частям tags: - uploads /external/v2/uploads/multipart/{upload_id}/complete: post: description: Собирает загруженные части в файл версии документа. Диск должен принадлежать одной из компаний пользователя, указанных в токене. parameters: - description: UUID загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.MultipartFinishedResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "401": description: Unauthorized schema: $ref: '#/definitions/apperrors.APIError401' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку файла по частям tags: - uploads /internal/v1/async-operations: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/move.OperationListResponse' summary: Список async-операций (internal) tags: - async-operations-internal /internal/v1/async-operations/{id}: get: parameters: - description: UUID операции in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/move.StatusResponse' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Статус async-операции (internal) tags: - async-operations-internal /internal/v1/async-operations/{id}/cancel: post: parameters: - description: UUID операции in: path name: id required: true type: string produces: - application/json responses: "202": description: Отмена запрошена "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Отменить async-операцию (internal) tags: - async-operations-internal /internal/v1/bundles/{bundle_id}/{key}/upload_multipart: post: description: 'Легаси-совместимый init: активный незавершённый upload той же цели супersед-ится.' parameters: - description: UUID бандла in: path name: bundle_id required: true type: string - description: Ключ датасорса in: path name: key required: true type: string - description: 'Только для датасорса типа folder (облака точек, тайлы): относительный путь файла внутри него' in: query name: path type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.StartMultipartInternalResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Начать multipart-загрузку (internal) tags: - bundles-internal /internal/v1/bundles/{bundle_id}/attributes: patch: consumes: - application/json description: 'ВНИМАНИЕ, легаси-поведение: заменяет JSONB атрибутов обработки и для геопривязываемых типов (облака точек) ПЕРЕЗАПУСКАЕТ workflow-пайплайн (создаёт tiles-датасорс и переигрывает задачу геопривязки); для остальных типов проставляет workflow_status=skipped. Это не пользовательские атрибуты документа (те — PUT /documents/{id}/attributes).' parameters: - description: UUID бандла in: path name: bundle_id required: true type: string - description: Атрибуты in: body name: request required: true schema: $ref: '#/definitions/bundle.UpdateAttributesRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.UpdateAttributesOutput' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Обновить атрибуты обработки бандла tags: - bundles-internal /internal/v1/bundles/{bundle_id}/copy: post: consumes: - application/json description: 'DEPRECATED. Повторяет семантику старого POST /bundles/{id}/copy: create-vs-reuse по имени, синхронное ожидание до дедлайна; ответ — легаси-тело документа либо заглушка при 202-таймауте. Дельта от легаси: параметр use_source_bundle_as_copied_from не поддержан — bundle_copied_from проставляется ВСЕГДА (маркер происхождения копии; по нему наследуются согласования).' parameters: - description: UUID исходного бандла in: path name: bundle_id required: true type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.LegacyBundleCopyRequest' produces: - application/json responses: "200": description: Легаси-тело документа schema: $ref: '#/definitions/copy.LegacyDocument' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Легаси-копия бандла (compat-шим) tags: - copy-internal /internal/v1/bundles/{bundle_id}/datasources/{key}/ensure: post: consumes: - application/json description: 'Создаёт запись датасорса, если её нет; существующей обновляет имя. Идемпотентно. Основной потребитель — filestreamer (documentation-api): его upload-хендлеры регистрируют датасорс через этот эндпоинт, чтобы запись и outbox-событие происходили в cde-api.' parameters: - description: UUID бандла in: path name: bundle_id required: true type: string - description: Ключ датасорса in: path name: key required: true type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/bundle.EnsureDataSourceRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.EnsureDataSourceResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Гарантировать датасорс по ключу tags: - bundles-internal /internal/v1/bundles/{bundle_id}/workflow: post: consumes: - application/json description: 'Специфичный эндпоинт сценария «Сравнение» (deviation): регистрирует workflow, созданный внешне в workflows-api, за бандлом и публикует workflow.assigned. Не общий механизм привязки произвольных workflow.' parameters: - description: UUID бандла in: path name: bundle_id required: true type: string - description: ID workflow in: body name: request required: true schema: $ref: '#/definitions/bundle.AddWorkflowRequest' produces: - application/json responses: "204": description: Привязан "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Привязать deviation-workflow к бандлу tags: - bundles-internal /internal/v1/bundles/copy: post: consumes: - application/json description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.NewDocumentRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Копия версии в новый документ (internal) tags: - copy-internal /internal/v1/bundles/copy-to-document: post: consumes: - application/json description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.ToDocumentRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Копия версии в существующий документ (internal) tags: - copy-internal /internal/v1/disks: post: consumes: - application/json description: 'Создаёт диск: имя и бакет выводятся из компании, создаётся S3-бакет и корневой документ.' parameters: - description: Параметры диска in: body name: request required: true schema: $ref: '#/definitions/disk.CreateInternalRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/disk.CreateInternalResponse' "400": description: Компания/админы не найдены schema: $ref: '#/definitions/apperrors.APIError400' "409": description: Бакет уже существует schema: $ref: '#/definitions/apperrors.APIError409' "422": description: Unprocessable Entity schema: $ref: '#/definitions/apperrors.APIError422' "502": description: Каталог пользователей недоступен schema: $ref: '#/definitions/apperrors.APIError502' summary: Создать диск (internal) tags: - disks-internal /internal/v1/documents/: post: consumes: - application/json description: 'Легаси-совместимое внутреннее создание: документ + скелет бандла с датасорсами по типу.' parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/document.CreateInternalRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.CreateInternalResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Создать документ (internal) tags: - documents-internal /internal/v1/documents/{document_id}: delete: parameters: - description: ID документа in: path name: document_id required: true type: integer produces: - application/json responses: "200": description: Удалён "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Удалить документ (internal) tags: - documents-internal /internal/v1/documents/{document_id}/move_bundles: patch: consumes: - application/json description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: ID целевого документа in: path name: document_id required: true type: integer - description: Идентификаторы версий документа in: body name: request required: true schema: $ref: '#/definitions/move.MoveBundlesRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/move.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Перенести версии (internal) tags: - move-internal /internal/v1/documents/{id}/copy: post: consumes: - application/json description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' parameters: - description: ID корня in: path name: id required: true type: integer - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.SubtreeRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Копия поддерева (internal) tags: - copy-internal /internal/v1/documents/copy: post: consumes: - application/json description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/copy.SelectionRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/copy.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Копия выбранных узлов (internal) tags: - copy-internal /internal/v1/documents/move: post: consumes: - application/json description: 'Для ожидания результата в том же запросе передайте заголовок Prefer: wait=N, например Prefer: wait=10 (N — число секунд, максимум 30). Если за это время получен итоговый статус операции, возвращается HTTP 200 с её результатом. HTTP 200 сам по себе не означает успешного выполнения: проверьте поле status и сведения об ошибках в теле ответа. Без ожидания или если за отведённое время итоговый результат не получен возвращается HTTP 202 с operation_id, без результата операции; дальнейший статус проверяйте через GET /async-operations/{id} в том же контуре и версии API. Истечение времени ожидания не отменяет операцию.' parameters: - description: wait=N — ожидать результат N секунд, максимум 30; например wait=10. HTTP 200 — итоговый статус в теле ответа; HTTP 202 — operation_id для дальнейшей проверки статуса in: header name: Prefer type: string - description: Манифест in: body name: request required: true schema: $ref: '#/definitions/move.MoveRequest' produces: - application/json responses: "200": description: 'Итоговый статус получен за время Prefer: wait=N. Результат операции и ошибки смотрите в теле ответа; HTTP 200 не гарантирует успешного выполнения' schema: $ref: '#/definitions/move.StatusResponse' "202": description: 'Операция принята: возвращается operation_id без итогового результата. Ожидание не запрошено либо итоговый результат не получен за отведённое время' schema: $ref: '#/definitions/move.StartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Переместить документы (internal) tags: - move-internal /internal/v1/documents/resolve_relative_path: post: consumes: - application/json description: 'Используется flows-backend в согласованиях: для каждого документа находит (или создаёт при should_folder_be_created) папку по relative_path относительно папки документа — туда раскладываются согласованные документы.' parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/document.ResolveRelativePathRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.ResolveRelativePathResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "403": description: Forbidden schema: $ref: '#/definitions/apperrors.APIError403' summary: Резолв относительного пути tags: - documents-internal /internal/v1/documents/super_create: post: consumes: - application/json description: Документ + N бандлов, сразу помеченных uploaded (контент уже в S3). Админ-гейт остаётся на doc-api. parameters: - description: Параметры in: body name: request required: true schema: $ref: '#/definitions/document.SuperCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/document.SuperCreateResponse' "400": description: Гейты структуры / диск не найден / расширения schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' "409": description: Conflict schema: $ref: '#/definitions/apperrors.APIError409' summary: Super create (internal) tags: - documents-internal /internal/v1/pages: post: consumes: - application/json description: Регистрирует страницу и тамбнейл, произведённые пайплайном обработки. parameters: - description: Параметры страницы in: body name: request required: true schema: $ref: '#/definitions/page.CreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/page.CreateResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Создать страницу (internal) tags: - pages-internal /internal/v1/s3/file: delete: description: Удаляет объект и связанную датасорс-запись по пути bucket/key (легаси DELETE /s3/file). parameters: - description: 'Путь объекта: bucket/key' in: query name: path required: true type: string produces: - application/json responses: "204": description: Удалён "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Удалить файл из S3 tags: - bundles-internal /internal/v1/upload_finish/bundles/{bundle_id}: post: description: 'Внутренний finish: пересчитывает размер по фактическим объектам; вариант с /{key} — по одному датасорсу.' parameters: - description: UUID бандла in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.CompleteUploadResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку (internal) tags: - bundles-internal /internal/v1/upload_finish/bundles/{bundle_id}/{key}: post: description: 'Внутренний finish: пересчитывает размер по фактическим объектам; вариант с /{key} — по одному датасорсу.' parameters: - description: UUID бандла in: path name: bundle_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/bundle.CompleteUploadResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку (internal) tags: - bundles-internal /internal/v1/uploads/multipart/{upload_id}/{part_number}: post: consumes: - application/octet-stream description: 'Часть файла передаётся сырым телом с Content-Type: application/octet-stream и Content-Length. Размер каждой части, кроме последней, должен быть не менее 5 МиБ. Доверенный внутренний маршрут без авторизации пользователя.' parameters: - description: Идентификатор загрузки in: path name: upload_id required: true type: string - description: Номер части (с 1) in: path name: part_number required: true type: integer - description: Байты файла в теле запроса, без JSON-обёртки и кодирования Base64 in: body name: content required: true schema: type: string - description: Размер тела запроса в байтах format: int64 in: header minimum: 1 name: Content-Length required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.UploadPartResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Загрузить часть файла tags: - uploads /internal/v1/uploads/multipart/{upload_id}/abort: post: description: Отменяет незавершённую загрузку и удаляет её части. Доверенный внутренний маршрут без авторизации пользователя. parameters: - description: Идентификатор загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.MultipartFinishedResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Отменить загрузку файла по частям tags: - uploads /internal/v1/uploads/multipart/{upload_id}/complete: post: description: Собирает загруженные части в файл версии документа. Доверенный внутренний маршрут без авторизации пользователя. parameters: - description: Идентификатор загрузки in: path name: upload_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/upload.MultipartFinishedResponse' "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Завершить загрузку файла по частям tags: - uploads /internal/v1/workflows/{wf_id}: post: consumes: - application/json description: 'Колбэк последней задачи пайплайна, вызывается только при успехе: помечает workflow и его бандл done (write-side кэш статуса; события не публикуются — статус workflow принадлежит workflows-api).' parameters: - description: UUID workflow in: path name: wf_id required: true type: string produces: - application/json responses: "200": description: Принято "400": description: Bad Request schema: $ref: '#/definitions/apperrors.APIError400' "404": description: Not Found schema: $ref: '#/definitions/apperrors.APIError404' summary: Финализация workflow (internal) tags: - workflows-internal securityDefinitions: UserToken: in: header name: Authorization type: apiKey swagger: "2.0"