Skip to content

Instantly share code, notes, and snippets.

@imevro
Created December 2, 2015 15:44
Show Gist options
  • Save imevro/6bcfa1523c07b02a1b6a to your computer and use it in GitHub Desktop.
Save imevro/6bcfa1523c07b02a1b6a to your computer and use it in GitHub Desktop.

Yard API

https://api-dev.gorod.ru/v1

List of contents

Lists

Большинство список идут в формате:

{
  items: [],
  pagination: {
    total: Number,
    limit: Number,
    offset: Number,
  }
}

Иногда пагинация может отсутствовать, если планируется, что в ресурсе не очень много записей.

Errors

Ошибки бывают разных типов:

request

Ошибка в реквесте, например, нет JSON-а в body или нет такой записи.

validation

Ошибка валидации (например, в формах). В ответ приходит массив. [ { message: String, param: String, } ]

  • param — ключ, по которому валидация не проходит,
  • message — причина;
internal

Внутренняя ошибка, нужно сообщить разработчикам.

authorization

Пользователь не авторизован для этого ресурса.

Dictionaries

Словари — список информации, обычно используется для автодополнения. Существующие типы:

  • document_type

Модель

{
  title: String,
  id: Number,
}
Список (GET /dictionary/{kind})
Добавить (POST /dictionary/{kind})

Request:

{
  title: String
}
Информация (GET /dictionary/{kind}/{id})
Обновить (PUT /dictionary/{kind}/{id})
Удалить (DELETE /dictionary/{kind}/{id})

Auth

Авторизация работает по токенам, каждый токен живет 30 дней.

Модель

{
  token: String
}
Получить токен: POST /sessions

Request:

{
  email: String,
  password: String
}

Staff

Модель

{
  id: Number,
  email: String,
  state: Enum["active", "inactive", "invited"],
  firstName: String,
  lastName: String,
  middleName: String,
  workPhoneNumber: String,
  personalPhoneNumber: String,
  personalEmail: String,
  passwordHash: Option[String],
  departmentId: Number, // пока не работает как нужно (https://dev.dtrussia.com/browse/CEM-114)
  positionId: Number, // пока не работает как нужно (https://dev.dtrussia.com/browse/CEM-114)
  startedWorkAt: ZonedDateTime,
  finishedWorkAt: Option[ZonedDateTime],
  photo: Option[Image],
  createdAt: ZonedDateTime,
  updatedAt: ZonedDateTime
}
Регистрация (POST /users)

Request:

{
  email: String,
  password: String
}
Список (GET /users)
Информация (GET /users/:id)
Обновить (PUT /users/:id)

:id может быть и me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment