Перейти к содержанию

Хранилище файлов

Хранилище имеющееся в вашем распоряжении позволяет: - хранить в нём изображения и файлы на которые вы ссылаетесь из писем или прикрепляете к ним (хранилище картинок 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/". Например "api.rfs/report". Право доступа регулирует все действия. При его наличии возможно совершать любые действия в соответствующей области. При отсутствии - никаких.

Права доступа не учитываются при работе через доступ 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
}

ответ

{

 <общие поля>

 ,"url" : публичная веб-ссылка для доступа. только если domain=image

}

Удалить каталог

Только пустой каталог.

{

 "action" : "rfs.dir.delete" 

 ,"domain" : "image|report|upload" 

-- единичное удаление

 ,"path" : "полный путь с названием каталога" 

-- несколько удалений за один вызов. действия независимые.

 ,"list" : [ -- до 100 элементов
            "path" 
           ,"path" 
           ,"path" 
           ...
           ]

}

ответ

{

-- при единичном удалении

 <общие поля>

-- при использовании list

 <общие поля>

 ,"list" : [
            { ответ для первого элемента списка }
           ,{ ответ для второго элемента списка }
           ,{ ответ для третьего элемента списка }
           ]

}