Работа с API Облачного хранилища

Облачное хранилище предоставляет разработчикам возможность интеграции с собственными приложениями и сайтами.  Взаимодействие с хранилищем организовано на базе REST API.

API предназначен для приложений, которые работают с размещёнными в хранилище пользовательскими файлами или отправляют в хранилище собственные данные. Взаимодействие с API осуществляется с помощью стандартных HTTP-запросов. В документации описаны все доступные на текущий момент вызовы API, форматы запросов и ответов. На текущий момент с помощью API можно выполнять следующие операции:

  • получать информацию об учётной записи, контейнерах и папках;

  • создавать и удалять контейнеры;

  • загружать файлы в хранилище и скачивать их;

  • копировать, перемещать и удалять файлы;

  • устанавливать срок хранения для файлов;

  • создавать ссылки, по которым сторонние пользователи могут загружать файлы в хранилище;

  • работать с версиями файлов;

  • создавать пользователей и задавать для них настройки доступа к хранилищу.

Формат URL

  • Хост для всех запросов к API — https://api.selcdn.ru.

  • После авторизации доступ к хранилищу осуществляется по URL вида: https://api.selcdn.ru/v1/SEL_xxxxx,  где xxxxx — номер учётной записи пользователя. В URL также указывается версия API (v1). 

Доступ к API

Для успешного выполнения запросов к API необходимо:

  • быть зарегистрированным пользователем Selectel;

  • иметь достаточную сумму на балансе хранилища;

  • иметь логин и пароль для доступа к хранилищу;

  • получить уникальный ключ доступа (токен), который будет передаваться во всех запросах.

Авторизация и получение токена

В этом разделе описаны способы авторизации и получения токена для работы с API.

При использовании всех трёх способов обратите внимание на следующие моменты:

  • срок действия токена составляет 24 часа;

  • по прошествии 24 часов с момента последнего получения токена API будет возвращать ответы с кодом 401; в этом случае токен придётся получать заново;

  • если запросить токен через 12 часов с момента последней авторизации, то он будет обновлен, а полученный ранее токен станет недействительным.

Авторизация по протоколу v1

Пример запроса

curl -i https://api.selcdn.ru/auth/v1.0 -H "X-Auth-User:000000" -H "X-Auth-Key: pas$W0rD"

При удачном выполнении запроса будет возвращён ответ с кодом 204 (No Content).

Пример ответа

HTTP/1.1 204 No Content
Content-Type: text/plain; charset=utf-8
X-Storage-Token: ec01a5f65efa70234bba6d86187173d5
X-Content-Type-Options: nosniff
X-Expire-Auth-Token: 76134
X-Auth-Token: eв01a5f65efa70234bb46а86189073d5
X-Storage-Url: https://api.selcdn.ru/v1/SEL_ХХХХХ
Date: Wed, 04 May 2016 11:55:32 GMT

Параметры запроса

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/auth/v1.0

  • X-Auth-User — номер учётной записи

  • X-Auth-Key — пароль для доступа к хранилищу

Возвращает ключ авторизации (токен) для работы с хранилищем по API, который нужно будет передавать во всех последующих запросах

Внимание! Пароль для доступа к хранилищу указан на этой странице.

Параметры ответа

Параметр

Значение

X-Expire-Auth-Token

срок действия ключа авторизации (в секундах)

X-Storage-URL

URL для доступа к хранилищу

X-Auth-Token

ключ авторизации

X-Storage-Token

ключ авторизации (совпадает с предыдущим параметром).

Авторизация по протоколу v2

Пример запроса

curl -i -X POST https://api.selcdn.ru/v2.0/tokens -H 'Content-type: application/json' -d '{"auth": {"passwordCredentials": {"username": "00000", "password": "pA$sW0rD"}}}'

Пример ответа

HTTP/1.1 200 OK
Content-Length: 423
Content-Type: application/json
Date: Thu, 19 May 2016 07:17:08 GMT
{"access":{"token":{"id":"49a049462d6943d55b2ccc85abd5fdae","expires":"2016-05-20T13:12:45\n","tenant":{"id":"00000","name":"00000"}},"user":{"id":"00000","name":"00000","roles":[]},"serviceCatalog":[{"endpoints":[{"region":"common","adminURL":"https://api.selcdn.ru/v1/SEL_00000","internalURL":"https://api.selcdn.ru/v1/SEL_0000","publicURL":"https://api.selcdn.ru/v1/SEL_00000"}],"type":"object-store","name":"swift"}]}}

Авторизация по протоколу v3

curl -i  https://api.selcdn.ru/v3/auth/tokens -XPOST -d '{"auth": { "identity": { "methods": ["password"], "password": { "user": { "id": "00000", "password": "pas$sW0rD"}}}}}'
HTTP/1.1 200 OK
Content-Length: 807
Content-Type: application/json
X-Subject-Token: 614ed749fba45aa218d1ba68c7c83411
Date: Fri, 20 May 2016 12:56:36 GMT
{"token":{"expires_at":"2016-05-21T09:27:53.8459900Z","issued_at":"2016-05-20T15:56:36.8459900Z","methods":["password"],"project":{"domain":{}},"Catalog":[{"endpoints":[{"id":"614ed749fba45aa218d1ba68c7c83411","region_id":"RegionOne","url":"https://api.selcdn.ru/v1/SEL_43371","region":"RegionOne","interface":"public"},{"id":"614ed749fba45aa218d1ba68c7c83411","region_id":"RegionOne","url":"https://api.selcdn.ru/v1/SEL_43371","region":"RegionOne","interface":"admin"},{"id":"614ed749fba45aa218d1ba68c7c83411","region_id":"RegionOne","url":"https://api.selcdn.ru/v1/SEL_43371","region":"RegionOne","interface":"internal"}],"type":"object-store","name":"swift","id":""}],"user":{"id":"614ed749fba45aa218d1ba68c7c83411","name":"43371","domain":{"id":"default","name":"Default","links":{}}},"audit_ids":[""]}}

Авторизация по временным токенам

Пользователям, не имеющим собственной учётной записи, можно предоставлять доступ к хранилищу по временным токенам. Срок действия таких токенов ограничен; с их помощью можно получить доступ только к определённым контейнерам, но не к аккаунту в целом.  

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/auth/v1.0

  • X-Auth-Token — токен авторизации основного пользователя;

  • X-Container — контейнер, для доступа к которому выдаётся временный токен;

  • X-Expire-After —   срок действия временного токена (в секундах)

Возвращает временный токен для доступа к хранилищу

Пример запроса

curl -i https://api.selcdn.ru/v1/temptokens -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae" -H "X-Container: container" -H "X-Expire-After: 3600"

В случае удачного выполнения запроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Content-Type: text/plain; charset=utf-8
X-Auth-Token: abdb173e328cc61e220300bcc3bbd7e
X-Content-Type-Options: nosniff
X-Expire-Auth-Token: 3600
X-Storage-Token: abdb173e328cc61e220300bcc3bbd7e
X-Storage-Url: https://api.selcdn.ru/v1/SEL_22302
Date: Fri, 23 Mar 2018 09:15:52 GMT

Временный токен передаётся в заголовках X-Auth-Token и X-Storage-Token.

Операции с аккаунтом

Получение информации об аккаунте

Пример запроса

curl -I https://api.selcdn.ru/v1/SEL_0000  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae"

В случае удачного выполнения запроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
Content-Length: 0
X-Account-Object-Count: 6
X-Timestamp: 1374058535.42927
X-Account-Meta-Temp-Url-Key: 00000
X-Account-Bytes-Used: 484474
X-Account-Container-Count: 3
Content-Type: text/plain; charset=utf-8
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Account-Object-Count, X-Timestamp, X-Account-Meta-Temp-Url-Key, X-Account-Bytes-Used, X-Account-Container-Count

Параметры ответа

Параметр

Значение

X-Account-Bytes-Used

суммарный объём хранимых данных, байт

X-Account-Container-Count

количество контейнеров

X-Account-Object-Count

общее количество хранимых объектов

Получение информации о хранилище

Тип запроса: HEAD

Параметры запроса

Параметр

Значение

X-Auth-Token

ключ авторизации

Пример запроса

curl -I https://xxxxx.selcdn.ru/ -H "X-Auth-Token:$token"

Пример ответа

HTTP/1.1 204 No Content
Date: Tue, 28 Oct 2014 09:34:31 GMT
Server: Selectel_Storage/1.0
Content-Length: 0
X-Account-Object-Count: 6
X-Timestamp: 1374058535.42927
X-Account-Meta-Temp-Url-Key: c5zzs2wa
X-Account-Bytes-Used: 484474
X-Account-Container-Count: 3
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes
X-Received-Bytes: 345102605
X-Transfered-Bytes: 54907061
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Account-Object-Count, X-Timestamp, X-Account-Meta-Temp-Url-Key, X-Account-Bytes-Used, X-Account-Container-Count, X-Received-Bytes, X-Transfered-Bytes
Expires: 0
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate

Параметры ответа

Параметр

Значение

X-Account-Bytes-Used

суммарный объём хранимых данных, байт

X-Account-Container-Count

количество контейнеров

X-Account-Object-Count

общее количество хранимых объектов

X-Transferred-Bytes

общий объём скачанной из хранилища информации, байт

X-Received-Bytes

общий объём загруженной в хранилище информации, байт

Операции с контейнерами

Получение списка контейнеров

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/v1/SEL_xxxxx

  • X-Auth-Token — токен авторизации

Возвращает список контейнеров, доступных в хранилище на текущий момент

Пример запроса

curl https://api.selcdn.ru/v1/SEL_22302  -H "X-Auth-Token:49a049462d6943d55b2ccc85abd5fdae"

Пример ответа

container1
container2
container3
сontainer4

Пример запроса

curl -i https://77218.selcdn.ru/?format=json  -X GET -H "X-Auth-Token: $token"

Пример ответа

HTTP/1.1 200 OK
Date: Tue, 28 Oct 2014 11:08:54 GMT
Server: Selectel_Storage/1.0
X-Account-Object-Count: 6
X-Timestamp: 1374058535.42927
X-Account-Meta-Temp-Url-Key: c5zzs2wa
X-Account-Bytes-Used: 484474
X-Account-Container-Count: 3
Content-Type: application/json; charset=utf-8
Accept-Ranges: bytes
Content-Length: 300
X-Received-Bytes: 345102605
X-Transfered-Bytes: 54907061
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Account-Object-Count, X-Timestamp, X-Account-Meta-Temp-Url-Key, X-Account-Bytes-Used, X-Account-Container-Count, X-Received-Bytes, X-Transfered-Bytes
Expires: 0
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate
[{"count": 1, "name": "test2", "rx_bytes": 363, "tx_bytes": 1006, "type": "public", "bytes": 363}, {"count": 1, "name": "upload", "rx_bytes": 0, "tx_bytes": 0, "type": "private", "bytes": 363}, {"count": 4, "name": "yellow", "rx_bytes": 484666, "tx_bytes": 264846, "type": "public", "bytes": 483748}]

Параметры ответа

Параметр

Значение

X-Account-Container-Count

общее количество контейнеров в хранилище

X-Account-Object-Count

общее количество хранимых в контейнерах объектов

X-Transferred-Bytes

общий объём скачанной из хранилища информации, байт

X-Received-Bytes

общий объём загруженной в хранилище информации, байт

C помощью одного запроса можно получить информацию о 10 000 контейнерах. Если контейнеров больше, то требуется использовать дополнительные запросы с параметром marker.

Создание нового контейнера

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации;

  • X-Container-Meta-Type — тип контейнера: публичный (public) или приватный (private);

  • X-Container-Meta-Some — метаданные контейнера

Создаёт контейнер с указанными в запросе параметрами

Пример запроса

curl -i -XPUT https://api.selcdn.ru/v1/SEL_0000/new_container -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae" -H "X-Container-Meta-Type: public" -H "X-Container-Meta-Some: my test container"

В случае удачного выполнения запроса будет возвращён ответ с кодом 201.

Пример ответа

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Length: 0
Content-Type: text/html

Получение информации о контейнере

Параметры запроса

Тип запроса

URI

Заголовки

Описание

HEAD

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации

Возвращает информацию об указанном контейнере

Параметры ответа

Заголовок

Значение

X-Container-Object-Count

количество объектов в контейнере

X-Container-Bytes-Used

общий объём всех хранимых объектов в байтах

X-Container-Meta-Type

тип контейнера (публичный или приватный)

X-Container-Meta-Some

метаданные контейнера

X-Container-Domains

привязанные к контейнеру домены

X-Transfered-Bytes

общий объём скачанной из контейнера информации, байт

X-Received-Bytes

общий объём загруженной в контейнер информации, байт

Пример запроса

curl -I https://api.selcdn.ru/v1/SEL_22302/t-rex -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae"

При удачном выполнении вопроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Length,Date,X-Container-Domains,X-Backend-Delete-Timestamp,X-Timestamp,X-Container-Meta-Type,X-Backend-Status-Changed-At,X-Backend-Storage-Policy-Index,X-Container-Object-Count,X-Backend-Put-Timestamp,X-Container-Bytes-Used,Content-Type,X-Backend-Timestamp,X-Put-Timestamp
Content-Type: text/plain; charset=utf-8
Date: Wed, 14 Mar 2018 08:43:43 GMT
X-Backend-Delete-Timestamp: 0000000000.00000
X-Backend-Put-Timestamp: 1445521637.35495
X-Backend-Status-Changed-At: 1445521364.56786
X-Backend-Storage-Policy-Index: 0
X-Backend-Timestamp: 1445521364.51371
X-Container-Bytes-Used: 2455570
X-Container-Domains:
X-Container-Meta-Type: gallery
X-Container-Object-Count: 9
X-Put-Timestamp: 1445521637.35495
X-Timestamp: 1445521364.51371

Установка,  изменение и удаление метаданных контейнера

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации

  • X-Container- Meta-Type

  • X-Container-Meta-Some — метаданные контейнера

Устанавливает для указанного контейнера метаданные, переданные в заголовке X-Container-Meta-Some

POST

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации

  • X-Container-Meta-Some — метаданные контейнера

Заменяет метаданные на новые, которые передаются в заголовке  X-Container-Meta-Some

POST

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации

  • X-Remove-Container-Meta-Some — метаданные контейнера, которые требуется удалить

Удаляет метаданные, переданные в заголовке  X-Remove-Container-Meta-Some

Пример запроса

curl -i -XPUT {storage_url}/{container_name} -H "X-Auth-Token: $token" -H "X-Container-Meta-Type: gallery"

Создание галереи изображений

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации;

  • X-Container-Meta-Type: gallery — тип контейнера (в нашем случае — галерея)

Активирует демонстрацию изображений в виде галереи

Пример запроса

curl -i https://api.selcdn.ru/v1/SEL_00000/container  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae" -H "X-Container-Metatype: gallery"

В случае удачного выполнения запроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 202 Accepted
Content-Length: 76
Content-Type: text/html; charset=UTF-8
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers:

Получение списка файлов в контейнере

Параметры запроса

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации

Возвращает список файлов, находящихся в указанном контейнере

Пример запроса

curl -i https://api.selcdn.ru/v1/SEL_00000/container  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae"

Пример ответа

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Storage-Policy-Index,X-Backend-Status-Changed-At,X-Put-Timestamp,X-Container-Meta-Type,X-Timestamp,X-Backend-Delete-Timestamp,X-Backend-Timestamp,X-Backend-Put-Timestamp,X-Container-Bytes-Used,Content-Length,X-Container-Object-Count,Content-Type,Date
Content-Length: 120
Content-Type: text/plain; charset=utf-8
Date: Wed, 14 Mar 2018 09:11:28 GMT
X-Backend-Delete-Timestamp: 0000000000.00000
X-Backend-Put-Timestamp: 1445521637.35495
X-Backend-Status-Changed-At: 1445521364.56786
X-Backend-Storage-Policy-Index: 0
X-Backend-Timestamp: 1445521364.51371
X-Container-Bytes-Used: 2455570
X-Container-Meta-Type: gallery
X-Container-Object-Count: 9
X-Put-Timestamp: 1445521637.35495
X-Timestamp: 1445521364.51371
File1
File2
File3
File4

Дополнительные query-параметры

В запросе на получение списка файлов можно также использовать дополнительные query-параметры, например:

curl -I https://api.selcdn.ru/v1/SEL_00000/container/?format=json -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae"

В результате выполнения этой команды будет возвращён список файлов в формате json.  Можно указать и другой формат выдачи списка — xml:

curl -I https://api.selcdn.ru/v1/SEL_00000/container/?format=xml -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae"

С помощью параметра limit  можно задать точное количество файлов, которые будут включены в список. Такая возможность бывает полезна при работе с контейнерами, где хранится множество объектов (например, тысячи или даже десятки тысяч):

curl -I https://api.selcdn.ru/v1/SEL_00000/container/?limit=20 -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae"

В результате выполнения этой команды в список будут включены только первые 20 файлов.  Информации обо всех остальных файлах в списке не будет.

Параметр marker позволяет указать имя файла, с которого будет начинаться список:

curl -i https://api.selcdn.ru/v1/SEL_00000/container/?marker=file3 -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae"

В результате выполнения этого запроса в списке будут отображены файлы, которые следуют после файла с именем file3.  Предыдущие файлы, равно как и сам файл file3, в список включены не будут.

С помощью параметра prefix в список можно включать файлы, имена которых начинаются с указанного буквосочетания:

curl -i https://api.selcdn.ru/v1/SEL_00000/container/?prefix=my_ -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae"

С помощью параметра delimiter можно выводить только ту часть имени файлов, которая следует до определённого символа, например:

curl -i https://api.selcdn.ru/v1/SEL_00000/container/?delimiter=.

В результате выполнения этой команды будет выведена только та часть имён файлов, которая идёт до точки (только имена без расширения).

Удаление контейнера

Внимание! Перед удалением контейнера необходимо удалить из него все файлы.  Если в контейнере имеется хотя бы один файл, удаление невозможно.

Тип запроса

URI

Заголовки

Описание

DELETE

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации

Удаляет указанный контейнер

Пример запроса

curl -i  https://api.selcdn.ru/v1/SEL_00000/container/ -X DELETE -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda"

В случае удачного выполнения запроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
content-length: 0
content-type: text/html; charset=UTF-8
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers:

Скачивание контейнера или папки в виде zip-архива

Содержимое любого публичного контейнера (или папки в публичном контейнере) можно загрузить на локальную машину в виде zip-архива.  Для этого к ссылке на контейнер или папку  нужно добавить query-параметр download-all-as-zip=[имя архива], например:

wget https://api.selcdn.ru/v1/SEL_00000/container/?download-all-as-zip=container.zip

Приватные контейнеры и их содержимое в виде zip-архивов скачивать нельзя.

Описываемая операция предназначена в первую очередь для упрощения скачивания,  а не для экономии трафика, поэтому файлы в архиве не сжимаются.

Количество объектов в одном архиве не должно превышать 10 000, иначе API будет возвращать ошибку.

Работа с файлами

Скачивание файла из контейнера

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/v1/SEL_xxxxx/container/file

  • X-Auth-Token — токен авторизации
    (обязателен только при скачивании из приватного контейнера; из публичных контейнеров файлы можно скачивать без токена).

Также в запросе можно использовать стандартные HTTP-заголовки, описанные в RFC2616:

  • If-Match

  • If-None-Match;

  • If-Modified-Since;

  • If-Unmodified-Since

Скачивает указанный файл

Пример запроса

curl -O https://api.selcdn.ru/v1/SEL_00000/images/image1.png

Загрузка файла в контейнер

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container/file

  • X-Auth-Token — токен авторизации;

  • X-Delete-At —  время удаления файла в формате Unix Timestamp;

  • X-Delete-After — cрок хранения файла (в секундах)

  • Etag — идентификатор Etag;

  • X-Object-Meta — метаданные загружаемого объекта

Загружает объект в указанный контейнер

Пример запроса

curl -i -XPUT https://api.selcdn.ru/v1/SEL_00000/new_container/file  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda" -H "X-Delete-After: 180"  -T "file"

При удачном выполнении запроса будет возвращён ответ с кодом 201.

Пример ответа

HTTP/1.1 100 Continue
HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Length: 0
Content-Type: text/html
Etag: b65ad34618e410d9d8bf624d61f8a980
Date: Thu, 15 Mar 2018 07:31:32 GMT

Удаление файлов из контейнера

Тип запроса

URI

Заголовки

Описание

POST

https://api.selcdn.ru/v1/SEL_******?bulk-delete=true

  • X-Auth-Token — токен авторизации;

  • X-Delete-After — cрок хранения файла (в секундах)

Удаляет несколько указанных файлов одновременно

Пример запроса

curl -i 'https://api.selcdn.ru/v1/SEL_******?bulk-delete=true' -H 'X-Auth-Token:*********' -X POST -H 'Content-Type: text/plain' --data  $'container/file1\ncontainer/file2\n'

При удачном выполнении запроса возвращается ответ с кодом 200.

Пример ответа

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Type: application/json; charset=utf-8
Date: Fri, 08 Jun 2018 13:37:53 GMT
Content-Length: 101
{"Number Not Found":0,"Response Status":"200 OK","Response Body":"","Errors":null,"Number Deleted":2}

Распаковка архивов

Архивы в формате *.tar, *.tar.gz и *.gzip могут быть распакованы сразу после загрузки в хранилище. Чтобы распаковать архив, в запрос на загрузку файла нужно добавить query-параметр extract-archive:

сurl -i -XPUT  https://api.selcdn.ru/v1/SEL_00000/new_container/archive.tar.gz/?extract-archive=tar.gz  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda" -T "archive.tar.gz"

Управление HTTP-заголовками для файлов

Для всех файлов, помещаемых в хранилище, можно устанавливать HTTP-заголовки.  Заголовки используются для управления кэшированием на стороне клиента (и на промежуточных прокси-серверах), а также для обработки кросс-доменных запросов (CORS).

Поддерживаются следующие заголовки:

  • Cache-Control;

  • Expires;

  • Origin;

  • Access-Control-Allow-Origin;

  • Access-Control-Max-Age;

  • Access-Control-Allow-Methods;

  • Access-Control-Allow-Credentials;

  • Access-Control-Expose-Headers;

  • Access-Control-Request-Headers;

  • Access-Control-Request-Method;

  • Content-Disposition (только для конечного файла);

  • Strict-Transport-Security (только для контейнера).

Тип запроса

URI

Заголовки

Описание

POST

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации;

  • X-Container-Meta-.... — заголовок, параметры которого нужно установить (сам заголовок указывается после -Meta-, например: X-Container-Meta-Cache-Control

Устанавливает значения для указанных в запросе заголовков

Пример запроса

curl -i -XPOST  https://api.selcdn.ru/SEL_xxxxx/container -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda" -H "X-Container-Meta-Access-Control-Request-Method: HEAD, GET" \    -H "X-Container-Meta-Cache-Control: public" -H "X-Container-Meta-Strict-Transport-Security: max-age=31536000; includeSubDomains"

В случае удачного выполнения запроса API возвращает ответ с кодом 202.

Пример ответа

HTTP/1.1 202 Accepted
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Length: 76
Content-Type: text/html
Date: Mon, 26 Mar 2018 06:59:45 GMT
<html><h1>Accepted</h1><p>The request is accepted for processing.</p>

Поддержка больших объектов

В хранилище нет ограничений на размер загружаемых файлов. Однако файлы размером более 1 ГБ не рекомендуются помещать в хранилище целиком: для этого предпочтительнее использовать сегментную загрузку.

Существует два варианта сегментной загрузки: динамическая и статистическая.

Динамическая загрузка

В динамической загрузке объект разбивается на сегменты, после чего создаётся так называемый манифест.  Манифестом называется пустой файл, содержащий указатель на контейнер, в который загружены все сегменты.  В запросе на загрузку большого объекта путь к контейнеру указывается в заголовке X-Object-Manifest.

Желательно сначала загружать сегменты, а уже потом — создавать или обновлять манифест: объект не будет доступен для скачивания, пока не завершится загрузка всех сегментов.

Пример

curl -X PUT -H 'X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda' \    https://api.selcdn.ru/v1/SEL_00000/new_container/big_object/00000001 --data-binary '1' curl -X PUT -H 'X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda' \    https://api.selcdn.ru/v1/SEL_00000/new_container/big_object/00000002 --data-binary '2' curl -X PUT -H 'X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda' \ https://api.selcdn.ru/v1/SEL_00000/new_container/big_object/00000003 --data-binary '3'

Пример манифеста

curl -X PUT -H 'X-Auth-Token:49a049462d6943d55b2ccc85abd5fda' \    -H 'X-Object-Manifest: container/myobject/' \    https://api.selcdn.ru/v1/SEL_00000/new_container/big_object/ --data-binary '' 

Статическая загрузка

При статической загрузке нужно создать статический манифест с указанием путей до сегментов, их контрольной суммы (Etag) и размера. Манифест сохраняется в специальном файле.

Пример манифеста

[{"path": "/cont/object",  "etag": "etagoftheobjectsegment",  "size_bytes": 10485760, }, ...]

Файл манифеста нужно загрузить в хранилище  PUT-запросом с query-параметром ?multipart-manifest=put  и заголовком X-Static-Large-Object: True.

Чтобы получить файл манифеста, нужно выполнить GET-запрос с query-параметром ?multipart-manifest=get.

Удалить все сегменты, а затем файл с манифестом можно с помощью DELETE-запроса с query-параметром ?multipart-manifest=delete.

Установка срока хранения для файлов

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации

  • X-Container-Meta-Default-Delete-After — cрок хранения для всех файлов в контейнере (в секундах)

Устанавливает срок хранения для всех файлов, помещаемых в контейнер. По истечении этого срока все файлы будут автоматически удалены

Пример запроса

curl -i -XPUT https://api.selcdn.ru/v1/SEL_0000/container  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda" -H "X-Container-Meta-Default-Delete-After: 300"

При удачном выполнении запроса будет возвращён ответ с кодом 202

Пример ответа

HTTP/1.1 202 Accepted
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Length: 76
Content-Type: text/html
Date: Thu, 15 Mar 2018 09:13:56 GMT

Установка метаданных файла

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container/file

  • X-Auth-Token — токен авторизации

  • X-Object-Meta-Some —  любая дополнительная информация о файле

Добавляет в файл метаданные, переданные в заголовке X-Object-Meta-Some

Пример запроса

curl -i -XPUT  https://api.selcdn.ru/v1/SEL_00000/new_container/file  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda" -H "X-Object-Meta-Some: metadata"

В случае успешного выполнения запроса API возвращает ответ с кодом 201.

Пример ответа

HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Length: 0
Content-Type: text/html
Etag: d41d8cd98f00b204e9800998ecf8427e
Date: Mon, 19 Mar 2018 06:48:55 GMT

Копирование файлов внутри хранилища

Способ 1

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/new_location/указываем путь к контейнеру и папке, куда нужно копировать файл/

  • X-Auth-Token — токен авторизации

  • X-Copy-From —путь к файлу, который нужно скопировать

Копирует файл из одной локации в другую

Пример запроса

curl -i -X PUT https://api.selcdn.ru/v1/SEL_00000/container2/file -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda" -H "X-Copy-From: /container1/file

Пример ответа

HTTP/1.1 201 
Created etag: 0f343b0931126a20f133d67c2b018a3b 
X-Copied-From: new_container/new_object 
X-Copied-From-Last-Modified: Mon, 27 May 2013 13:16:49 GMT 
Last-Modified: Tue, 28 May 2018 06:30:51 GMT

Способ 2

Тип запроса

URI

Заголовки

Описание

СOPY

https://api.selcdn.ru/v1/SEL_xxxxx/container/file/указываем путь к файлу, который нужно копировать/

  • X-Auth-Token — токен авторизации

  • Destination —путь к контейнеру и папке, куда нужно копировать файл

Копирует файл из одной локации в другую

Пример запроса

curl -i -X COPY https://api.selcdn.ru/v1/SEL_00000/container1/file   -H "X-Auth-Token:49a049462d6943d55b2ccc85abd5fda"    -H "Destination: /container2/file"

Пример ответа

HTTP/1.1 201 Created etag: 0f343b0931126a20f133d67c2b018a3b X-Copied-From: container1/file
X-Copied-From-Last-Modified: Mon, 27 May 2013 13:16:49 GMT Last-Modified: Tue, 28 May 2013 06:30:51 GMT

Создание символической ссылки на файл

При использовании хранилища в качестве бэкенда для публичных сервисов нередко возникает необходимость разграничить доступ к файлам — например, сделать доступными для широкого круга пользователей файлы, помещённые в приватный контейнер.

Специально для таких случаев в хранилище предусмотрена возможность создавать символические ссылки. Такие ссылки можно защищать паролем, а также устанавливать для них срок действия.

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container/file

/в адресе указывается контейнер, в котором будет храниться символическая ссылка, и имя, под которым эта ссылка будет сохранена/

  • X-Auth-Token — токен авторизации;

  • Content-Type —  тип символической ссылки (x-storage/onetime-symlink — одноразовая ссылка, x-storage/symlink+secure — обычная ссылка, защищенная паролем, x-storage/onetime-symlink+secure — одноразовая ссылка, защищенная паролем);

  • X-Object-Meta-Location — заквотированный путь к объекту в хранилище;

  • X-Object-Meta-Delete-At — дата (в формате Unix Timestamp), до которой ссылка будет действительна;

  • X-Object-Meta-Link-Key — sha1-хэш пароля (для защищённых паролем ссылок);

  • Content-Disposition — указывает, что делать с файлом, на который создана ссылка: открывать в браузере (inline) или скачивать на локальную машину (attachment)

Создаёт символическую ссылку с заданными в запросе параметрами.

Пример запроса

curl -i -XPUT https://api.selcdn.ru/v1/SEL_00000/new_container/new_link   -H "X-Auth-Token: $token" -H "Content-Type: x-storage/symlink" -H "X-Object-Meta-Location: /new_container/new_object"  -H "X-Object-Meta-Link-Key: b6589fc6ab0dc82cf12099d1c2d40ab994e8410c" -H "Content-Length: 0"

Пример ответа

HTTP/1.1 201 Created
> etag: d41d8cd98f00b204e9800998ecf8427e
> Last-Modified: Mon, 27 May 2013 13:34:34 GM

Создание ссылки для скачивания файла

Можно создавать специальные ссылки, по которым сторонние пользователи могут скачать ваши файлы (в том числе и из личных контейнеров).  Для создания такой ссылки не нужно выполнять запрос к API.

Прежде чем генерировать ссылки, нужно установить секретный ключ:

curl -i -XPOST http://xxx.selcdn.ru/   -H "X-Auth-Token: $tOkeN -H X-Account-Meta-Temp-URL-Key: $key"

Доступ к файлам по сгенерированной ссылке смогут получить только пользователи, которым известен секретный ключ.

Пример на Python

import hmac
from hashlib import sha1
from time import time

# access method (always GET)
method = "GET"

# reference valid 60 seconds
expires = int(time()) + 60

# the path to the file in the repository, always with the container specified
path = "/container/dir/file"

# secret key
link_secret_key = "secret_word"

# generate access key
hmac_body = '%s\n%s\n%s' % (method, expires, path)

# access key
sig = hmac.new(link_secret_key, hmac_body, sha1).hexdigest()

Полученный в результате ключ затем нужно будет указать в ссылке:

http://xxx.selcdn.ru/container/dir/file?temp_url_sig=3f512dfed32111d6e742afc5522076c0621951cc&temp_url_expires=13909142

где:

  • ххх.selcdn.ru - базовый домен;
  • temp_url_sig - ключ доступа,
  • temp_url_expires - время, до которого действует ссылка (unixtime).

Если к контейнеру прикреплен домен, то его можно указать в ссылке. Имя контейнера при этом указывать не нужно:

http://my.domain/dir/file?temp_url_sig=3f512dfed32111d6e742afc5522076c0621951cc&temp_url_expires=1390914227

Поддерживается управление заголовком Content-Disposition для отдаваемых по ссылке данных. Для этого нужно добавить параметр filename с соответствующим значением:

http://xxx.selcdn.ru/container/dir/file?temp_url_sig=3f512dfed32111d6e742afc5522076c0621951cc&temp_url_expires=1390914227&filename=Other+file+name.doc

Секретный ключ можно изменить. После изменения секретного ключа все сгенерированные ранее ссылки перестанут работать.

Создание ссылки для загрузки файлов (sendmefile)

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container/upload

  • X-Auth-Token — токен авторизации;

  • Content-Type — свойства ссылки (x-storage/sendmefile+inplace — загрузка только одного файла с указанным именем,x-storage/sendmefile+timepostfix —- загрузка файлов с добавлением времени загрузки к имени, x-storage/sendmefile+autopostfix — загрузка файлов с добавлением уникального идентификатора к имени с учетом расширения, x-storage/sendmefile+folderday — загрузка файлов в папку с именем вида yyyy-dd-mm, x-storage/sendmefile+folderhour — загрузка файлов в папку с именем вида dd-mm hh:min min, x-storage/sendmefile+folderuniq — загрузка каждого файла в отдельную папку);

  • X-Object-Meta-Sendmefile-Disable-Web  —  включает (yes)/отключает (no) веб-интерфейс для загрузки файлов; по умолчанию этот заголовок имеет значение yes (веб-интерфейс включён);

  • X-Object-Meta-Sendmefile-Max-Size — максимальный размер загружаемого файла (в байтах);

  • X-Object-Meta-Sendmefile-Allow-Overwrite —  разрешает (yes) или запрещает (no) перезапись файлов при повторной загрузке (по умолчанию перезапись запрещена);

  • X-Object-Meta-Sendmefile-Ignore-Filename — разрешить (yes) автоматическое переименование файлов в соответствии с заданными настройками;

  • X-Object-Meta-Sendmefile-Secret —  хэш пароля (для защищённых паролем ссылок);

  • X-Filename  — имя, под которым файл будет загружен в хранилище;

  • X-Sendmefile-Session-Id —  идентификатор сессии загрузки

Создаёт ссылку, по которой сторонние пользователи (в том числе и не имеющие могут загрузить файлы в хранилище

Пример запроса

curl -i -XPUT
https://api.selcdn.ru/v1/SEL_xxxxx/container/upload
-H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda"    -H "Content-Type: x-storage/sendmefile+inplace"     -H "X-Object-Meta-Sendmefile-Max-Size: 52428800" -H "X-Object-Meta-Sendmefile-Expire: 14400"   -H "X-Object-Meta-Sendmefile-Secret: 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" -d "Пояснительный текст для страницы загрузки"

Удаление файла

Тип запроса

URI

Заголовки

Описание

DELETE

https://api.selcdn.ru/v1/SEL_xxxxx/container/file

  • X-Auth-Token — токен авторизации

Удаляет указанный файл

Пример запроса

curl -i  https://api.selcdn.ru/v1/SEL_00000/container/file -X DELETE -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda"

В случае удачного выполнения запроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
content-length: 0
content-type: text/html; charset=UTF-8
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers:

Версионирование

Как правило, электронный документ за время своего существования претерпевает многочисленные изменения. Довольно часто возникает необходимость хранить не только последнюю версию документа, но и несколько предыдущих. Для этого в хранилище предусмотрена поддержка версий.

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_xxxxx/container

  • X-Auth-Token — токен авторизации;

  • X-Versions-Location — имя контейнера, где будут храниться версии

Активирует версионирование для указанного контейнера.  Версии всех объектов будут сохранены в контейнере, имя которого передано в заголовке X-Versions-Location

Пример запроса

curl -i  https://api.selcdn.ru/v1/SEL_00000/container1/
-XPUT -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda" -H "X-Versions-Location: container2"

При удачном выполнении запроса будет возвращён ответ с кодом 202.

Пример ответа

HTTP/1.1 202 Accepted Content-Length: 76 
Content-Type: text/html; charset=UTF-8 
Access-Control-Allow-Origin: * Access-Control-Expose-Headers: Expires: 0 Pragma: no-cache 
Cache-Control: no-cache, no-store, must-revalidate

Установка лимитов

Установка лимитов для контейнера

Тип запроса

URI

Заголовки

Описание

POST

https://api.selcdn.ru/v1/SEL_xxxxx/container/

  • X-Auth-Token — токен авторизации;

  • X-Container-Meta-Quota-Bytes —максимальный допустимый объём хранимых данных (в байтах);

  • X-Container-Meta-Quota-Count — максимальное возможное количество файлов и папок в контейнере

Устанавливает для указанного контейнера ограничения, переданные в заголовках X-Container-Meta-Quota-Byte и X-Container-Meta-Quota-Count

Пример запроса

curl -i -XPOST https://api.selcdn.ru/v1/SEL_00000/container/  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda"   -H "X-Container-Meta-Quota-Bytes: 52428800" -H "X-Container-Meta-Quota-Count: 1000"

В случае удачного выполнения запроса будет возвращён ответ с кодом 202.

Пример ответа

HTTP/1.1 202 Accepted
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Length: 76
Content-Type: text/html
Date: Mon, 19 Mar 2018 07:41:24 GMT
<html><h1>Accepted</h1><p>The request is accepted for processing.</p></html>

Установка лимитов для учётной записи в целом

Тип запроса

URI

Заголовки

Описание

POST

https://api.selcdn.ru/v1/SEL_xxxxx/

  • X-Auth-Token — токен авторизации;

  • X-Container-Meta-Quota-Bytes — максимальный допустимый объём хранимых данных (в байтах);

  • X-Container-Meta-Quota-Count максимальное возможно количество файлов и папок

Устанавливает переданные в заголовка ограничения X-Container-Meta-Quota-Bytes и X-Container-Meta-Quota-Count ограничения.  Ограничения будут действовать на уровне аккаунта, для всех файлов и папок

curl -i -XPOST https://api.selcdn.ru/v1/SEL_00000 -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda"   -H "X-Container-Meta-Quota-Bytes: 52428800" -H "X-Container-Meta-Quota-Count: 1000"

Пример ответа

HTTP/1.1 202 Accepted
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Length: 76
Content-Type: text/html
Date: Mon, 19 Mar 2018 07:41:24 GMT
<html><h1>Accepted</h1><p>The request is accepted for processing.</p></html>

Управление пользователями

Просмотр списка пользователей

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/v1/users

  • X-Auth-Token — токен авторизации

Выводит список пользователей для текущего аккаунта

Пример запроса

curl -i https://api.selcdn.ru/v1/users  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fd’

В случае удачного выполнения запроса API вернёт ответ с кодом 200.

Пример ответа

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: text/plain; charset=utf-8
Date: Mon, 19 Mar 2018 09:01:22 GMT
Content-Length: 80
main_user (true)
main_user (true)
user1 (true)
user2 (true)
user3 (true)

Добавление нового пользователя

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/users/username

  • X-Auth-Token — токен авторизации;

  • Х-Auth-Key —  пароль для нового пользователя;

  • X-User-Active — статус пользователя (on — активен, off— неактивен);

  • X-User-ACL-Container-R — имена контейнеров, которые новому пользователю будут доступны только для чтения;

  • X-User-ACL-Container-W — список контейнеров, которые будут доступны новому пользователю для записи;

  • X-Store-Password — указывает, нужно ли хранит пароль нового пользователя в открытой базе (аналогично опции “Хранить пароль на серверах Selectel” в панели управления)

Создаёт пользователя с указанными настройками учётной записи

Пример запроса

curl -i https://api.selcdn.ru/v1/users/my_test_user  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fd’ -H "X-Auth-Key: 123456" -H "X-User-ACL-Containers-W: container1, container2, container3" -H "X-User-ACL-Containers-R: container4" -H "X-User-Store-Password: yes" -H "X-User-Active: on"

При удачном выполнении запроса API возвращает ответ с кодом 201.

Пример ответа

HTTP/1.1 201 Created
Content-Type: text/html; charset=UTF-8
Content-Length: 0

Удаление пользователя

Тип запроса

URI

Заголовки

Описание

DELETE

https://api.selcdn.ru/v1/users/username

  • X-Auth-Token — токен авторизации

Удаляет указанного пользователя

Пример запроса

curl -i -X DELETE https://api.selcdn.ru/v1/users/my_test_user  -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fd’

В случае успешного удаления пользователя API возвращает ответ с кодом 201.

Пример ответа

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Mon, 19 Mar 2018 10:04:25 GMT

Изменение пароля основного пользователя

Тип запроса

URI

Заголовки

Описание

POST

https://api.selcdn.ru/v1/users/

  • X-Auth-Token — токен авторизации;

  • X-Auth-Key — новый пароль;

  • X-Store-Password — указывает, нужно ли хранит пароль нового пользователя в открытой базе (аналогично опции “Хранить пароль на серверах Selectel” в панели управления)

Меняет пароль основного пользователя на переданный в заголовке X-Auth-Key

Пример запроса

curl -i -XPOST https://api.selcdn.ru/v1/users -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fd" -H "X-Auth-Key: pA$sW0rD" -H "X-User-Store-Password: yes"

При удачном выполнении запроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Mon, 19 Mar 2018 10:30:59 GMT

Управление доменами

К контейнерам в хранилище можно прикреплять домены.  Все операции с доменами осуществляются через API.

Домены по умолчанию

Каждый пользователь облачного хранилища автоматически получает набор доменов по умолчанию, которые можно использовать для доступа к объектам в любых контейнерах:

  • xxxx.selcdn.ru —  домен для публичного доступа к файлам в хранилище;

  • xxxx.selcdn.com  — домен для раздачи файлов через CDN по http.

Через тикет-систему можно заказать домен вида xxxx.akamaihd.net, который может использоваться для https-доступа к объектам в контейнерах через CDN-кэш нашего партнера Akamai.

Получение списка прикреплённых доменов

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/v1/domains

  • X-Auth-Token — токен авторизации;

Возвращает список доменов

Пример запроса

curl -i https://api.selcdn.ru/domains -H "X-Auth-Token:  49a049462d6943d55b2ccc85abd5fd"

При удачном выполнении запроса API возвращает ответ с кодом 200.

Пример ответа

HTTP/1.1 200 OK
Content-Length: 69
Content-Type: text/html
Date: Mon, 16 May 2016 07:36:35 GMT
Base Domains:
00000.selcdn.ru
00000.selcdn.com
Containers Domains:
container1  domain1.ru
container2  domain1.ru

Прикрепление домена

Тип запроса

URI

Заголовки

Описание

POST

https://api.selcdn.ru/v1/SEL_00000/container

  • X-Auth-Token — токен авторизации;

  • X-Add-Container-Domains — имя домена, который будет прикреплён к контейнеру

Прикрепляет к контейнеру домен, имя которого передано в заголовке X-Add-Container-Domains

Пример запроса

curl -i https://api.selcdn.ru/v1/container  -XPOST -H "X-Add-Container-Domains: domain1.ru" -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fd"

В случае удачного выполнения запроса API вернёт ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Tue, 20 Mar 2018 12:09:38 GMT

Удаление домена

Тип запроса

URI

Заголовки

Описание

POST

https://api.selcdn.ru/v1/SEL_00000/container

  • X-Auth-Token — токен авторизации;

  • X-Remove-Container-Domains — имя домена, который будет  удалён (откреплён от контейнера)

Удаляет домен, имя которого передано в заголовке X-Remove-Container-Domains

Пример запроса

curl -i -XPOST https://api.selcdn.ru/v1/SEL_0000/container -XPOST -H "X-Remove-Container-Domains: domain1.ru" -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fd"

В случае удачного выполнения запроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Tue, 20 Mar 2018 12:30:23 GMT

Редактирование списка доменов

Тип запроса

URI

Заголовки

Описание

POST

https://api.selcdn.ru/v1/SEL_00000/container

  • X-Auth-Token — токен авторизации;

  • X-Container-Domains — имя домена, который будет  удалён (откреплён от контейнера)

Удаляет домен, имя которого передано в заголовке X-Remove-Container-Domains

curl -i -XPOST https://api.selcdn.ru/v1/SEL_00000 -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fda"   -H "X-Container-Meta-Quota-Bytes: 52428800" -H "X-Container-Meta-Quota-Count: 1000"

В случае удачного выполнения запроса API возвращает ответ с кодом 204.

Пример ответа

HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Backend-Timestamp, Etag, Last-Modified, X-Object-Manifest, X-Timestamp
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Tue, 20 Mar 2018 12:30:23 GMT

Управление пользовательскими SSL-сертификатами

Получение списка сертификатов

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/v1/ssl

  • X-Auth-Token — токен авторизации

Возвращает список сертификатов

Пример запроса

curl -i https://api.selcdn.ru/v1/ssl -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fd"

Получение информации о сертификате

Тип запроса

URI

Заголовки

Описание

GET

https://api.selcdn.ru/v1/SEL_22302/ssl/cert

  • X-Auth-Token — токен авторизации

Возвращает информацию об указанном сертификате

Пример запроса

curl -i https://api.selcdn.ru/v1/SEL_22302/ssl/cert -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fd"

Добавление сертификата

Тип запроса

URI

Заголовки

Описание

PUT

https://api.selcdn.ru/v1/SEL_22302/ssl/cert

  • X-Auth-Token — токен авторизации

Добавляет новый сертификат

Пример запроса

curl -I https://api.selcdn.ru/v1/ssl/001_cert1 -H "X-Auth-Token:4 9a049462d6943d55b2ccc85abd5fd" -XPUT -T ./cert1.pem

Имя сертификата ({cert_name}) нужно передавать в формате 00000_cert1, где первая часть (цифры) представляет собой номер учётной записи пользователя, а вторая — любую произвольную комбинацию символов.

Имена сертификатов должны быть уникальными; загрузить два сертификата с одинаковыми именами невозможно.
Сам сертификат и приватный ключ нужно передать в теле запроса в одном файле.

Удаление сертификата

Тип запроса

URI

Заголовки

Описание

DELETE

https://api.selcdn.ru/v1/SEL_22302/ssl/cert

  • X-Auth-Token — токен авторизации

Удаляет указанный сертификат

Сброс кэша CDN

Тип запроса

URI

Заголовки

Описание

PURGE

https://api.selcdn.ru/v1/SEL_22302/ssl/cert

  • X-Auth-Token — токен авторизации;

  • Content-Length — размер тела запроса

Очищает кэш CDN для страниц, адреса которых переданы в запросе

Пример запроса

curl -i -X PURGE https://api.selcdn.ru/v1/cdn -H "X-Auth-Token: 4 9a049462d6943d55b2ccc85abd5fd" -d $'https://00000.selcdn.com/container/file'

При удачном выполнении запроса API вернёт ответ с кодом 200.

Пример ответа

HTTP/1.1 200 OK
Date: Mon, 16 May 2016 09:45:15 GMT
Content-Length: 268
Content-Type: text/plain; charset=utf-8
{"estimatedSeconds": 5, "progressUri": "/ccu/v2/purges/e4561042-1b4a-11e6-9024-f3cf5304c77a", "purgeId": "e4561042-1b4a-11e6-9024-f3cf5304c77a", "supportId": "17PY1463391915374207-348128448", "httpStatus": 201, "detail": "Request accepted.", "pingAfterSeconds": 300}

Получение логов

Тип запроса

URI

Заголовки

Описание

PURGE

https://api.selcd.ru/v1/logs

  • X-Auth-Token — токен авторизации;

  • X-Start-Time — начало периода в формате Y-m-d H:M:S;

  • X-End-Time — конец периода в формате Y-m-d H:M:S;

  • X-Limit — максимальное количество записей, которое нужно вернуть в запросе

Создать контейнер logs и загружает в него логи за указанный период

Пример запроса

curl -i -XPOST https://api.selcdn.ru/v1/logs -H "X-Auth-Token: 49a049462d6943d55b2ccc85abd5fdae" -H "X-Start-Time: 2016-02-02 09:00:00" -H "X-End-Time: 2016-05-02 12:00:00"

В случае удачного выполнения запроса API вернёт ответ с кодом 200.

Пример ответа

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Date: Thu, 22 Mar 2018 09:48:58 GMT
Content-Length: 0
Content-Type: text/plain; charset=utf-8