From 1b7395da4956089ebd529b1ce318809cb053aebf Mon Sep 17 00:00:00 2001 From: ErickSkrauch Date: Fri, 5 Mar 2021 12:22:27 +0100 Subject: [PATCH] Document new endpoints in the skinsystem articles (#9) * Resolves #8. Document new endpoints in the skinsystem articles * Fix english translation after review --- source/en/skins-system.rst | 46 +++++++++++++++++++++++++++++++++++-- source/ru/skins-system.rst | 47 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 89 insertions(+), 4 deletions(-) diff --git a/source/en/skins-system.rst b/source/en/skins-system.rst index e678dfc..7881068 100644 --- a/source/en/skins-system.rst +++ b/source/en/skins-system.rst @@ -61,6 +61,48 @@ In all queries, the :samp:`nickname` param must be replaced by the player's name The server will return an empty response with :samp:`204` status, if textures aren't found. +.. function:: /profile/{nickname} + + This endpoint is an analog of the + `player profile query in the Mojang's API `_, but + instead of UUID user is queried by his nickname. Just like in the Mojang's API, you can append ``?unsigned=false`` + to the URL to get textures with a signature. The response will also include an additional property with ``name`` + **ely**. + + If the user has no textures, they'll be requested through the Mojang's API, but the Mojang's signature will be + discarded and textures will be re-signed using `our signature key <#signature-verification-key-request>`_. + + .. code-block:: javascript + + { + "id": "ffc8fdc95824509e8a57c99b940fb996", + "name": "ErickSkrauch", + "properties": [ + { + "name": "textures", + "signature": "eks3dLJWzod92dLfWH6Z8uc6l3+IvrZtTj3zjwnj0AdVt44ODKoL50N+RabYxf7zF3C7tlJwT1oAtydONrxXUarqUlpVeQzLlfsuqUKBLi0L+/Y9yQLG3AciNqzEWq3hYaOsJrsaJday/hQmKFnpXEFCThTMpSuZhoAZIiH4VG48NhP70U93ejyXF9b1nPYnXP6k7BVB8LYSzcjZfdqY88jQJbbvRzOyX14ZSD0Ma92jceLNKmkTVc2UfRLUNXtQKtVSFUzlAjCXPJW89IIOZTRqLg65qstWwBvn6VuikyUB5EIxM8vuCh7zTkrMOx1v2Q0xIj8YSFcbnBH2bo87SYOIe1bOK57ZEeUJqY6uSgMlWs7dI5D3nmhFptErm72hg55Axdo1xbG4mvnmLYF7SA4yMDSytPPL+kA+sw3pafnvU2IZo38gqJSDOOpkOpdhUoHx85fzRJL8AcLSJiFlCZDl4pSi3cVuKy/xY5ohT/fJ6GEqpbZp3gACymn47zzI42VSh6j1DQnx2wnhqalTv0kE3qpAFpK/htSboQkFCW/bULO3b+vgU87XPlReT7UtH4yGLtixgs5GC8AzBraN8vOMv8TZCX9ab6mBBjOoDJjXa8Tq637TC75GxRHlpAN2jRHYvyp2zJwjUrML3u4eD4osHW+VBfl8D2l3nLJuemQ=", + "value": "eyJ0aW1lc3RhbXAiOjE2MTQ5MzczMjc0MzcsInByb2ZpbGVJZCI6ImZmYzhmZGM5NTgyNDUwOWU4YTU3Yzk5Yjk0MGZiOTk2IiwicHJvZmlsZU5hbWUiOiJFcmlja1NrcmF1Y2giLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly9lbHkuYnkvc3RvcmFnZS9za2lucy82OWM2NzQwZDI5OTNlNWQ2ZjZhN2ZjOTI0MjBlZmMyOS5wbmcifX19" + }, + { + "name": "ely", + "value": "but why are you asking?" + } + ] + } + + The server will return an empty response with ``204`` status if the nickname wasn't found locally nor via the + Mojang's API. + +.. _signature-verification-key-request: +.. function:: /signature-verification-key.der + + This endpoint returns a public key that can be used to verify a texture's signature. The key is provided in ``DER`` + format, so it can be used directly in the Authlib, without modifying the signature checking algorithm. + +.. function:: /signature-verification-key.pem + + The same endpoint as the previous one, except that it returns the key in ``PEM`` format. + .. function:: /textures/signed/{nickname} This request is used in our `server skins system plugin `_ to load textures with @@ -144,10 +186,10 @@ found, but it's default. To improve the throughput of the proxying algorithm, information about textures is cached in 2 stages: * Player's names and UUIDs matches are stored - `for 30 days `_. + `for 30 days `_. * Information about textures isn't updated more often than - `once a minute `_. + `once a minute `_. If you own a Minecraft premium account, but your nickname is busy, please contact our `support team `_ and after a short check we'll pass the nickname on to you. diff --git a/source/ru/skins-system.rst b/source/ru/skins-system.rst index d7e7325..0dcb7ed 100644 --- a/source/ru/skins-system.rst +++ b/source/ru/skins-system.rst @@ -61,6 +61,49 @@ URL-адреса запросов Если текстуры не будут найдены, сервер вернёт пустой ответ с :samp:`204` статусом. +.. function:: /profile/{nickname} + + Данный запрос является аналогом запроса + `профиля игрока в API Mojang `_, только вместо + идентификации пользователя по UUID используется его ник. Также, как и в API Mojang, вы можете добавить к запросу + ``?unsigned=false``, чтобы получить текстуры с подписью. В ответе также будет присутствовать дополнительное property + с ``name`` равным **ely**. + + Если у пользователя нет текстур, то они будут запрошены через прокси Mojang, после чего переподписаны с + использованием `нашего ключа подписи <#signature-verification-key-request>`_. + + .. code-block:: javascript + + { + "id": "ffc8fdc95824509e8a57c99b940fb996", + "name": "ErickSkrauch", + "properties": [ + { + "name": "textures", + "signature": "eks3dLJWzod92dLfWH6Z8uc6l3+IvrZtTj3zjwnj0AdVt44ODKoL50N+RabYxf7zF3C7tlJwT1oAtydONrxXUarqUlpVeQzLlfsuqUKBLi0L+/Y9yQLG3AciNqzEWq3hYaOsJrsaJday/hQmKFnpXEFCThTMpSuZhoAZIiH4VG48NhP70U93ejyXF9b1nPYnXP6k7BVB8LYSzcjZfdqY88jQJbbvRzOyX14ZSD0Ma92jceLNKmkTVc2UfRLUNXtQKtVSFUzlAjCXPJW89IIOZTRqLg65qstWwBvn6VuikyUB5EIxM8vuCh7zTkrMOx1v2Q0xIj8YSFcbnBH2bo87SYOIe1bOK57ZEeUJqY6uSgMlWs7dI5D3nmhFptErm72hg55Axdo1xbG4mvnmLYF7SA4yMDSytPPL+kA+sw3pafnvU2IZo38gqJSDOOpkOpdhUoHx85fzRJL8AcLSJiFlCZDl4pSi3cVuKy/xY5ohT/fJ6GEqpbZp3gACymn47zzI42VSh6j1DQnx2wnhqalTv0kE3qpAFpK/htSboQkFCW/bULO3b+vgU87XPlReT7UtH4yGLtixgs5GC8AzBraN8vOMv8TZCX9ab6mBBjOoDJjXa8Tq637TC75GxRHlpAN2jRHYvyp2zJwjUrML3u4eD4osHW+VBfl8D2l3nLJuemQ=", + "value": "eyJ0aW1lc3RhbXAiOjE2MTQ5MzczMjc0MzcsInByb2ZpbGVJZCI6ImZmYzhmZGM5NTgyNDUwOWU4YTU3Yzk5Yjk0MGZiOTk2IiwicHJvZmlsZU5hbWUiOiJFcmlja1NrcmF1Y2giLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly9lbHkuYnkvc3RvcmFnZS9za2lucy82OWM2NzQwZDI5OTNlNWQ2ZjZhN2ZjOTI0MjBlZmMyOS5wbmcifX19" + }, + { + "name": "ely", + "value": "but why are you asking?" + } + ] + } + + Если запрошенный никнейм не будет найден ни в локальном хранилище, ни у Mojang, сервер вернёт пустой ответ с ``204`` + статусом. + +.. _signature-verification-key-request: +.. function:: /signature-verification-key.der + + Данный запрос возвращает публичный ключ, который может быть использован для проверки подписи текстур. Ключ + предоставляется в формате ``DER``. Этот формат используется внутри Authlib, поэтому ключ может быть в ней использован + без модификации алгоритма проверки подписи. + +.. function:: /signature-verification-key.pem + + Такой же запрос, что и предыдущий, но возвращает ключ в формате ``PEM``. + .. function:: /textures/signed/{nickname} Этот запрос используется в нашем `плагине серверной системы скинов `_ для @@ -145,10 +188,10 @@ URL-адреса запросов Для улучшения пропускной способности проксирующего алгоритма, информация о текстурах кешируется в 2 стадии: * Соответствие ника и UUID хранится в - `течение 30 дней `_. + `течение 30 дней `_. * Информация о текстурах обновляется не чаще - `раза в минуту `_. + `раза в минуту `_. Если вы владеете лицензионным аккаунтом Minecraft, но ваш ник занят, пожалуйста, обратитесь в `службу поддержки `_ и после небольшой проверки мы передадим ник в ваше пользование.