Хранилище файлов¶
Хранилище имеющееся в вашем распоряжении позволяет: - хранить в нём изображения и файлы на которые вы ссылаетесь из писем или прикрепляете к ним (хранилище картинок image) - получать от системы отчёты которые вы заказывали с параметром "сохранить на сервере" (хранилище отчётов report) - загружать файлы данных для импорта и Экспресс-Выпуска в недоступное публично место (хранилище загрузок upload) - получать бухгалтерские документы по аккаунту (хранилище документов pase)
Доступ к Хранилищу осуществляется по данному api, по обычному ftp, по ftps, по sftp, по ссылкам со схемой rfs://
Для доступа по api используйте описанные ниже методы.
Доступ по ftps/sftp осуществляется через ftps.sendsay.ru. Данные для доступа необходимо получить в Службе поддержки.
Хранилище файлов также публично доступно через веб, что бы на него можно было ссылаться из писем.
К хранилищу отчётов, документов и хранилищу загрузок публичного доступа по http/ftp/ftps/sftp нет.
К хранилищу загрузок есть дополнительно доступ по rfs://upload/путь-до-файла, что бы на загруженные файлы можно было использовать при импорте списков и рассылке Экспресс-выпуска
Параметр domain указывает на используемую область - хранилище картинок (image), хранилище отчётов (report), хранилище загрузок (upload), хранилище бухгалтерских документов (pase)
Параметр path используемый в вызовах это абсолютный путь по хранилищу начинающийся со слэша.
Доступ к каждой области ограничен правами которые изначально есть все у основного логина аккаунта. А дополнительным логинам вы их можете назначить сами в зависимости от их назначения. Это удобнее делать через интерфейс, но возможно и через api.
Название права строится по схеме "api.rfs/
Права доступа не учитываются при работе через доступ ftps/sftp получаемый в Службе Поддержки.
Список файлов¶
Если path указывает на файл, то возвращается информация только о нём - можно использовать для проверки существования этого файла.
Если path указывает на каталог, то возвращается список его файлов и подкаталогов.
{
"action" : "rfs.list"
-- или список файлов
,"domain" : "image|report|upload|pase"
,"path" : "полный путь - каталог или файл"
-- или список доступных хранилищ
,"domain" : ""
,"path" : "/"
}
ответ
{
<общие поля>
,"type" : null | "dir" | "file" -- тип того, на что показывал path
-- null - нет такого каталога или файла
-- "dir" - это каталог
-- "file" - это файл
-- для type = null - отсутствует
-- для type = dir - список файлов в каталоге
-- для type = file - список из одной записи описывающий запрошенный файл
,"file" : [
{
"name" : название
,"path" : полный путь c названием
,"size" : размер
,"date" : дата изменения (в формате yyyy-mm-dd hh:mm:ss)
,"url" : публичная веб-ссылка для доступа. только если domain=image
}
.........
]
-- только для type = dir -- список подкаталогов
,"dir" : [
{
"name" : название
,"path" : полный путь с названием
,"date" : дата изменения (в формате yyyy-mm-dd hh:mm:ss)
,"url" : публичная веб-ссылка для доступа. только если domain=image
}
.........
]
}
Переименовать файл или каталог¶
Вызов позволяет переименовать файл или каталог.
Путь path.to должен отсутствовать.
{
"action" : "rfs.rename"
,"domain" : "image|upload"
-- единичное переименование
,"path" : "полный путь который переименовывается"
,"path.to" : "полный путь в который переименовывается"
-- несколько переименований за один вызов. действия независимые.
,"list" : [ -- до 100 элементов
{ "path" : "..." ,"path.to" : "..." }
,{ "path" : "..." ,"path.to" : "..." }
,{ "path" : "..." ,"path.to" : "..." }
...
]
}
{
-- при единичном переименовании
<общие поля>
,"name" : новое название файла
,"path" : новый полный путь до файла
,"url" : новая публичная веб-ссылка для доступа. только если domain=image
-- при использовании list
<общие поля>
,"list" : [
{ ответ для первого элемента списка }
,{ ответ для второго элемента списка }
,{ ответ для третьего элемента списка }
]
}
Получить файл¶
{
"action" : "rfs.file.get"
,"domain" : "image|report|upload|pase"
,"path" : "полный путь с названием файла"
,"encoding" : "желаемая кодировка данных в ответе" -- пусто или не указана - обычная Unicode/UTF-8
-- base64 - содержимое будет возвращено в base64
}
ответ
{
<общие поля>
,"data" : "содержимое файла" -- предполагается что файл двоичный и :
-- без заказа кодировки значение октетов 0x00 - 0xFF отображено как U+0000-U+00FF
-- при заказе base64 данные будет возвращены в base64
,"name" : название файла
,"path" : полный путь до файла
,"url" : публичная веб-ссылка для доступа. только если domain=image
,"size" : размер
,"date" : дата изменения (yyyy-mm-dd hh:mm:ss)
}
Записать файл¶
Только для domain = image и upload
{
"action" : "rfs.file.put"
,"domain" : "image|upload"
,"path" : "полный путь с названием файла (отсутствующие попутные подкаталоги НЕ создаются автоматически)"
,"data" : "содержимое файла" -- предполагается что файл двоичный и:
-- без указания кодировки значение октетов 0x00 - 0xFF заданы как U+0000-U+00FF
-- при указании base64 данные считаются закодированы в base64
,"encoding" : "кодировка данных" -- пусто или не указана - обычная Unicode/UTF-8
-- base64 - содержимое data закодировано в base64
,"append" : 0|1 -- дописать данные в файл а не заменить его содержимое. только для upload
,"error_if_exists" : 0|1 -- не перезаписывать/не дописывать если файл существует
}
ответ
{
<общие поля>
,"url" : публичная веб-ссылка для доступа. только если domain=image
,"name" : название файла
,"path" : полный путь до файла
,"size" : размер
,"date" : дата изменения (yyyy-mm-dd hh:mm:ss)
}
Удалить файл¶
{
"action" : "rfs.file.delete"
,"domain" : "image|report|upload"
-- единичное удаление
,"path" : "полный путь с названием файла"
-- несколько удалений за один вызов. действия независимые.
,"list" : [ -- до 100 элементов
"path"
,"path"
,"path"
...
]
}
ответ
{
-- при единичном удалении
<общие поля>
-- при использовании list
<общие поля>
,"list" : [
{ ответ для первого элемента списка }
,{ ответ для второго элемента списка }
,{ ответ для третьего элемента списка }
]
}
Создать каталог¶
Только для domain = image и upload
{
"action" : "rfs.dir.make"
,"domain" : "image|upload"
,"name" : название каталога
,"path" : полный путь с названием каталога (отсутствующие попутные подкаталоги создаются автоматически)"
,"url" : публичная веб-ссылка для доступа. только если domain=image
}
ответ
Удалить каталог¶
Только пустой каталог.
{
"action" : "rfs.dir.delete"
,"domain" : "image|report|upload"
-- единичное удаление
,"path" : "полный путь с названием каталога"
-- несколько удалений за один вызов. действия независимые.
,"list" : [ -- до 100 элементов
"path"
,"path"
,"path"
...
]
}
ответ