Каталог данных домена в каталоге межсерверной синхронизации (syncroot/domain)
- Обзор
- Запросы
- Заливка группы файлов
- Получение списка файлов
- Скачивание файла
- Перезаливка существующего файла
- Удаление файла
- Получение мета-информации о файле
- Получение мета-информации о файле (METADATA)
- Перемещение и переименование файла
- Операции над каталогами
- Скачивание и заливка каталога архивом
- Операции над корнем раздела
- См. также
Обзор
Предоставляет административный доступ к файлам и каталогам, размещаемым в каталоге данных текущего домена внутри каталога межсерверной синхронизации :SYNC.
Домен берётся из сессии и в пути не указывается. Каждый домен управляет только своим каталогом, мастер-домен — своим собственным. Попасть в каталог данных другого домена через этот эндпойнт нельзя. Различные разделы этого каталога (files, token, selector, waitonhold_domain и т.д.) имеют отдельные API эндпойнты, а данный эндпойнт позволяет оперировать произвольными путями внутри каталога данных домена.
Удаление и очистка в этом разделе затрагивают рабочие данные домена целиком. В описании разделов раздел помечен признаком "caution": "high", и приложения перед такими операциями запрашивают дополнительное подтверждение.
Каталог располагается в категории автоматически синхронизирующихся каталогов :SYNC.
Доступ к каталогу из сценариев происходит с помощью префикса категории каталогов ":SYNC_DOMAIN_DATA/".
Доступно в любых доменах.
Запросы
| HTTP verb | Endpoint | Описание |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Заливка группы файлов
Загрузка в коллекцию производится с помощью Content-Type: multipart/formdata.
В запросе может быть один или несколько файлов.
Файлы размещаются под именами, указанными в заголовках Content-Disposition каждой части.
Если файл с указанным именем уже существует, то он не сохраняется и возвращает ошибку. В зависимости от Content-Type и наличия успешно размещенных файлов в запросе может быть возвращен неудачный HTTP-ответ, либо информация о неудаче в теле HTTP-ответа 200 OK.
Каталог, в который производится заливка, должен существовать: при обращении к несуществующему каталогу возвращается 405 Method Not Allowed.
Чтобы разместить файл вместе с недостающими каталогами пути, используется метод PUT.
Запрос
POST /rest/v1/fs/targets/syncroot/domain HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e
-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="filename"; filename="3.txt"
Content-Transfer-Encoding: binary
BINARY BODY OF '3.txt'
-----------boundary_69df8120352a996e--
Получение списка файлов
Запрос
| Имя | Тип | Описание |
|---|---|---|
|
|
Фильтр по значениям полей. |
|
|
Список полей для вывода. Доступные поля для выдачи: name, size, last_modified. |
|
|
Смещение в списке файлов, подлежащих выдаче. |
|
|
Максимальное количество файлов в списке. |
|
|
Порядок сортировки файлов в списке. |
|
|
При значении Считается после применения фильтра: с параметром |
GET /rest/v1/fs/targets/syncroot/domain HTTP/1.1
Ответ
Время в поле last_modified возвращается в UTC.
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
{
"last_modified" : "2024-12-27 15:25:59",
"name" : "3.txt",
"size" : 4
},
{
"last_modified" : "2024-08-01 21:09:51",
"name" : "a.wav",
"size" : 93228
},
{
"last_modified" : "2026-09-16 20:21:39",
"name" : "alertcalls",
"type" : "directory"
},
{
"last_modified" : "2024-06-18 08:25:07",
"name" : "cpd",
"type" : "directory"
},
{
"last_modified" : "2026-09-17 13:27:24",
"name" : "files",
"type" : "directory"
},
{
"last_modified" : "2023-04-25 12:48:13",
"name" : "selectors",
"type" : "directory"
},
{
"last_modified" : "2023-07-31 10:02:24",
"name" : "tokens",
"type" : "directory"
},
{
"last_modified" : "2025-12-04 12:21:31",
"name" : "waitonhold",
"type" : "directory"
}
]
Скачивание файла
Запрос
| Имя | Тип | Описание |
|---|---|---|
|
|
Тип выдачи. По умолчанию
|
GET /rest/v1/fs/targets/syncroot/domain/3.txt?attachment=true HTTP/1.1
Перезаливка существующего файла
Производит замену файла.
Загрузка одного файла производится либо с помощью Content-Type: multipart/formdata,
либо с произвольным Content-Type не являющимся мультипартом.
Если загрузка происходит с Content-Type: multipart/formdata,
то будет сохранён только первый файл (первая часть имеющая поле filename в заголовке
Content-Disposition), а само название файла будет проигнорировано.
Имя файла всегда берётся из URL.
Если файла по указанному пути нет, он создаётся вместе с недостающими каталогами пути.
Запрос с Content-Type: application/octet-stream и нулевой длиной тела создаёт пустой файл.
Запрос без тела, без Content-Type и без заголовка X-Era-Source отвергается с кодом 400:
по такому запросу невозможно определить намерение.
Метод PUT имеет ещё одно значение, отличающееся формой запроса: Перемещение и переименование файла.
В разделах с вложенной структурой PUT по пути с завершающим слешем создаёт каталог, см. Операции над каталогами.
Запрос
PUT /rest/v1/fs/targets/syncroot/domain/3.txt HTTP/1.1
Content-Type: application/octet-stream
BINARY BODY OF '3.txt'
PUT /rest/v1/fs/targets/syncroot/domain/3.txt HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e
-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="3.txt"; filename="3.txt"
Content-Transfer-Encoding: binary
BINARY BODY OF '3.txt'
-----------boundary_69df8120352a996e--
Получение мета-информации о файле
Возвращает мета-информацию о файле, содержащую в том числе размер в заголовке Content-Length.
Запрос
| Имя | Тип | Описание |
|---|---|---|
|
|
Тип выдачи. По умолчанию
|
HEAD /rest/v1/fs/targets/syncroot/domain/3.txt?attachment=true HTTP/1.1
Получение мета-информации о файле (METADATA)
Возвращает размер и время изменения файла в формате JSON. В отличие от метода HEAD,
сведения приходят в теле ответа и не требуют разбора заголовков.
Метод нестандартный и принимается в двух равнозначных формах: собственно методом
(METADATA /rest/v1/fs/targets/syncroot/domain/3.txt) и методом POST по пути с суффиксом
(POST /rest/v1/fs/targets/syncroot/domain/3.txt!metadata). Подробно — Нестандартные методы в пути.
Запрос не должен содержать тела ни в одной из форм: запрос с телом трактуется как заливка файла.
Особенности
-
Время в поле
mtimeвозвращается в UTC в формате RFC 3339. -
Контрольная сумма содержимого возвращается только по запросу с параметром
hasha=true. Без параметра содержимое файла не читается, поэтому запрос дёшев независимо от размера файла.
Запрос
| Имя | Тип | Описание |
|---|---|---|
|
|
Добавить в ответ контрольную сумму содержимого. По умолчанию Вычисление требует чтения файла целиком, поэтому на больших файлах параметр следует указывать только по явной необходимости. |
POST /rest/v1/fs/targets/syncroot/domain/3.txt!metadata HTTP/1.1
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"size" : 3836,
"mtime" : "2026-07-01T16:47:31Z"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"size" : 3836,
"mtime" : "2026-07-01T16:47:31Z",
"hasha" : "md5;9f86d081884c7d659a2feaa0c55ad015"
}
Перемещение и переименование файла
Перемещает или переименовывает файл в пределах раздела, не передавая его содержимое.
Выполняется методом PUT по пути назначения с заголовком X-Era-Source и пустым телом.
В заголовке указывается путь источника относительно корня раздела.
Операции над каталогами
Раздел поддерживает вложенные каталоги произвольной глубины, поэтому в нём доступны операции над каталогами.
| Запрос | Действие |
|---|---|
|
Создать каталог. Путь указывается с завершающим слешем, тело запроса отсутствует. |
|
Удалить пустой каталог. |
|
Удалить каталог вместе с содержимым. Требует подтверждения ключом. |
|
Очистить каталог, оставив его самого. Требует подтверждения ключом. |
Удаление и очистка непустого каталога выполняются двумя запросами: первый ничего не удаляет и возвращает ключ подтверждения вместе с объёмом предстоящей операции, второй выполняет операцию с этим ключом.
Корень раздела удалить нельзя (405), очистить — можно.
Подробно, вместе с описанием ключа подтверждения и ограничений: Операции над каталогами.
Скачивание и заливка каталога архивом
| Запрос | Действие |
|---|---|
|
Скачать каталог одним архивом. |
|
Залить в каталог структуру файлов из архива. |
Архив, содержащий выход за свои пределы — записи с .., абсолютные пути или символические
ссылки наружу, — отвергается целиком с кодом 422.
Подробно: Скачивание и заливка каталога архивом.
Операции над корнем раздела
Помимо перечисления и заливки файлов, корень раздела поддерживает два метода.
| Запрос | Действие |
|---|---|
|
Описание раздела и сведения о его корне: поддерживаемые операции, ограничения, число элементов верхнего уровня. |
|
Очистка раздела: удаляется всё содержимое, сам раздел остаётся. Операция рекурсивна и требует подтверждения ключом. |
Удалить раздел нельзя: DELETE по пути корня всегда возвращает 405.
Подробно: Мета-информация и Операции над каталогами.
См. также
-
Общая часть каталога синхронизации: syncroot/common.