UNPKG

@cityssm/avanti-api

Version:

An unofficial wrapper around the Avanti API.

748 lines (747 loc) 20.1 kB
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; }>; }>; }