Мета-информация (METADATA)
Обзор
Метод METADATA возвращает сведения об объекте в формате JSON: о файле, о каталоге либо о разделе целиком. В отличие от метода HEAD, сведения приходят в теле ответа и не требуют разбора заголовков, а для каталога и раздела HEAD вовсе не применим.
Время во всех ответах возвращается в UTC.
Форма запроса
METADATA — нестандартный метод HTTP, и платформа принимает его в двух равнозначных формах.
Методом METADATA напрямую:
METADATA /rest/v1/fs/targets/files/report.pdf HTTP/1.1
Методом POST по пути с суффиксом !<метод>:
POST /rest/v1/fs/targets/files/report.pdf!metadata HTTP/1.1
Вторая форма пригодна там, где клиент или промежуточный узел не пропускает нестандартные методы. Суффикс работает на любой глубине вложенности.
Запрос не должен содержать тела ни в одной из форм: запрос с телом трактуется как заливка файла и завершается ошибкой 415 Unsupported Media Type.
Обе формы применимы и к остальным нестандартным методам разделов — CLEAR, DOWNLOADZIP, UPLOADZIP.
Запросы
| HTTP verb | Endpoint | Описание |
|---|---|---|
|
|
|
|
|
|
|
|
Мета-информация о файле
Особенности
-
Без параметра
hashaсодержимое файла не читается, поэтому запрос дёшев независимо от размера файла. -
Вычисление контрольной суммы требует чтения файла целиком. На файлах в сотни мегабайт запрос становится дорогим, поэтому параметр следует указывать только по явной необходимости — например, когда пользователь сам запросил сверку файла.
Запрос
| Имя | Тип | Описание |
|---|---|---|
|
|
Добавить в ответ контрольную сумму содержимого. По умолчанию |
POST /rest/v1/fs/targets/files/certificates/x.local.pem!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"
}
Мета-информация о каталоге
Применимо к разделам со структурой tree.
Особенности
-
Поле
entriesсчитается по текущему уровню каталога, без обхода вложенных: один проход по каталогу, стоимость не зависит от глубины дерева. -
Рекурсивная сводка возвращается только по запросу с параметром
deep=true. -
Рекурсивный обход ограничен теми же величинами, что и рекурсивное удаление: 10 000 файлов и 10 ГБ. При достижении границы обход прекращается, возвращаются накопленные значения и признак
truncated. Значение"truncated": trueозначает, что каталог больше границы, и рекурсивные операции над ним выполнить не удастся. -
Поле
removableучитывает и тип домена, и ролевые ограничения, и то, что корень раздела удалить нельзя. По нему приложение решает, показывать ли действие удаления.
Запрос
| Имя | Тип | Описание |
|---|---|---|
|
|
Добавить рекурсивную сводку по всему поддереву. По умолчанию |
POST /rest/v1/fs/targets/files/certificates/!metadata HTTP/1.1
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"type" : "directory",
"path" : "certificates",
"last_modified" : "2026-07-20T10:21:06Z",
"entries" : { "files" : 128, "directories" : 3 },
"writable" : true,
"removable" : true,
"macro" : null,
"public_url" : null,
"limits" : { "max_file_size" : 536870912 }
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"type" : "directory",
"path" : "certificates",
"last_modified" : "2026-07-20T10:21:06Z",
"entries" : { "files" : 128, "directories" : 3 },
"total" : { "files" : 4120, "directories" : 87, "bytes" : 1841207332, "truncated" : false },
"writable" : true,
"removable" : true,
"limits" : { "max_file_size" : 536870912 }
}
Мета-информация о разделе
Возвращает описание раздела — то же, что приходит в составе описания разделов, — дополненное сведениями о текущем состоянии корня.
Запрос
POST /rest/v1/fs/targets/files!metadata HTTP/1.1
Для разделов с параметром в пути значение параметра указывается перед суффиксом:
POST /rest/v1/fs/targets/cpd_templates/ivr!metadata HTTP/1.1
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"name" : "files",
"url" : "/rest/v1/fs/targets/files",
"title" : "Domain files",
"structure" : "tree",
"methods" : {
"collection" : [ "GET", "POST", "METADATA", "CLEAR", "DOWNLOADZIP", "UPLOADZIP" ],
"item" : [ "GET", "HEAD", "POST", "PUT", "DELETE", "METADATA" ],
"directory" : [ "GET", "METADATA", "PUT", "DELETE", "CLEAR", "DOWNLOADZIP", "UPLOADZIP" ]
},
"writable" : true,
"exists" : true,
"entries" : { "files" : 12, "directories" : 4 }
}