Как работает 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 в ответе, который указывает, сколько секунд нужно подождать, прежде чем сделать новый запрос.