Мета-информация (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 Описание

METADATA

/rest/v1/fs/targets/<target>!metadata

Мета-информация о разделе

METADATA

/rest/v1/fs/targets/<target>/<path>/!metadata

Мета-информация о каталоге

METADATA

/rest/v1/fs/targets/<target>/<path>!metadata

Мета-информация о файле


Мета-информация о файле

Особенности

  • Без параметра hasha содержимое файла не читается, поэтому запрос дёшев независимо от размера файла.

  • Вычисление контрольной суммы требует чтения файла целиком. На файлах в сотни мегабайт запрос становится дорогим, поэтому параметр следует указывать только по явной необходимости — например, когда пользователь сам запросил сверку файла.

Запрос

Table 1. Параметры запроса
Имя Тип Описание

hasha

bool

Добавить в ответ контрольную сумму содержимого. По умолчанию false.

Пример запроса
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"
}
Пример ответа с параметром hasha=true
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 учитывает и тип домена, и ролевые ограничения, и то, что корень раздела удалить нельзя. По нему приложение решает, показывать ли действие удаления.

Запрос

Table 2. Параметры запроса
Имя Тип Описание

deep

bool

Добавить рекурсивную сводку по всему поддереву. По умолчанию false.

Пример запроса
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 }
}
Пример ответа с параметром deep=true
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 }
}