iac/apps/documentations/cde-api.openapi.yaml
2026-10-28 12:30:02 +02:00

8342 lines
312 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"