Как работает API
API-точка доступа
Все твои запросы API должны быть отправлены на следующий API-эндпоинт:
https://api.cryptohopper.com/v1/
Поддерживаемые методы запросов
GET Используй GET для получения ресурса или набора ресурсов (например, списка всех твоих торговых ботов, текущих ордеров или списка последних транзакций). Этот метод безопасный и идемпотентный.
POST Используй POST для создания ресурса. Например: размести новый ордер на покупку/продажу, создай нового торгового бота.
PATCH Используй PATCH для обновления ресурса. Например: запусти или останови своего торгового бота, или обнови свои личные данные. С этим методом тебе нужно лишь указать поля, которые хочешь изменить в теле запроса.
DELETE Используй УДАЛИТЬ, когда хочешь удалить ресурс.
Параметры запроса
Есть четыре типа параметров, которые мы используем в нашем API: параметры пути, параметры строки запроса, заголовки и параметры тела запроса. Параметры тела запроса — это данные, отправляемые в теле JSON-запроса для POST и PATCH-запросов. Параметры заголовка — это, очевидно, параметры, которые нужно отправить в заголовке. Более подробную информацию о параметрах пути, строки запроса и заголовка можно найти ниже.
Параметры заголовка
Каждый запрос к нашему API требует авторизации путём отправки следующих значений в заголовке:
- access-token - Твой токен доступа получен с помощью аутентификации OAuth2
Параметры пути
Это параметры, передаваемые в URI конечной точки. Например, конечная точка GET Hopper:
https://api.cryptohopper.com/v1/hopper/{hopper_id}
Для получения торгового бота по его уникальному идентификатору, нужно заменить значение его ID в плейсхолдере {hopper_id}. Например, для получения бота с ID 37, нужно запросить следующий URL:
https://api.cryptohopper.com/v1/hopper/37
Некоторые эндпоинты требуют нескольких параметров. К примеру, если хочешь получить конкретный ордер из предыдущего Хуппера, нужно вызвать следующий URL:
https://api.cryptohopper.com/v1//hopper/{hopperId}/order/{orderId}
И подставив параметры с идентификаторами Хоппера и ордера, получишь:
https://api.cryptohopper.com/v1//hopper/37/order/231
Для подробного списка параметров, необходимых в каждом API-эндпоинте, смотри наше руководство по API.
Параметры запроса
Используем такие параметры в запросах GET для фильтрации и/или пагинации данных. Эти параметры не указаны в пути, а представлены набором значений, разделённых символом ‘&’ в строке URL.
Например, для получения ордеров на покупку биткоина торговым ботом, можно вызвать конечную точку Hopper Order следующим образом:
https://api.cryptohopper.com/v1/hopper/37/order/?order_type=buy&coin=btc
Смотря нашу API-справку, видим, что в данном случае параметр order_type может принимать значения «buy» или «sell», а параметр coin может быть любым кодом криптовалюты в нижнем регистре.
Формат ответа
Все ответы — в формате JSON-объекта. Таким образом, MIME-тип во всех наших ответах — application/json. Обратись к нашей документации API для ознакомления с форматом JSON-ответа в теле каждого запроса и ответа.
HTTP-коды ответов
Используем коды статуса ответа, определённые стандартами RFC 2616 и RFC 6585..
200 - OK Запрос успешно выполнен. Клиент получает результат запроса в теле и заголовках ответа.
201 – Создано Запрос принят, и был создан новый ресурс.
202 – Принято Запрос принят для обработки, но обработка ещё не завершена.
204 – Без содержимого Сервер успешно обработает запрос, но никакого содержимого не возвращается.
304 – Не изменён Ресурс не изменён с момента, указанного в заголовках запроса If-Modified-Since или If-None-Match. Нет необходимости повторно передавать ресурс, т.к. у клиента есть уже скачанный ранее экземпляр.
HTTP-ошибки кодов
400 – Bad Request Сервер не может или не хочет обработать запрос из-за явной ошибки клиента. Тело сообщения вернёт информацию об ошибке.
400 – Bad Request Сервер не может или не хочет обработать запрос из-за явной ошибки клиента. Тело сообщения вернёт информацию об ошибке.
401 – Unauthorized Запрос требует авторизации пользователя и отклонен из-за неверных или отсутствующих API-кредитов.
403 – Forbidden Сервер понял запрос, но отказывается его выполнять, потому что у тебя нет доступа или твои учетные данные были аннулированы.
404 – Not found Запрошенный ресурс не найден. Эта ошибка может быть вызвана временной или постоянной проблемой.
405 – Method Not Allowed Метод запроса не поддерживается указанным API-эндпоинтом.
405 – Method Not Allowed Метод запроса не поддерживается указанным API-эндпоинтом.
429 – Too Many Request Пользователь превысил лимит запросов API. Проверь заголовок Retry-After, чтобы узнать, сколько секунд нужно подождать для нового запроса. Смотри раздел лимитов запросов, чтобы узнать актуальные ограничения.
500 – Internal Server Error На сервере %s произошла ошибка, из-за которой мы не можем обработать твой запрос. Наши разработчики лишатся кофе на неделю в качестве первого предупреждения...
503 – Service Unavailable Наши сервера могут испытывать проблемы и не смогут выполнить твою заявку.
Сообщения об ошибках
Если API возвращает код ошибки, в теле ответа будет прикреплён JSON-объект с описанием ошибки. Пример сообщения об ошибке:
{
"status": 400,
"error": 1,
"message": "Missing required request parameters: [access_token]"
}
Пределы скорости
Наш API имеет лимит запросов для равномерного распределения полосы пропускания между всеми юзерами. Текущие лимиты составляют 2 запроса в секунду на юзера, за исключением размещения покупок. В этом случае, максимальное количество покупок, которые можно разместить, равно одной в 8 секунд.
Если превысить количество доступных запросов в секунду, получишь ошибку 429. Обрати внимание на заголовок Retry-After в ответе, который указывает, сколько секунд нужно подождать, прежде чем сделать новый запрос.