@cityssm/avanti-api
Version:
An unofficial wrapper around the Avanti API.
748 lines (747 loc) • 20.1 kB
TypeScript
export interface AvantiApiConfiguration {
/**
* https://[tenant].myavanti.ca/
*/
tenant: string;
latestASSP?: boolean;
/**
* Client ID
*/
client_id: string;
/**
* Client password
*/
client_secret: string;
/**
* Employee user name
*/
username: string;
/**
* Employee password
*/
password: string;
/**
* Company database name
*/
company: string;
device_id?: string;
}
export type AvantiApiOptions = {
method: 'get';
getParameters?: Record<string, string | number | boolean | undefined>;
} | {
method: 'post';
bodyParameters?: object;
};
export interface AvantiApiError {
type?: string;
title?: string;
status?: number;
detail?: string;
instance?: string;
error?: Error;
}
export type AvantiApiResponse<T> = {
success: true;
response: T;
} | {
success: false;
error: AvantiApiError;
};
export interface AccessTokenResponse {
access_token: string;
expires_in: number;
token_type: string;
scope: string;
auth_state: number;
company: string;
}
export type AvantiApiEndpoint = `/v${number}/${string}`;
export interface GetEmployeesRequest {
skip?: number;
take?: number;
empNoReference?: string;
search?: string;
total?: boolean;
active?: 0 | 1 | 2;
sortOrder?: 0 | 1 | 2;
sortDirection?: 0 | 1;
takeOption?: 0 | 1;
locations?: string[];
employmentStatus?: string[];
positions?: string[];
sortDefinitions?: Array<{
field?: string;
dir?: string;
}>;
}
export interface GetEmployeesResponse {
employees?: GetEmployeesEmployee[];
total?: number;
index?: number;
}
export interface GetEmployeesEmployee {
empNo?: string;
givenName?: string;
surname?: string;
preferredName?: string;
initial?: string;
positionName?: string;
positionNameFr?: string;
photoRevision?: number;
active: boolean;
email?: string;
}
export interface GetEmployeeEarningCodesEarningCode {
text?: string;
value?: string;
}
export interface GetEmployeeJobDataResponse {
employeeJobInfo: {
active: boolean;
location: string;
locationDescription?: string;
position: string;
positionName?: string;
employmentStatus: string;
employmentStatusDescription?: string;
jobStatus?: string;
jobStatusDescription?: string;
wcbGroup?: string;
wcbGroupDescription?: string;
unionCode?: string;
unionCodeDescription?: string;
workGroup?: string;
workGroupDescription?: string;
scheduleTemplate?: string;
scheduleTemplateDescription?: string;
reportsToPosition?: string;
reportsToEmployee?: string;
employeeNumber?: string;
employmentGroup?: string;
employmentGroupDescription?: string;
initialHireDate?: string;
lastHireDate?: string;
seniorityDate?: string;
overtimeExempt: boolean;
scheduleStartDate?: string;
scheduleEndDate?: string;
employeeFte: number;
};
glInfo: {
account?: string;
accountDescription?: string;
accountDescriptionAbrev?: string;
benefitGroup?: string;
benefitGroupName?: string;
group?: string;
groupName?: string;
option: string;
};
userDefinedDates: {
date1?: string;
date2?: string;
date3?: string;
date4?: string;
date5?: string;
date6?: string;
date7?: string;
date8?: string;
date9?: string;
date10?: string;
date11?: string;
date12?: string;
date1Name?: string;
date2Name?: string;
date3Name?: string;
date4Name?: string;
date5Name?: string;
date6Name?: string;
date7Name?: string;
date8Name?: string;
date9Name?: string;
date10Name?: string;
date11Name?: string;
date12Name?: string;
};
userDefinedValues: {
dedFig1: number;
dedFig2: number;
dedFig3: number;
dedFig4: number;
dedFig5: number;
dedFig6: number;
dedFig7: number;
dedFig8: number;
dedFig9: number;
dedFig10: number;
dedFig11: number;
dedFig12: number;
dedFig13: number;
dedFig14: number;
dedFig15: number;
otherText1?: string;
otherText2?: string;
otherText3?: string;
otherText4?: string;
otherText5?: string;
otherText6?: string;
otherText7?: string;
otherText8?: string;
otherText9?: string;
otherText10?: string;
otherText11?: string;
otherText12?: string;
otherText13?: string;
otherText14?: string;
otherText15?: string;
otherText16?: string;
otherText17?: string;
otherText18?: string;
otherText19?: string;
otherText20?: string;
dedFigName1?: string;
dedFigName2?: string;
dedFigName3?: string;
dedFigName4?: string;
dedFigName5?: string;
dedFigName6?: string;
dedFigName7?: string;
dedFigName8?: string;
dedFigName9?: string;
dedFigName10?: string;
dedFigName11?: string;
dedFigName12?: string;
dedFigName13?: string;
dedFigName14?: string;
dedFigName15?: string;
textFieldName1?: string;
textFieldName2?: string;
textFieldName3?: string;
textFieldName4?: string;
textFieldName5?: string;
textFieldName6?: string;
textFieldName7?: string;
textFieldName8?: string;
textFieldName9?: string;
textFieldName10?: string;
textFieldName11?: string;
textFieldName12?: string;
textFieldName13?: string;
textFieldName14?: string;
textFieldName15?: string;
textFieldName16?: string;
textFieldName17?: string;
textFieldName18?: string;
textFieldName19?: string;
textFieldName20?: string;
};
position: {
code?: string;
name?: string;
nameFrM?: string;
nameFrF?: string;
reportsToPosition?: string;
reportsToPositionName?: string;
reportsToPositionNameFrF?: string;
reportsToPositionNameFrM?: string;
primaryPosition?: string;
employeeFte: number;
totalActiveFte: string;
reportsToEmployee?: string;
effectiveDate?: string;
expiryDate?: string;
active: boolean;
};
employeePositions?: Array<{
position?: string;
positionName?: string;
active?: string;
payrate: number;
payRateUOM: string;
effectiveDate?: string;
expiryDate?: string;
rateSource: 0 | 1 | 2 | 3;
positionFte: number;
positionRateLevel: number;
ytdUnits: number;
ytdUOM?: string;
}>;
ytdLtdPositionUnits?: Array<{
position?: string;
positionName?: string;
rateLevel: number;
ytdUnits: number;
ytdUOM?: string;
ltdUnits: number;
ltdUOM: string;
}>;
}
export interface GetEmployeePersonalInfoResponse {
photoRevision?: number;
userName?: string;
givenName?: string;
surname?: string;
initial?: string;
preferredName?: string;
address1?: string;
address2?: string;
city?: string;
province?: string;
country?: 'CAN' | 'USA' | string;
postal?: string;
birthDate: string;
seniorityDate: string;
firstLanguage: string;
gender: 'F' | 'M' | 'X';
marital: 'M' | 'S' | 'D' | 'E' | 'F' | 'G' | string;
sin?: string;
previousSurname?: string;
sinExpiryDate?: string;
temporarySin: boolean;
phoneType1: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
phoneNumber1?: string;
phoneType2: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
phoneNumber2?: string;
phoneType3: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
phoneNumber3?: string;
phoneType4: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
phoneNumber4?: string;
email?: string;
emailType1: 0 | 1 | 2 | 3 | 4 | 5;
email1?: string;
emailType2: 0 | 1 | 2 | 3 | 4 | 5;
email2?: string;
emailType3: 0 | 1 | 2 | 3 | 4 | 5;
email3?: string;
emailType4: 0 | 1 | 2 | 3 | 4 | 5;
email4?: string;
emailType5: 0 | 1 | 2 | 3 | 4 | 5;
email5?: string;
otherText1?: string;
otherText2?: string;
otherText3?: string;
otherText4?: string;
otherText5?: string;
otherText6?: string;
otherText7?: string;
otherText8?: string;
otherText9?: string;
otherText10?: string;
otherText11?: string;
otherText12?: string;
otherText13?: string;
otherText14?: string;
otherText15?: string;
otherText16?: string;
otherText17?: string;
otherText18?: string;
otherText19?: string;
otherText20?: string;
dedFig1: number;
dedFig2: number;
dedFig3: number;
dedFig4: number;
dedFig5: number;
dedFig6: number;
dedFig7: number;
dedFig8: number;
dedFig9: number;
dedFig10: number;
dedFig11: number;
dedFig12: number;
dedFig13: number;
dedFig14: number;
dedFig15: number;
otherDate1?: string;
otherDate2?: string;
otherDate3?: string;
otherDate4?: string;
otherDate5?: string;
otherDate6?: string;
otherDate7?: string;
otherDate8?: string;
otherDate9?: string;
otherDate10?: string;
otherDate11?: string;
otherDate12?: string;
initialHireDate: string;
accumServHrs: number;
vacDate: string;
empNo?: string;
position?: string;
positionName?: string;
positionNameFr?: string;
active: boolean;
webStatements: boolean;
payGroup?: string;
location?: string;
provinceEmployed?: string;
fte: number;
wcbGroup?: string;
vacGroup?: string;
vacCode?: '0' | '1' | '2' | '3';
vacEarnCode?: string;
unionCode?: string;
glType?: 'a' | 'g';
glGroup?: string;
earnGl?: string;
workGroup?: string;
jobStatus?: string;
smoker: string;
lastHireDate: string;
prevVacEarn: number;
prevWcbEarn: number;
prevMiscEarnAccum1: number;
prevMiscEarnAccum2: number;
prevMiscEarnAccum3: number;
prevMiscEarnAccum4: number;
prevMiscEarnAccum5: number;
prevMiscEarnAccum6: number;
prevMiscEarnAccum7: number;
prevMiscEarnAccum8: number;
prevVacHrs: number;
prevWcbHrs: number;
prevWcbPremHrs: number;
prevMiscUnitsAccum1: number;
prevMiscUnitsAccum2: number;
prevMiscAccum16: number;
prevMiscAccum17: number;
prevMiscAccum18: number;
prevMiscAccum19: number;
prevMiscAccum20: number;
prevMiscAccum21: number;
prevMiscAccum22: number;
prevMiscAccum23: number;
prevMiscAccum24: number;
prevMiscAccum25: number;
prevMiscAccum26: number;
prevMiscAccum27: number;
prevMiscAccum28: number;
prevMiscAccum29: number;
prevMiscAccum30: number;
roleAssignmentPermissions?: Array<{
roleId?: string;
roleType: number;
startDate: string;
expiryDate: string;
approvalLevel: number;
insertData: boolean;
modifyData: boolean;
viewData: boolean;
deleteData: boolean;
viewAmounts: boolean;
createTime: boolean;
}>;
employeeNameFormat: number;
fullName?: string;
}
export interface GetTimeEntriesRequest extends Record<string, string | number | boolean | undefined> {
before?: boolean;
date: string;
empNo?: string;
endDate?: string;
id?: number;
skip?: number;
take?: number;
}
export interface GetTimeEntriesTimeEntry {
source: 0 | 1 | 2 | 3 | 4 | 5;
id: number;
empNo?: string;
date?: string;
originalDate?: string;
dates?: string;
unit?: number;
unitCode?: string;
unitCodeDescription?: string;
fromTime?: string;
toTime?: string;
originalFromTime?: string;
isApproved: boolean;
approvalLevel: number;
maxApprovalLevel: number;
approvedBy?: string;
approvedDate?: string;
positionCode?: string;
positionCodeDescription?: string;
comments?: string;
shiftId?: string;
shiftIdDescription?: string;
attendanceCode?: string;
attendanceCodeDescription?: string;
taskId?: string;
taskIdDescription?: string;
unionOverride?: string;
unionOverrideDescription?: string;
vacOverride?: string;
vacOverrideDescription?: string;
wcbOverride?: string;
wcbOverrideDescription?: string;
provEmployedOverride?: string;
provEmployedOverrideDescription?: string;
location?: string;
locationDescription?: string;
gl?: string;
glSegment: Array<{
no: number;
value?: string;
description?: string;
}>;
documents?: Array<{
documentId: number;
name?: string;
contentType?: string;
typeId: number;
typeIdDescription?: string;
fileName?: string;
content?: string;
description?: string;
summary?: string;
createdBy?: string;
isDirty: boolean;
readOnly: boolean;
allowInsert: boolean;
allowModify: boolean;
allowDelete: boolean;
allowView: boolean;
}>;
deletedDocuments?: number[];
userApprovalLevel: number;
allowInsert: boolean;
allowModify: boolean;
allowDelete: boolean;
viewAmounts: boolean;
unitEnabled: boolean;
unitCodeEnabled: boolean;
fromTimeEnabled: boolean;
toTimeEnabled: boolean;
shiftIdEnabled: boolean;
details?: string;
isDirty: boolean;
isValid: boolean;
status: 0 | 1 | 2 | 3 | 4;
readOnly: boolean;
isProcessed: boolean;
processedBy?: string;
processedDate?: string;
inExceptionCode?: number;
recordSource: number;
punchRuleId?: string;
breakRuleId?: string;
rate?: number;
earnDeductCode?: string;
earnDeductCodeDescription?: string;
workOrder?: string;
gridCode?: string;
gridPercent?: number;
glSource?: number;
glType?: string;
glGroup?: string;
glGroupDescription?: string;
benGroup?: string;
isUnscheduled: boolean;
outExceptionCode?: number;
createdBy?: string;
createdDateTime?: string;
modifiedBy?: string;
modifiedDateTime?: string;
recordSourceId: number;
isBreakRuleApplied: boolean;
isOtherRuleApplied: boolean;
isInBatch: boolean;
rateLevel?: number;
otOption: boolean;
payPrimaryPosRate: boolean;
payCode?: string;
payCodeDescription?: string;
createdFromTimeCardId: number;
exceptionCodes: number;
exceptions?: string;
timeCardOverrides?: Array<{
apply: boolean;
type: 0 | 1;
ruleId?: string;
typeDescription?: string;
description?: string;
}>;
timeCardEdits?: string;
modificationCodes: number;
scheduleFromTime?: number;
scheduleToTime?: number;
scheduleCode?: string;
scheduleUnits: number;
scheduleUnitCode?: string;
scheduled?: string;
isCancelled: boolean;
punchId?: string;
punchOut?: string;
punched?: string;
fromRawDataId: number;
toRawDataId: number;
fromRawDataIsBreak: boolean;
toRawDataIsBreak: boolean;
toRawEventTypeId: number;
fromRawEventTypeId: number;
scheduleId: number;
breakStart1?: number;
breakStart2?: number;
breakStart3?: number;
breakStart4?: number;
breakStart5?: number;
breakDuration1?: number;
breakDuration2?: number;
breakDuration3?: number;
breakDuration4?: number;
breakDuration5?: number;
timeSourceId: number;
batchNumber?: number;
week?: string;
earnType: number;
rateSource: number;
earningAmount: number;
deductionAmount: number;
benefitAmount: number;
payGroup?: string;
entryRejected: boolean;
leaveBenefitCode?: string;
leaveUnit: number;
leaveUnitCode?: string;
runNumber: number;
processedRunNumber: number;
isUpdated: boolean;
enteredBy?: string;
reduceSalary: boolean;
workGroupId?: string;
payEndingDate?: string;
availabilityType?: number;
availabilityTypeDescription?: string;
entrySourceId: number;
entrySourceType: number;
allDay: boolean;
allDayEnabled: boolean;
poolPickupRuleId?: string;
poolEntryId?: number;
poolCreatedBy?: string;
poolCreatedDate?: string;
poolIsCancelled: boolean;
poolExpiryDate?: string;
postSwapStatus?: string;
allowPostSwap: boolean;
poolRuleExists: boolean;
isPooled: boolean;
breaks?: string;
}
export interface GetTimeEntryTemplatesRequest extends Record<string, string | undefined> {
empNo?: string;
viewId?: string;
}
export interface GetTimeEntryTemplatesTimeEntryTemplate {
templateId?: string;
name?: string;
nameFr?: string;
priority: number;
source: 0 | 1 | 2 | 3 | 4 | 5;
copyUnits: boolean;
doNotSpanDays: boolean;
fields?: Array<{
name?: string;
index: number;
key?: string;
isDetail: boolean;
isVisible: boolean;
isReadOnly: boolean;
isRequired: boolean;
sortOrder: number;
defaultValue: unknown;
filters?: Array<{
codes?: string;
value: unknown;
}>;
header?: string;
headerFr?: string;
customHeader?: string;
customHeaderFr?: string;
customSetting?: string;
isDateField: boolean;
validation?: Array<{
validation?: string;
validationMessage?: string;
validationMessageFr?: string;
}>;
}>;
filters?: Array<{
table?: string;
id: number;
description?: string;
letter?: string;
fieldName?: string;
condition: number;
value?: string;
valueType: number;
conjunction: 0 | 1;
openingBrackets: number;
closingBrackets: number;
}>;
criteria?: Array<{
table?: string;
id: number;
description?: string;
letter?: string;
fieldName?: string;
condition: number;
value?: string;
valueType: number;
conjunction: number;
openingBrackets: number;
closingBrackets: number;
}>;
validation?: Array<{
expression?: string;
type: 0 | 1 | 2 | 3;
onLoad: boolean;
message?: string;
messageFr?: string;
}>;
userGroups?: string[];
payGroupEntitlementValidation?: object;
entitlementThreshold?: object;
allowInvalidGlAccount: boolean;
showEntitlements: boolean;
dateExpression?: string;
calendarColor: 0 | 1 | 2 | 3 | 4;
calendarMonthExpression?: string;
calendarMonthDescExpression?: string;
calendarWeekExpression?: string;
calendarWeekDescExpression?: string;
calendarDayExpression?: string;
calendarDayDescExpression?: string;
allowPooling: boolean;
filterGlSegments: boolean;
glSegmentFields?: Array<{
name?: string;
index: number;
key?: string;
isDetail: boolean;
isVisible: boolean;
isReadOnly: boolean;
isRequired: boolean;
sortOrder: number;
defaultValue?: unknown;
filters?: Array<{
codes?: string;
value: unknown;
}>;
header?: string;
headerFr?: string;
customHeader?: string;
customHeaderFr?: string;
customSetting?: string;
isDateField: boolean;
validation?: Array<{
validation?: string;
validationMessage?: string;
validationMessageFr?: string;
}>;
}>;
}