docs/source/api.rst
ErickSkrauch 5cebcf8abe
Completely upgrade project:
- removed all translations and used Russian as the base language
- integrated crowdin
- new multilang site layout
- upgraded sphinx
- fixed search, now it correctly handles articles language
2021-03-20 03:27:22 +01:00

127 lines
6.6 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Ely.by API (симуляция Mojang API)
---------------------------------
Здесь приведена информация об API, совместимом с функционалом `Mojang Api <http://wiki.vg/Mojang_API>`_. Обращаем ваше внимание на то, что это не полноценное API Ely.by, а только набор дополнительных запросов, реализованных на базе нашего :doc:`сервера авторизации <minecraft-auth>`.
Запросы
=======
.. note:: API не имеет ограничения на количество запросов. У нас есть просто настроенный fail2ban, который будет банить особо надоедливых клиентов. Такие дела.
В этой секции будут описаны запросы и их же варианты для Mojang API. Все запросы выполняются на базовый url ``https://authserver.ely.by``.
UUID по нику на время
~~~~~~~~~~~~~~~~~~~~~
Данный запрос позволяет узнать UUID пользователя по его нику на указанный момент времени. Время задаётся через GET параметр at с unix timestamp.
.. function:: GET /api/users/profiles/minecraft/{username}
Где ``{username}`` — искомый ник пользователя. Он может быть передан в любом регистре (В Mojang API только строгое совпадение).
Обратите так же внимание, что параметры legacy и demo никогда не будут возвращены, т.к. эти параметры не имеют в Ely альтернативы и специфичны только для сервисов Mojang.
В случае успешного запроса вы получите следующий ответ сервера:
.. code-block:: javascript
{
"id": "ffc8fdc95824509e8a57c99b940fb996",
"name": "ErickSkrauch"
}
В случае, если переданный ник не будет найден, вы получите ответ с ``204`` статусом и пустым телом.
Никнейм по UUID + история изменений
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Данный запрос позволяет узнать все ники, использованные пользователем по его UUID.
.. function:: GET /api/user/profiles/{uuid}/names
Где ``{uuid}`` — валидный UUID. Валидным будет считаться UUID, написанный через дефисы или без них. В случае передачи невалидной строки, будет возвращён IllegalArgumentException_ с сообщением ``"Invalid uuid format."``.
В случае успешного запроса вы получите следующий ответ сервера:
.. code-block:: javascript
[
{
"name": "Admin"
},
{
"name": "ErickSkrauch",
"changedToAt": 1440707723000
}
]
.. note:: Т.к. на Ely.by не реализован алгоритм запоминания момента смены ника, будет возвращаться только 1 элемент. Чуть позже мы добавим полноценную поддержку запоминания момента смены ника.
В случае, если переданный UUID не будет найден, вы получите ответ с ``204`` статусом и пустым телом.
Список никнеймов в их UUID
~~~~~~~~~~~~~~~~~~~~~~~~~~
Этот запрос позволяет запросить список UUID пользователей по списку ников.
.. function:: POST /api/profiles/minecraft
В теле запроса или POST параметрах необходимо передать валидный JSON массив искомых ников.
В массиве должно быть не более 100 ников, в противном случае будет возвращён IllegalArgumentException_ с сообщением ``"Not more that 100 profile name per call is allowed."``. В случае, если переданная строка окажется невалидным JSON объектом, будет возвращено это же исключение, только с текстом ``"Passed array of profile names is an invalid JSON string."``.
Пример тела запроса:
.. code-block:: javascript
["ErickSkrauch", "EnoTiK", "KmotherfuckerF"]
В случае успешного запроса вы получите следующий ответ сервера:
.. code-block:: javascript
[
{
"id": "ffc8fdc95824509e8a57c99b940fb996",
"name": "ErickSkrauch"
},
{
"id": "b8407ae8218658ef96bb0cb3813acdfd",
"name": "EnoTiK"
},
{
"id": "39f42ba723de56d98867eabafc5e8e91",
"name": "KmotherfuckerF"
}
]
Данные возвращаются в том же порядке, в каком и были запрошены.
В случае, если один из переданных никнеймов не найден в базе данных, для него не будет возвращено значения (он будет просто пропущен). Учитывайте эту ситуацию при парсинге ответа.
Запрос информации о профиле по UUID
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
См. :ref:`запрос профиля для сервера авторизации <profile-request>`.
Возможные ошибки
================
.. _IllegalArgumentException:
IllegalArgumentException
~~~~~~~~~~~~~~~~~~~~~~~~
Данная ошибка возникает при попытке передать на сервер данные в неправильном формате.
Пример подобной ошибки:
.. code-block:: javascript
{
"error": "IllegalArgumentException",
"errorMessage": "Invalid uuid format."
}
``errorMessage`` не всегда совпадает с таковым у Mojang, но в основном это касается только специфичных только для Ely ошибок. Оригинальные же запросы и ожидаемые от них ошибки повторяют тексты Mojang.