Web-server API
Протокол
HTTP-запрос к серверу
Метод запроса:
GET <URI запроса> HTTP/1.1
Header:
Content-Type: application/json; charset=utf-8
Обязательный параметр GET-запроса:
token - ключ, ассоциированный с необходимым скриптом
Передача объектов осуществляется в формате JSON.
формат даты
HTTP-ответ сервера
{"cl":"SyncHeader", "params":{"ключ":"значение", ...}}
RealmSyncObject {
String cl - required
<T extends RealmObject> obj - required
List<Link> master
List<Link> link
boolean deleted
}
Link {
String cl - required
String uid - required
String field - required
}
Тайм-ауты на клиенте:
ConnectTimeout - 60с
ReadTimeout - 60с
Реализация протокола для данных GDMN-Salary
Токены
[AndroidSalary_RegisterHandler]
gdmnSalarySetGCMRegId
gdmnSalarySignIn
gdmnSalarySync
gdmnSalarySyncMsg
gdmnSalarySendMsg
gdmnSalarySendMsgStates
gdmnSalaryGetNewInvite
Параметры
Обязательные параметры:
ip_address
app_version_code
auth_key (для всех, кроме gdmnSalarySignIn)
Синхронизация объектов
Пример данных для EmployeeModel, PayslipModel и PayslipItemModel:
{cl:"EmployeeModel", obj:{uid:"123", ...}}
{cl:"PayslipModel", link:[{cl:"EmployeeModel", uid:"123", field:"employee"}], obj:{uid:"456", ...}}
{cl:"PayslipItemModel", master:[{cl:"PayslipModel", uid:"456", field:"items"}], obj:{...}}
Пример данных для EmployeeModel, TimesheetModel, WorkscheduleModel и DayEventModel:
{cl:"EmployeeModel", obj:{uid:"123", ...}}
{cl:"TimesheetModel", link:[{cl:"EmployeeModel", uid:"123", field:"employee"}], obj:{uid:"456", ...}}
{cl:"WorkscheduleModel", link:[{cl:"EmployeeModel", uid:"123", field:"employee"}], obj:{uid:"789", ...}}
{cl:"DayEventModel", master:[{cl:"TimesheetModel", uid:"456", field:"events"}, {cl:"WorkscheduleModel", uid:"789", field:"events"}], obj:{...}}
Пример удаления записи:
{cl:"EmployeeModel", delete:"true", obj:{uid:"123"}}
Классы, хранящиеся в клиентской БД
Указаны лишь те поля, которые связаны с БД
DayEventModel - событие дня в расписании или табеле
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| eventTypeIndex
|
int
|
Тип события дня [DayEventModel.EventType]
|
| timeBegin
|
Date
|
Время начала
|
| timeEnd
|
Date
|
Время окончания
|
| hours
|
double
|
Продолжительность, часов
|
| description
|
String
|
Описание
|
| isAllDay
|
boolean
|
Продолжительность: весь день
|
DeviceInfoModel - информация об устройстве
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| phoneNumber
|
String
|
MSISDN
|
| deviceId
|
String
|
Уникальный идентификатор устройства [IMEI for GSM, MEI for GSM, MEID/ESN for CDMA phones, else: android_id]
|
| deviceModel
|
String
|
Модель устройства
|
EmployeeModel - сотрудник
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| firstname
|
String
|
Имя
|
| surname
|
String
|
Фамилия
|
| middlename
|
String
|
Отчество
|
| passportId
|
String
|
ID паспорта
|
| listNumber
|
String
|
Табельный номер
|
ExRatesMonthlyModel - курс валют
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| onDate
|
Date
|
Дата
|
| usdRate
|
double
|
Курс доллара
|
| eurRate
|
double
|
Курс евро
|
GdMsgAbsenceModel - заявка о неявке на работу
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| typeIndex
|
int
|
Тип неявки [GdMsgAbsenceModel.Type]
|
| dateBegin
|
Date
|
Дата начала
|
| dateEnd
|
Date
|
Дата окончания
|
| requestGdMsgModel
|
GdMsgModel
|
Cообщение, на которое ответ (для серверных сообщений)
|
GdMsgIncomeModel - заявка о справке о доходах
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| dateBegin
|
Date
|
Дата начала
|
| dateEnd
|
Date
|
Дата окончания
|
| requestGdMsgModel
|
GdMsgModel
|
Cообщение, на которое ответ (для серверных сообщений)
|
GdMsgInfoModel - информационное сообщение
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| requestGdMsgModel
|
GdMsgModel
|
Cообщение, на которое ответ (для серверных сообщений)
|
GdMsgModel - сообщение
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| requestStatusIndex
|
int
|
Статус запроса [GdMsgModel.RequestStatus]
|
| subjectIndex
|
int
|
Тема запроса [GdMsgModel.Subject]
|
| senderIndex
|
int
|
Тип отправителя [GdMsgModel.Sender]
|
| isUnread
|
boolean
|
Прочитано
|
| timestamp
|
Date
|
Дата создания
|
| msg
|
String
|
|
| comment
|
String
|
Комментарий
|
| gdMsgString
|
String
|
Строковое представление данных сообщения (для поиска по ним)
|
| gdMsgAbsenceModel
|
GdMsgAbsenceModel
|
Заявка: неявка на работу
|
| gdMsgIncomeModel
|
GdMsgIncomeModel
|
Заявка: справка о доходах
|
| gdMsgVacationModel
|
GdMsgVacationModel
|
Заявка: отпуск
|
| gdMsgInfoModel
|
GdMsgInfoModel
|
Информационное сообщение
|
| gdMsgVacationInfoModel
|
GdMsgVacationInfoModel
|
Заявка: информация о ближайшем отпуске
|
GdMsgVacationInfoModel - заявка о информации на ближайший отпуск
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| dateBegin
|
Date
|
Дата начала
|
| dateEnd
|
Date
|
Дата окончания
|
| requestGdMsgModel
|
GdMsgModel
|
Cообщение, на которое ответ (для серверных сообщений)
|
GdMsgVacationModel - заявка об отпуске
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| typeIndex
|
int
|
Тип отпуска [GdMsgVacationModel.Type]
|
| dateBegin
|
Date
|
Дата начала
|
| dateEnd
|
Date
|
Дата окончания
|
| requestGdMsgModel
|
GdMsgModel
|
Cообщение, на которое ответ (для серверных сообщений)
|
PayslipBenefitModel - льгота расчетного литка
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| date
|
Date
|
Дата
|
| name
|
String
|
Наименование
|
| sum
|
double
|
Сумма
|
| code
|
int
|
Код льготы
|
PayslipDeductionModel - вычет расчетного листка
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| date
|
Date
|
Дата
|
| name
|
String
|
Наименование
|
| deductionKind
|
String
|
Вид вычета
|
| sum
|
double
|
Сумма
|
| code
|
int
|
Код вычета
|
PayslipItemModel - позиция расчетного листка (начисление/удержание/налог/аванс)
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| categoryIndex
|
int
|
Тип категории [PayslipItemModel.Category]
|
| date
|
Date
|
Дата
|
| name
|
String
|
Наименование
|
| code
|
int
|
Код
|
| debit
|
double
|
Сумма дебета
|
| credit
|
double
|
Сумма кредита
|
PayslipModel - расчетный листок за месяц
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| payDate
|
Date
|
Дата окончания периода
|
| employee
|
EmployeeModel
|
Сотрудник
|
| department
|
String
|
Участок
|
| isFinal
|
boolean
|
Окончательный
|
| position
|
String
|
Должность
|
| salary
|
double
|
Сумма оклада
|
| hourRate
|
double
|
Сумма почасовой тарифной ставки
|
| dependents
|
int
|
Количество иждивенцев
|
| items
|
RealmList<PayslipItemModel>
|
Список позиций листка (начисления, удержания, налоги, авансы)
|
| benefits
|
RealmList<PayslipBenefitModel>
|
Список льгот
|
| deductions
|
RealmList<PayslipDeductionModel>
|
Список Вычетов
|
SyncGdMsgStateModel - состояние сообщения
| Наименование
|
Тип данных
|
Описание
|
| uid
|
String
|
PK
|
| statusIndex
|
int
|
Тип состояния [SyncGdMsgStateModel.UpdatedStatus]
|
| gdMsgKey
|
int
|
GdMsg.uid сообщения
|
SyncMetaDataModel - мета-данные для синхронизации
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| scheme
|
String
|
Схема веб-протокола
|
| addressServer
|
String
|
Адрес
|
| authKey
|
String
|
Авторизационный ID
|
| lastSyncDate
|
String
|
Дата последней синхронизации
|
| lastSyncMsgDate
|
String
|
Дата последней синхронизации сообщений
|
| gcmRegistrationId
|
String
|
ID девайса в Google Cloud Messaging
|
| inviteCode
|
String
|
Инвайт-код
|
| permits
|
boolean
|
Наличие права доступа к данным
|
| lostMode
|
boolean
|
Режим потерянного девайса
|
TimesheetModel - табель рабочего времени за день
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| dayTypeIndex
|
int
|
Тип дня [DayType]
|
| employee
|
EmployeeModel
|
Сотрудник
|
| description
|
String
|
Описание
|
| hours
|
double
|
Продолжительность, часов
|
| date
|
Date
|
Дата
|
| events
|
RealmList<DayEventModel>
|
Список событий
|
WorkScheduleModel - рабочий график на день
| Наименование
|
Тип данных
|
Описание
|
| uid
|
int
|
PK
|
| dayTypeIndex
|
int
|
Тип дня [DayType]
|
| employee
|
EmployeeModel
|
Сотрудник
|
| description
|
String
|
Описание
|
| hours
|
double
|
Продолжительность, часов
|
| date
|
Date
|
Дата
|
| events
|
RealmList<DayEventModel>
|
Список событий
|
Таблицы данных для приложения на сервере