{
  "openapi": "3.0.0",
  "info": {
    "title": "Метод авторизации API v.1",
    "version": "0.4.0"
  },
  "externalDocs": {
    "description": "Документация и схемы API v.1",
    "url": "/API/V1"
  },
  "servers": [
    {
      "url": "https://online.smartlombard.ru/api/exchange/v1"
    }
  ],
  "tags": [
    {
      "name": "Метод авторизации"
    }
  ],
  "paths": {
    "/auth/access_token": {
      "post": {
        "tags": [
          "Метод авторизации"
        ],
        "summary": "Авторизация по ID пользователя и секретному ключу",
        "description": "Важно! Секретный ключ будет автоматически удален при:\n* Отключении секретного ключа вручную в карточке сотрудника;\n* Смене пароля у сотрудника;\n* Восстановлении пароля через кнопку \"Забыли?\" на форме авторизации;\n* Увольнении сотрудника;\n* У одного сотрудника может быть только один access_token.\n",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "account_id": {
                    "type": "integer",
                    "example": 95,
                    "description": "ID пользователя"
                  },
                  "secret_key": {
                    "type": "string",
                    "description": "Секретный ключ",
                    "example": "a41dc49100e08d3a4aa3b8a206f6dd1d"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Положительный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Объект данных ответа",
                  "properties": {
                    "status": {
                      "type": "boolean",
                      "example": true,
                      "description": "Указатель положительного ответа"
                    },
                    "http_code": {
                      "type": "integer",
                      "example": 200,
                      "description": "Код положительного ответ"
                    },
                    "result": {
                      "type": "object",
                      "description": "Результат запроса",
                      "properties": {
                        "access_token": {
                          "$ref": "#/components/schemas/Token"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ErrorAuthResponse"
          }
        },
        "x-internal": false
      }
    }
  },
  "components": {
    "responses": {
      "ErrorAuthResponse": {
        "description": "Отрицательные ответы на запрос авторизации",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "description": "Данные ошибки",
              "properties": {
                "status": {
                  "type": "boolean",
                  "example": false,
                  "description": "Статус ошибка авторизации"
                },
                "http_code": {
                  "type": "integer",
                  "example": 500,
                  "description": "Код ошибки"
                },
                "error": {
                  "type": "object",
                  "description": "Примеры отрицательных ответов на запрос авторизации:<br>\n  <br>400 - Аккаунт не найден или недопустимый\n  <br>401 - Секретный ключ не найден или неверный\n  <br>403 - Пользователь уволен или забанен\n  <br>405 - Нет прав для работы с данными\n  <br>429 - Получить токен можно 1 раз за 20 минут\n  <br>500 - Неизвестная ошибка запроса\n  <br>503 - Сервер не может обработать запрос из-за временной перегрузки или технических работ\n  <br>504 - Сервер не дождался ответа в рамках установленного таймаута\n",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Неизвестная ошибка запроса"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "schemas": {
      "Token": {
        "type": "object",
        "description": "Ответ авторизации",
        "properties": {
          "token": {
            "type": "string",
            "example": "eya41dc49e08d3a4aUzIa3b8JhbGca206f6d100d1diOiJII",
            "description": "Токен"
          },
          "expiration_time": {
            "type": "string",
            "example": "23.12.2022 12:17:32",
            "description": "Время запроса"
          },
          "token_type": {
            "type": "string",
            "example": "Bearer",
            "description": "Тип запроса"
          }
        }
      }
    }
  }
}