GitFlic API


Получение токена доступа accessToken

Получение персонального кода

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

  • через GET-запрос
  • через POST-запрос, используя схему Basic auth

Получение персонального кода через GET-запрос

Для авторизации отправьте GET-запрос по адресу:

  • для SaaS:

    https://oauth.gitflic.ru/oauth/authorize
    
  • для Self-hosted:

    localhost:8080/oauth/authorize
    

Запрос принимает 4 обязательных параметра:

Параметр Тип Описание
scope Enum Список предоставляемых прав (scope’ов)
client_id или clientId String ID клиента, который можно получить в настройках приложения Oauth
redirect_url или redirectUrl String URL, на который будет перенаправлен после запроса
state String Параметр, идентифицирующий конечного пользователя

Узнать clientID можно в настройках Oauth приложения.

Типы scope

Scope Описание
USER_READ Просмотр информации о пользователе
USER_WRITE Редактирование профиля пользователя
PROJECT_READ Просмотр информации о проектах пользователя
PROJECT_WRITE Создание проектов от лица пользователя
PROJECT_EDIT Редактирование существующих проектов пользователя

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

https://oauth.gitflic.ru/oauth/authorize?scope=USER_READ,USER_WRITE,PROJECT_READ,PROJECT_WRITE,PROJECT_EDIT&client_id=973d8a-aaaa-aaaa-aaaa-f29ba163bb53&redirect_url=https://example.org/&state=12345

Получение JSON на обратный вызов авторизации

На URL обратного вызова авторизации redirect_url или в качестве ответа (зависит от метода авторизации) посылается JSON-объект следующей структуры:

Поле Тип Описание
code String Персональный код
state String Параметр, идентифицирующий конечного пользователя

Получение персонального кода через POST-запрос с Basic Auth

Данный способ доступен только в self-hosted версиях GitFlic

Для авторизации отправьте POST-запрос по адресу:

localhost:8080/api/oauth/authorize

Для заголовка Authorization необходимо предоставить зашифрованные с помощью base64 учётные данные в формате Basic-auth.

Запрос принимает 3 обязательных параметра:

Параметр Тип Описание
scope Enum Список предоставляемых прав (scope’ов)
client_id String ID клиента, который можно получить в настройках приложения Oauth
client_secret String Секрет клиента, который можно получить в настройках приложения Oauth

Типы scope

Scope Описание
USER_READ Просмотр информации о пользователе
USER_WRITE Редактирование профиля пользователя
PROJECT_READ Просмотр информации о проектах пользователя
PROJECT_WRITE Создание проектов от лица пользователя
PROJECT_EDIT Редактирование существующих проектов пользователя

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

POST localhost:8080/api/oauth/authorize?scope=USER_READ,USER_WRITE,PROJECT_READ,PROJECT_WRITE,PROJECT_EDIT&client_id=973d8a-aaaa-aaaa-aaaa-f29ba163bb53&client_secret=dc2da15d-aaaa-aaaa-aaaa-d5d04c4fb325

Получение токена доступа

После успешного получения персонального кода можно получить токен доступа:

Для получения accessToken отправьте GET-запрос:

https://oauth.gitflic.ru/api/token/access?code=<code>

code - это персональный код из предыдущих пунктов

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

https://oauth.gitflic.ru/api/token/access?code=e462eb8c-aaaa-aaaa-aaaa-d12cba0cb852

В ответе вы получите JSON-объект следующей структуры:

Поле Тип Описание
accessToken String Токен доступа к API
refreshToken String Токен для получения нового accessToken
expires String Дата истечения срока accessToken

Пример получаемого JSON-объекта:

{
    "accessToken": "868f3765-aaaa-aaaa-aaaa-13faw8a3ca68",
    "refreshToken": "cb4917e7-aaaa-aaaa-aaaa-9bb604b42e0c",
    "expires": "2023-01-12T15:45:01.961001"
}

Теперь вы можете использовать API, вставляя полученный токен в headers нашего запроса:

Authorization: token <accessToken>


Обновление токена доступа accessToken через refreshToken

Полученный вами accessToken потеряет актуальность в момент времени, указанный в поле expires. Для того, чтобы получить новый accessToken, используйте токен, указанный в поле refreshToken.

  • Отправьте POST-запрос:
https://oauth.gitflic.ru/api/token/refresh
  • В тело запроса просто поместите ваш refreshToken.

Ответ будет аналогичным тому, что и при первом получении accessToken.