shifts

package
v1.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 20, 2023 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API struct {
	*zoho.Zoho
	// contains filtered or unexported fields
}

API is used for interacting with the Zoho Shifts API the exposed methods are primarily access to Shifts modules which provide access to Shifts Methods

func New

func New(z *zoho.Zoho) *API

New returns a *shifts.API with the provided zoho.Zoho as an embedded field

func (*API) ActivateEmployee

func (s *API) ActivateEmployee(request ActivateEmployeeRequest) (data ActivateEmployeeResponse, err error)

ActivateEmployee activates the employee accounts of the employee IDs provided https://www.zoho.com/shifts/api/v1/employees-api/#activate-employees

func (*API) ApproveTimeoffRequest

func (s *API) ApproveTimeoffRequest(id string) (data ApproveTimeoffResponse, err error)

ApproveTimeoffRequest approves the timeoff request with the given id https://www.zoho.com/shifts/api/v1/time-off-requests-api/#approve-a-time-off-request

func (*API) CancelTimeoffRequest

func (s *API) CancelTimeoffRequest(id string) (data CancelTimeoffResponse, err error)

CancelTimeoffRequest cancels the timeoff request with the given id https://www.zoho.com/shifts/api/v1/time-off-requests-api/#cancel-a-time-off-request

func (*API) CreateAvailability

func (s *API) CreateAvailability(request CreateAvailabilityRequest) (data CreateAvailabilityResponse, err error)

CreateAvailability adds a new record to the list of available shifts https://www.zoho.com/shifts/api/v1/availability-api/#create-an-availability

func (*API) CreateEmployee

func (s *API) CreateEmployee(request CreateEmployeeRequest) (data CreateEmployeeResponse, err error)

CreateEmployee adds a new record to the list of employees https://www.zoho.com/shifts/api/v1/employees-api/#create-an-employee

func (*API) CreateJobsite

func (s *API) CreateJobsite(request CreateJobsiteRequest) (data CreateJobsiteResponse, err error)

CreateJobsite adds a new record to the list of job sites https://www.zoho.com/shifts/api/v1/job-sites-api/#create-a-job-site

func (*API) CreatePosition

func (s *API) CreatePosition(request CreatePositionRequest) (data CreatePositionResponse, err error)

CreatePosition adds a new record to the list of positions https://www.zoho.com/shifts/api/v1/positions-api/#create-a-position

func (*API) CreateSchedule

func (s *API) CreateSchedule(request CreateScheduleRequest) (data CreateScheduleResponse, err error)

CreateSchedule adds a new record to the list of schedules https://www.zoho.com/shifts/api/v1/schedules-api/#create-a-schedule

func (*API) CreateShift

func (s *API) CreateShift(request CreateShiftRequest) (data CreateShiftResponse, err error)

CreateShift adds a new record to the list of shifts https://www.zoho.com/shifts/api/v1/shifts-api/#create-a-shift

func (*API) CreateTimeoffRequest

func (s *API) CreateTimeoffRequest(request CreateTimeoffRequest) (data CreateTimeoffResponse, err error)

CreateTimeoffRequest adds a new record to the list of employee timeoff requests https://www.zoho.com/shifts/api/v1/time-off-requests-api/#create-a-time-off-request

func (*API) CreateTimesheet

func (s *API) CreateTimesheet(request CreateTimesheetRequest) (data CreateTimesheetResponse, err error)

CreateTimesheet adds a new record to the list of employee timesheets https://www.zoho.com/shifts/api/v1/timesheets-api/#create-a-time-entry

func (*API) DeactivateEmployee

func (s *API) DeactivateEmployee(request DeactivateEmployeeRequest) (data DeactivateEmployeeResponse, err error)

DeactivateEmployee deactivates the employee accounts of the employee IDs provided https://www.zoho.com/shifts/api/v1/employees-api/#deactivate-employees

func (*API) DeleteAvailability

func (s *API) DeleteAvailability(id string) (data DeleteAvailabilityResponse, err error)

DeleteAvailability deletes the availability record with the given ID https://www.zoho.com/shifts/api/v1/availability-api/#delete-an-availability

func (*API) DeleteJobsite

func (s *API) DeleteJobsite(id string) (data DeleteJobsiteResponse, err error)

DeleteJobsite deletes the job site record with the given ID https://www.zoho.com/shifts/api/v1/job-sites-api/#delete-a-job-site

func (*API) DeletePosition

func (s *API) DeletePosition(id string) (data DeletePositionResponse, err error)

DeletePosition deletes the schedule record with the given ID https://www.zoho.com/shifts/api/v1/positions-api/#delete-a-position

func (*API) DeleteSchedule

func (s *API) DeleteSchedule(id string) (data DeleteScheduleResponse, err error)

DeleteSchedule deletes the schedule record with the given ID https://www.zoho.com/shifts/api/v1/schedules-api/#delete-a-schedule

func (*API) DeleteShift

func (s *API) DeleteShift(id string) (data DeleteShiftResponse, err error)

DeleteShift deletes the shift record with the given ID https://www.zoho.com/shifts/api/v1/shifts-api/#delete-a-shift

func (*API) DeleteTimeoffRequest

func (s *API) DeleteTimeoffRequest(id string) (data DeleteTimeoffResponse, err error)

DeleteTimeoffRequest deletes the timeoff request record with the given ID https://www.zoho.com/shifts/api/v1/time-off-requests-api/#delete-a-time-off-request

func (*API) DeleteTimesheet

func (s *API) DeleteTimesheet(id string) (data DeleteTimesheetResponse, err error)

DeleteTimesheet deletes the timesheet record with the given ID https://www.zoho.com/shifts/api/v1/timesheets-api/#delete-a-time-entry

func (*API) DenyTimeoffRequest

func (s *API) DenyTimeoffRequest(id string) (data DenyTimeoffResponse, err error)

DenyTimeoffRequest denies the timeoff request with the given id https://www.zoho.com/shifts/api/v1/time-off-requests-api/#deny-a-time-off-request

func (*API) GetAllAvailabilities

func (s *API) GetAllAvailabilities(params map[string]zoho.Parameter) (data GetAvailabilitiesResponse, err error)

GetAllAvailabilities returns a list of all employee availabilities https://www.zoho.com/shifts/api/v1/availability-api/#get-all-availabilities

func (*API) GetAllEmployees

func (s *API) GetAllEmployees(params map[string]zoho.Parameter) (data GetEmployeesResponse, err error)

GetAllEmployees returns a list of all employees https://www.zoho.com/shifts/api/v1/employees-api/#get-all-employees

func (*API) GetAllJobsites

func (s *API) GetAllJobsites(params map[string]zoho.Parameter) (data GetJobsitesResponse, err error)

GetAllJobsites returns a list of all job sites https://www.zoho.com/shifts/api/v1/job-sites-api/#get-all-job-sites

func (*API) GetAllPositions

func (s *API) GetAllPositions(params map[string]zoho.Parameter) (data GetPositionsResponse, err error)

GetAllPositions returns a list of all position https://www.zoho.com/shifts/api/v1/positions-api/#get-all-positions

func (*API) GetAllSchedules

func (s *API) GetAllSchedules(params map[string]zoho.Parameter) (data GetSchedulesResponse, err error)

GetAllSchedules returns a list of all schedules https://www.zoho.com/shifts/api/v1/schedules-api/#get-all-schedules

func (*API) GetAllShifts

func (s *API) GetAllShifts(params map[string]zoho.Parameter) (data GetShiftsResponse, err error)

GetAllShifts returns a list of all shifts https://www.zoho.com/shifts/api/v1/shifts-api/#get-all-shifts

func (*API) GetAllTimeoffRequests

func (s *API) GetAllTimeoffRequests(params map[string]zoho.Parameter) (data GetTimeoffsResponse, err error)

GetAllTimeoffRequests returns a list of all employee timeoff requests https://www.zoho.com/shifts/api/v1/time-off-requests-api/#get-all-time-off-requests

func (*API) GetAllTimesheets

func (s *API) GetAllTimesheets(params map[string]zoho.Parameter) (data GetTimesheetsResponse, err error)

GetAllTimesheets returns a list of all employee timesheets https://www.zoho.com/shifts/api/v1/timesheets-api/#get-all-time-entries

func (*API) GetEmployee

func (s *API) GetEmployee(id string) (data GetEmployeeResponse, err error)

GetEmployee retrieves the employee record with the given ID https://www.zoho.com/shifts/api/v1/employees-api/#get-an-employee

func (*API) GetShift

func (s *API) GetShift(id string) (data GetShiftResponse, err error)

GetShift retrieves the shift record with the given ID https://www.zoho.com/shifts/api/v1/shifts-api/#get-a-shift

func (*API) GetTimeoffRequest

func (s *API) GetTimeoffRequest(id string) (data GetTimeoffResponse, err error)

GetTimeoffRequest retrieves the timeoff request record with the given ID https://www.zoho.com/shifts/api/v1/time-off-requests-api/#get-a-time-off-request

func (*API) GetTimesheet

func (s *API) GetTimesheet(id string) (data GetTimesheetResponse, err error)

GetTimesheet retrieves the timesheet record with the given ID https://www.zoho.com/shifts/api/v1/timesheets-api/#get-a-time-entry

func (*API) InviteEmployee

func (s *API) InviteEmployee(request InviteEmployeeRequest) (data InviteEmployeeResponse, err error)

InviteEmployee sends an invite to the employee accounts of the employee IDs provided https://www.zoho.com/shifts/api/v1/employees-api/#invite-employees

func (*API) UpdateAvailability

func (s *API) UpdateAvailability(id string, request UpdateAvailabilityRequest) (data UpdateAvailabilityResponse, err error)

UpdateAvailability modifies the availability with the given ID https://www.zoho.com/shifts/api/v1/availability-api/#update-an-availability

func (*API) UpdateEmployee

func (s *API) UpdateEmployee(id string, request UpdateEmployeeRequest) (data UpdateEmployeeResponse, err error)

UpdateEmployee modifies the employee with the given ID https://www.zoho.com/shifts/api/v1/employees-api/#update-an-employee

func (*API) UpdateJobsite

func (s *API) UpdateJobsite(id string, request UpdateJobsiteRequest) (data UpdateJobsiteResponse, err error)

UpdateJobsite modifies the job site with the given ID https://www.zoho.com/shifts/api/v1/job-sites-api/#update-a-job-site

func (*API) UpdatePosition

func (s *API) UpdatePosition(id string, request UpdatePositionRequest) (data UpdatePositionResponse, err error)

UpdatePosition modifies the position with the given ID https://www.zoho.com/shifts/api/v1/positions-api/#update-a-position

func (*API) UpdateSchedule

func (s *API) UpdateSchedule(id string, request UpdateScheduleRequest) (data UpdateScheduleResponse, err error)

UpdateSchedule modifies the schedule with the given ID https://www.zoho.com/shifts/api/v1/schedules-api/#update-a-schedule

func (*API) UpdateShift

func (s *API) UpdateShift(id string, request UpdateShiftRequest) (data UpdateShiftResponse, err error)

UpdateShift modifies the shift with the given ID https://www.zoho.com/shifts/api/v1/shifts-api/#update-a-shift

func (*API) UpdateTimeoff

func (s *API) UpdateTimeoff(id string, request UpdateTimeoffRequest) (data UpdateTimeoffResponse, err error)

UpdateTimeoffRequest modifies the timeoff request with the given ID https://www.zoho.com/shifts/api/v1/time-off-requests-api/#update-a-time-off-request

func (*API) UpdateTimesheet

func (s *API) UpdateTimesheet(id string, request UpdateTimesheetRequest) (data UpdateTimesheetResponse, err error)

UpdateTimesheet modifies the timesheet with the given ID https://www.zoho.com/shifts/api/v1/timesheets-api/#update-a-time-entry

type ActivateEmployeeRequest

type ActivateEmployeeRequest struct {
	Employees []string `json:"employees"` // required
}

type ActivateEmployeeResponse

type ActivateEmployeeResponse struct {
	Message string `json:"message,omitempty"`
}

type ApproveTimeoffResponse

type ApproveTimeoffResponse struct {
	ID             string    `json:"id,omitempty"`
	StartDate      time.Time `json:"start_date,omitempty"`
	EndDate        time.Time `json:"end_date,omitempty"`
	EmployeeID     string    `json:"employee_id,omitempty"`
	Employee       string    `json:"employee,omitempty"`
	RequestedByID  string    `json:"requested_by_id,omitempty"`
	RequestedBy    string    `json:"requested_by,omitempty"`
	TypeID         string    `json:"type_id,omitempty"`
	Type           string    `json:"type,omitempty"`
	DayType        string    `json:"day_type,omitempty"`
	Duration       float64   `json:"duration,omitempty"`
	Status         string    `json:"status,omitempty"`
	CreatedAt      time.Time `json:"created_at,omitempty"`
	IsPaid         bool      `json:"is_paid,omitempty"`
	Reason         string    `json:"reason,omitempty"`
	ApproverID     string    `json:"approver_id,omitempty"`
	Approver       string    `json:"approver,omitempty"`
	ApprovalRespAt time.Time `json:"approval_resp_at,omitempty"`
	CancelledAt    time.Time `json:"cancelled_at,omitempty"`
	UpdatedAt      time.Time `json:"updated_at,omitempty"`
	Comments       []struct {
		CommentID   string    `json:"comment_id,omitempty"`
		Comment     string    `json:"comment,omitempty"`
		CommenterID string    `json:"commenter_id,omitempty"`
		Commenter   string    `json:"commenter,omitempty"`
		CreatedAt   time.Time `json:"created_at,omitempty"`
	} `json:"comments,omitempty"`
}

type CancelTimeoffResponse

type CancelTimeoffResponse struct {
	ID             string    `json:"id,omitempty"`
	StartDate      time.Time `json:"start_date,omitempty"`
	EndDate        time.Time `json:"end_date,omitempty"`
	EmployeeID     string    `json:"employee_id,omitempty"`
	Employee       string    `json:"employee,omitempty"`
	RequestedByID  string    `json:"requested_by_id,omitempty"`
	RequestedBy    string    `json:"requested_by,omitempty"`
	TypeID         string    `json:"type_id,omitempty"`
	Type           string    `json:"type,omitempty"`
	DayType        string    `json:"day_type,omitempty"`
	Duration       float64   `json:"duration,omitempty"`
	Status         string    `json:"status,omitempty"`
	CreatedAt      time.Time `json:"created_at,omitempty"`
	IsPaid         bool      `json:"is_paid,omitempty"`
	Reason         string    `json:"reason,omitempty"`
	ApproverID     string    `json:"approver_id,omitempty"`
	Approver       string    `json:"approver,omitempty"`
	ApprovalRespAt time.Time `json:"approval_resp_at,omitempty"`
	CancelledAt    time.Time `json:"cancelled_at,omitempty"`
	UpdatedAt      time.Time `json:"updated_at,omitempty"`
	Comments       []struct {
		CommentID   string    `json:"comment_id,omitempty"`
		Comment     string    `json:"comment,omitempty"`
		CommenterID string    `json:"commenter_id,omitempty"`
		Commenter   string    `json:"commenter,omitempty"`
		CreatedAt   time.Time `json:"created_at,omitempty"`
	} `json:"comments,omitempty"`
}

type CreateAvailabilityRequest

type CreateAvailabilityRequest struct {
	EmployeeID string    `json:"employee_id"` // required
	StartTime  time.Time `json:"start_time"`  // required
	EndTime    time.Time `json:"end_time"`    // required
	Preference string    `json:"preference"`  // required: preferred, unavailable
	Notes      string    `json:"notes,omitempty"`
}

type CreateAvailabilityResponse

type CreateAvailabilityResponse struct {
	ID         string    `json:"id,omitempty"`
	EmployeeID string    `json:"employee_id,omitempty"`
	StartTime  time.Time `json:"start_time,omitempty"`
	EndTime    time.Time `json:"end_time,omitempty"`
	Preference string    `json:"preference,omitempty"`
	Notes      string    `json:"notes,omitempty"`
}

type CreateEmployeeRequest

type CreateEmployeeRequest struct {
	FirstName         string `json:"first_name"` // required
	LastName          string `json:"last_name,omitempty"`
	WorkEmail         string `json:"work_email,omitempty"`
	Mobile            string `json:"mobile,omitempty"`
	MobileCountryCode string `json:"mobile_country_code,omitempty"`
	Schedules         []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules"` // required
	Positions []struct {
		ID string `json:"id,omitempty"`
	} `json:"positions,omitempty"`
	Timezone           string `json:"timezone"` // required
	AccessLevelID      string `json:"access_level_id,omitempty"`
	SendInvitation     bool   `json:"send_invitation,omitempty"`
	HourlyRate         int    `json:"hourly_rate,omitempty"`
	HireDate           string `json:"hire_date,omitempty"`
	ExternalEmployeeID string `json:"external_employee_id,omitempty"`
	HideFromSchedule   bool   `json:"hide_from_schedule,omitempty"`
	OvertimeRuleID     string `json:"overtime_rule_id,omitempty"`
	EmploymentType     string `json:"employment_type,omitempty"`
	MaxHrsWeek         int    `json:"max_hrs_week,omitempty"`
	MinHrsWeek         int    `json:"min_hrs_week,omitempty"`
	MaxHrsDay          int    `json:"max_hrs_day,omitempty"`
	MaxDaysWeek        int    `json:"max_days_week,omitempty"`
	MaxShiftsDay       int    `json:"max_shifts_day,omitempty"`
}

type CreateEmployeeResponse

type CreateEmployeeResponse struct {
	ID                string `json:"id,omitempty"`
	FirstName         string `json:"first_name,omitempty"`
	LastName          string `json:"last_name,omitempty"`
	WorkEmail         string `json:"work_email,omitempty"`
	Mobile            string `json:"mobile,omitempty"`
	MobileCountryCode string `json:"mobile_country_code,omitempty"`
	Schedules         []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules,omitempty"`
	Positions []struct {
		ID string `json:"id,omitempty"`
	} `json:"positions,omitempty"`
	Timezone           string `json:"timezone,omitempty"`
	AccessLevelID      string `json:"access_level_id,omitempty"`
	Status             string `json:"status,omitempty"`
	InviteStatus       string `json:"invite_status,omitempty"`
	HireDate           string `json:"hire_date,omitempty"`
	ExternalEmployeeID string `json:"external_employee_id,omitempty"`
	HideFromSchedule   bool   `json:"hide_from_schedule,omitempty"`
	OvertimeRuleID     string `json:"overtime_rule_id,omitempty"`
	EmploymentType     string `json:"employment_type,omitempty"`
	MaxHrsWeek         int    `json:"max_hrs_week,omitempty"`
	MinHrsWeek         int    `json:"min_hrs_week,omitempty"`
	MaxHrsDay          int    `json:"max_hrs_day,omitempty"`
	MaxDaysWeek        int    `json:"max_days_week,omitempty"`
	MaxShiftsDay       int    `json:"max_shifts_day,omitempty"`
}

type CreateJobsiteRequest

type CreateJobsiteRequest struct {
	Name      string `json:"name"` // required
	Schedules []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules,omitempty"`
	Address   string `json:"address,omitempty"`
	Latitude  string `json:"latitude,omitempty"`
	Longitude string `json:"longitude,omitempty"`
	Notes     string `json:"notes,omitempty"`
}

type CreateJobsiteResponse

type CreateJobsiteResponse struct {
	ID        string `json:"id,omitempty"`
	Name      string `json:"name,omitempty"`
	Schedules []struct {
		ID   string `json:"id,omitempty"`
		Name string `json:"name,omitempty"`
	} `json:"schedules,omitempty"`
	Address   string `json:"address,omitempty"`
	Latitude  string `json:"latitude,omitempty"`
	Longitude string `json:"longitude,omitempty"`
	Notes     string `json:"notes,omitempty"`
}

type CreatePositionRequest

type CreatePositionRequest struct {
	Name      string `json:"name"`            // required
	Color     string `json:"color,omitempty"` // red, pink, magenta, purple, deep-purple, indigo, light-violet, blue, light-blue, cyan, muted-green, teal, green, light-green, lime, yellow, amber, orange, deep-orange, brown, grey, blue-grey
	Schedules []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules,omitempty"`
}

type CreatePositionResponse

type CreatePositionResponse struct {
	ID        string `json:"id,omitempty"`
	Name      string `json:"name,omitempty"`
	Color     string `json:"color,omitempty"`
	Schedules []struct {
		ID   string `json:"id,omitempty"`
		Name string `json:"name,omitempty"`
	} `json:"schedules,omitempty"`
}

type CreateScheduleRequest

type CreateScheduleRequest struct {
	Name      string `json:"name"` // required
	Address   string `json:"address,omitempty"`
	Latitude  string `json:"latitude,omitempty"`
	Longitude string `json:"longitude,omitempty"`
}

type CreateScheduleResponse

type CreateScheduleResponse struct {
	ID        string `json:"id,omitempty"`
	Name      string `json:"name,omitempty"`
	Timezone  string `json:"timezone,omitempty"`
	Address   string `json:"address,omitempty"`
	Latitude  string `json:"latitude,omitempty"`
	Longitude string `json:"longitude,omitempty"`
}

type CreateShiftRequest

type CreateShiftRequest struct {
	StartTime  time.Time `json:"start_time"`            // required
	EndTime    time.Time `json:"end_time"`              // required
	EmployeeID string    `json:"employee_id,omitempty"` // empty creates an open shift
	Count      int       `json:"count,omitempty"`
	ScheduleID string    `json:"schedule_id"` // required
	PositionID string    `json:"position_id"` // required
	JobSiteID  string    `json:"job_site_id,omitempty"`
	Notes      string    `json:"notes,omitempty"`
	Breaks     []struct {
		BreakID      string    `json:"break_id,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
	} `json:"breaks,omitempty"`
}

type CreateShiftResponse

type CreateShiftResponse struct {
	ID            string    `json:"id,omitempty"`
	StartTime     time.Time `json:"start_time,omitempty"`
	EndTime       time.Time `json:"end_time,omitempty"`
	EmployeeID    string    `json:"employee_id,omitempty"`
	Count         int       `json:"count,omitempty"`
	ScheduleID    string    `json:"schedule_id,omitempty"`
	PositionID    string    `json:"position_id,omitempty"`
	JobSiteID     string    `json:"job_site_id,omitempty"`
	Duration      float64   `json:"duration,omitempty"`
	BreakDuration float64   `json:"break_duration,omitempty"`
	Notes         string    `json:"notes,omitempty"`
	IsPublished   bool      `json:"is_published,omitempty"`
	IsConfirmed   bool      `json:"is_confirmed,omitempty"`
	Breaks        []struct {
		BreakID      string    `json:"break_id,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
		IsPaid       bool      `json:"is_paid,omitempty"`
	} `json:"breaks,omitempty"`
}

type CreateTimeoffRequest

type CreateTimeoffRequest struct {
	EmployeeID string    `json:"employee_id,omitempty"`
	StartDate  time.Time `json:"start_date"` // required
	EndDate    time.Time `json:"end_date"`   // required
	TypeID     string    `json:"type_id"`    // required
	DayType    string    `json:"day_type"`   // required: all_day, partial
	Reason     string    `json:"reason,omitempty"`
}

type CreateTimeoffResponse

type CreateTimeoffResponse struct {
	ID             string    `json:"id,omitempty"`
	StartDate      time.Time `json:"start_date,omitempty"`
	EndDate        time.Time `json:"end_date,omitempty"`
	EmployeeID     string    `json:"employee_id,omitempty"`
	Employee       string    `json:"employee,omitempty"`
	RequestedByID  string    `json:"requested_by_id,omitempty"`
	RequestedBy    string    `json:"requested_by,omitempty"`
	TypeID         string    `json:"type_id,omitempty"`
	Type           string    `json:"type,omitempty"`
	DayType        string    `json:"day_type,omitempty"`
	Duration       float64   `json:"duration,omitempty"`
	Status         string    `json:"status,omitempty"`
	CreatedAt      time.Time `json:"created_at,omitempty"`
	IsPaid         bool      `json:"is_paid,omitempty"`
	Reason         string    `json:"reason,omitempty"`
	ApproverID     string    `json:"approver_id,omitempty"`
	Approver       string    `json:"approver,omitempty"`
	ApprovalRespAt time.Time `json:"approval_resp_at,omitempty"`
	CancelledAt    time.Time `json:"cancelled_at,omitempty"`
	UpdatedAt      time.Time `json:"updated_at,omitempty"`
	Comments       []struct {
		CommentID   string    `json:"comment_id,omitempty"`
		Comment     string    `json:"comment,omitempty"`
		CommenterID string    `json:"commenter_id,omitempty"`
		Commenter   string    `json:"commenter,omitempty"`
		CreatedAt   time.Time `json:"created_at,omitempty"`
	} `json:"comments,omitempty"`
}

type CreateTimesheetRequest

type CreateTimesheetRequest struct {
	StartTime  time.Time `json:"start_time"` // required
	EndTime    time.Time `json:"end_time,omitempty"`
	EmployeeID string    `json:"employee_id"` // required
	ScheduleID string    `json:"schedule_id"` // required
	PositionID string    `json:"position_id"` // required
	JobSiteID  string    `json:"job_site_id,omitempty"`
	Notes      string    `json:"notes,omitempty"`
	ShiftID    string    `json:"shift_id,omitempty"`
	Breaks     []struct {
		BreakID      string    `json:"break_id,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
	} `json:"breaks,omitempty"`
}

type CreateTimesheetResponse

type CreateTimesheetResponse struct {
	ID               string    `json:"id,omitempty"`
	StartTime        time.Time `json:"start_time,omitempty"`
	EndTime          time.Time `json:"end_time,omitempty"`
	EmployeeID       string    `json:"employee_id,omitempty"`
	Employee         string    `json:"employee,omitempty"`
	ScheduleID       string    `json:"schedule_id,omitempty"`
	Schedule         string    `json:"schedule,omitempty"`
	PositionID       string    `json:"position_id,omitempty"`
	Position         string    `json:"position,omitempty"`
	JobSiteID        string    `json:"job_site_id,omitempty"`
	JobSite          string    `json:"job_site,omitempty"`
	Type             string    `json:"type,omitempty"`
	Duration         float64   `json:"duration,omitempty"`
	BreakDuration    float64   `json:"break_duration,omitempty"`
	Notes            string    `json:"notes,omitempty"`
	Status           string    `json:"status,omitempty"`
	TimeoffRequestID string    `json:"timeoff_request_id,omitempty"`
	TimeoffTypeID    string    `json:"timeoff_type_id,omitempty"`
	TimeoffType      string    `json:"timeoff_type,omitempty"`
	InLat            float64   `json:"in_lat,omitempty"`
	InLng            float64   `json:"in_lng,omitempty"`
	OutLat           float64   `json:"out_lat,omitempty"`
	OutLng           float64   `json:"out_lng,omitempty"`
	Latitude         float64   `json:"latitude,omitempty"`
	Longitude        float64   `json:"longitude,omitempty"`
	ShiftID          string    `json:"shift_id,omitempty"`
	Breaks           []struct {
		BreakID      string    `json:"break_id,omitempty"`
		BreakName    string    `json:"break_name,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
		IsPaid       bool      `json:"is_paid,omitempty"`
	} `json:"breaks,omitempty"`
}

type DeactivateEmployeeRequest

type DeactivateEmployeeRequest struct {
	Employees []string `json:"employees"` // required
}

type DeactivateEmployeeResponse

type DeactivateEmployeeResponse struct {
	Message string `json:"message,omitempty"`
}

type DeleteAvailabilityResponse

type DeleteAvailabilityResponse struct {
	Message string `json:"message,omitempty"`
}

type DeleteJobsiteResponse

type DeleteJobsiteResponse struct {
	Message string `json:"message,omitempty"`
}

type DeletePositionResponse

type DeletePositionResponse struct {
	Message string `json:"message,omitempty"`
}

type DeleteScheduleResponse

type DeleteScheduleResponse struct {
	Message string `json:"message,omitempty"`
}

type DeleteShiftResponse

type DeleteShiftResponse struct {
	Message string `json:"message,omitempty"`
}

type DeleteTimeoffResponse

type DeleteTimeoffResponse struct {
	Message string `json:"message,omitempty"`
}

type DeleteTimesheetResponse

type DeleteTimesheetResponse struct {
	Message string `json:"message,omitempty"`
}

type DenyTimeoffResponse

type DenyTimeoffResponse struct {
	ID             string    `json:"id,omitempty"`
	StartDate      time.Time `json:"start_date,omitempty"`
	EndDate        time.Time `json:"end_date,omitempty"`
	EmployeeID     string    `json:"employee_id,omitempty"`
	Employee       string    `json:"employee,omitempty"`
	RequestedByID  string    `json:"requested_by_id,omitempty"`
	RequestedBy    string    `json:"requested_by,omitempty"`
	TypeID         string    `json:"type_id,omitempty"`
	Type           string    `json:"type,omitempty"`
	DayType        string    `json:"day_type,omitempty"`
	Duration       float64   `json:"duration,omitempty"`
	Status         string    `json:"status,omitempty"`
	CreatedAt      time.Time `json:"created_at,omitempty"`
	IsPaid         bool      `json:"is_paid,omitempty"`
	Reason         string    `json:"reason,omitempty"`
	ApproverID     string    `json:"approver_id,omitempty"`
	Approver       string    `json:"approver,omitempty"`
	ApprovalRespAt time.Time `json:"approval_resp_at,omitempty"`
	CancelledAt    time.Time `json:"cancelled_at,omitempty"`
	UpdatedAt      time.Time `json:"updated_at,omitempty"`
	Comments       []struct {
		CommentID   string    `json:"comment_id,omitempty"`
		Comment     string    `json:"comment,omitempty"`
		CommenterID string    `json:"commenter_id,omitempty"`
		Commenter   string    `json:"commenter,omitempty"`
		CreatedAt   time.Time `json:"created_at,omitempty"`
	} `json:"comments,omitempty"`
}

type GetAvailabilitiesResponse

type GetAvailabilitiesResponse struct {
	Availabilities []struct {
		ID         string    `json:"id,omitempty"`
		EmployeeID string    `json:"employee_id,omitempty"`
		StartTime  time.Time `json:"start_time"`
		EndTime    time.Time `json:"end_time"`
		Preference string    `json:"preference,omitempty"`
		Notes      string    `json:"notes,omitempty"`
	} `json:"availabilities,omitempty"`
}

type GetEmployeeResponse

type GetEmployeeResponse struct {
	ID                string `json:"id,omitempty"`
	FirstName         string `json:"first_name,omitempty"`
	LastName          string `json:"last_name,omitempty"`
	WorkEmail         string `json:"work_email,omitempty"`
	Mobile            string `json:"mobile,omitempty"`
	MobileCountryCode string `json:"mobile_country_code,omitempty"`
	AccessLevelID     string `json:"access_level_id,omitempty"`
	Status            string `json:"status,omitempty"`
	InviteStatus      string `json:"invite_status,omitempty"`
	Schedules         []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules,omitempty"`
	Positions []struct {
		ID string `json:"id,omitempty"`
	} `json:"positions,omitempty"`
	Timezone           string `json:"timezone,omitempty"`
	HireDate           string `json:"hire_date,omitempty"`
	ExternalEmployeeID string `json:"external_employee_id,omitempty"`
	HideFromSchedule   bool   `json:"hide_from_schedule,omitempty"`
	OvertimeRuleID     string `json:"overtime_rule_id,omitempty"`
	EmploymentType     string `json:"employment_type,omitempty"`
	MaxHrsWeek         int    `json:"max_hrs_week,omitempty"`
	MinHrsWeek         int    `json:"min_hrs_week,omitempty"`
	MaxHrsDay          int    `json:"max_hrs_day,omitempty"`
	MaxDaysWeek        int    `json:"max_days_week,omitempty"`
	MaxShiftsDay       int    `json:"max_shifts_day,omitempty"`
}

type GetEmployeesResponse

type GetEmployeesResponse struct {
	Employees []struct {
		ID                string `json:"id,omitempty"`
		FirstName         string `json:"first_name,omitempty"`
		LastName          string `json:"last_name,omitempty"`
		WorkEmail         string `json:"work_email,omitempty"`
		Mobile            string `json:"mobile,omitempty"`
		MobileCountryCode string `json:"mobile_country_code,omitempty"`
		AccessLevelID     string `json:"access_level_id,omitempty"`
		Status            string `json:"status,omitempty"`
		InviteStatus      string `json:"invite_status,omitempty"`
		Schedules         []struct {
			ID string `json:"id,omitempty"`
		} `json:"schedules,omitempty"`
		Positions []struct {
			ID string `json:"id,omitempty"`
		} `json:"positions,omitempty"`
	} `json:"employees,omitempty"`
	Meta struct {
		Count int `json:"count,omitempty"`
		Limit int `json:"limit,omitempty"`
		Page  int `json:"page,omitempty"`
	} `json:"meta,omitempty"`
}

type GetJobsitesResponse

type GetJobsitesResponse struct {
	JobSites []struct {
		ID        string `json:"id,omitempty"`
		Name      string `json:"name,omitempty"`
		Schedules []struct {
			ID   string `json:"id,omitempty"`
			Name string `json:"name,omitempty"`
		} `json:"schedules,omitempty"`
		Address   string `json:"address,omitempty"`
		Latitude  string `json:"latitude,omitempty"`
		Longitude string `json:"longitude,omitempty"`
		Notes     string `json:"notes,omitempty"`
	} `json:"job_sites,omitempty"`
	Meta struct {
		Count int `json:"count,omitempty"`
		Limit int `json:"limit,omitempty"`
		Page  int `json:"page,omitempty"`
	} `json:"meta,omitempty"`
}

type GetPositionsResponse

type GetPositionsResponse struct {
	Positions []struct {
		ID        string `json:"id,omitempty"`
		Name      string `json:"name,omitempty"`
		Color     string `json:"color,omitempty"`
		Schedules []struct {
			ID   string `json:"id,omitempty"`
			Name string `json:"name,omitempty"`
		} `json:"schedules,omitempty"`
	} `json:"positions,omitempty"`
}

type GetSchedulesResponse

type GetSchedulesResponse struct {
	Schedules []struct {
		ID        string `json:"id,omitempty"`
		Name      string `json:"name,omitempty"`
		Timezone  string `json:"timezone,omitempty"`
		Address   string `json:"address,omitempty"`
		Latitude  string `json:"latitude,omitempty"`
		Longitude string `json:"longitude,omitempty"`
	} `json:"schedules,omitempty"`
}

type GetShiftResponse

type GetShiftResponse struct {
	ID            string    `json:"id,omitempty"`
	StartTime     time.Time `json:"start_time,omitempty"`
	EndTime       time.Time `json:"end_time,omitempty"`
	EmployeeID    string    `json:"employee_id,omitempty"`
	Count         int       `json:"count,omitempty"`
	ScheduleID    string    `json:"schedule_id,omitempty"`
	PositionID    string    `json:"position_id,omitempty"`
	JobSiteID     string    `json:"job_site_id,omitempty"`
	Duration      float64   `json:"duration,omitempty"`
	BreakDuration float64   `json:"break_duration,omitempty"`
	Notes         string    `json:"notes,omitempty"`
	IsPublished   bool      `json:"is_published,omitempty"`
	IsConfirmed   bool      `json:"is_confirmed,omitempty"`
	Breaks        []struct {
		BreakID      string    `json:"break_id,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
		IsPaid       bool      `json:"is_paid,omitempty"`
	} `json:"breaks,omitempty"`
}

type GetShiftsResponse

type GetShiftsResponse struct {
	Shifts []struct {
		ID            string    `json:"id,omitempty"`
		StartTime     time.Time `json:"start_time,omitempty"`
		EndTime       time.Time `json:"end_time,omitempty"`
		EmployeeID    string    `json:"employee_id,omitempty"`
		Count         int       `json:"count,omitempty"`
		ScheduleID    string    `json:"schedule_id,omitempty"`
		PositionID    string    `json:"position_id,omitempty"`
		JobSiteID     string    `json:"job_site_id,omitempty"`
		Duration      float64   `json:"duration,omitempty"`
		BreakDuration float64   `json:"break_duration,omitempty"`
		Notes         string    `json:"notes,omitempty"`
		IsPublished   bool      `json:"is_published,omitempty"`
		IsConfirmed   bool      `json:"is_confirmed,omitempty"`
		Breaks        []struct {
			BreakID      string    `json:"break_id,omitempty"`
			DurationMins int       `json:"duration_mins,omitempty"`
			StartTime    time.Time `json:"start_time,omitempty"`
			EndTime      time.Time `json:"end_time,omitempty"`
			IsPaid       bool      `json:"is_paid,omitempty"`
		} `json:"breaks,omitempty"`
	} `json:"shifts,omitempty"`
}

type GetTimeoffResponse

type GetTimeoffResponse struct {
	ID             string    `json:"id,omitempty"`
	StartDate      time.Time `json:"start_date,omitempty"`
	EndDate        time.Time `json:"end_date,omitempty"`
	EmployeeID     string    `json:"employee_id,omitempty"`
	Employee       string    `json:"employee,omitempty"`
	RequestedByID  string    `json:"requested_by_id,omitempty"`
	RequestedBy    string    `json:"requested_by,omitempty"`
	TypeID         string    `json:"type_id,omitempty"`
	Type           string    `json:"type,omitempty"`
	DayType        string    `json:"day_type,omitempty"`
	Duration       float64   `json:"duration,omitempty"`
	Status         string    `json:"status,omitempty"`
	CreatedAt      time.Time `json:"created_at,omitempty"`
	IsPaid         bool      `json:"is_paid,omitempty"`
	Reason         string    `json:"reason,omitempty"`
	ApproverID     string    `json:"approver_id,omitempty"`
	Approver       string    `json:"approver,omitempty"`
	ApprovalRespAt time.Time `json:"approval_resp_at,omitempty"`
	CancelledAt    time.Time `json:"cancelled_at,omitempty"`
	UpdatedAt      time.Time `json:"updated_at,omitempty"`
	Comments       []struct {
		CommentID   string    `json:"comment_id,omitempty"`
		Comment     string    `json:"comment,omitempty"`
		CommenterID string    `json:"commenter_id,omitempty"`
		Commenter   string    `json:"commenter,omitempty"`
		CreatedAt   time.Time `json:"created_at,omitempty"`
	} `json:"comments,omitempty"`
}

type GetTimeoffsResponse

type GetTimeoffsResponse struct {
	TimeOffRequests []struct {
		ID            string    `json:"id,omitempty"`
		StartDate     time.Time `json:"start_date,omitempty"`
		EndDate       time.Time `json:"end_date,omitempty"`
		EmployeeID    string    `json:"employee_id,omitempty"`
		Employee      string    `json:"employee,omitempty"`
		RequestedByID string    `json:"requested_by_id,omitempty"`
		RequestedBy   string    `json:"requested_by,omitempty"`
		TypeID        string    `json:"type_id,omitempty"`
		Type          string    `json:"type,omitempty"`
		DayType       string    `json:"day_type,omitempty"`
		Duration      float64   `json:"duration,omitempty"`
		Status        string    `json:"status,omitempty"`
		CreatedAt     time.Time `json:"created_at,omitempty"`
	} `json:"time_off_requests,omitempty"`
	Meta struct {
		Count int `json:"count,omitempty"`
		Limit int `json:"limit,omitempty"`
		Page  int `json:"page,omitempty"`
	} `json:"meta,omitempty"`
}

type GetTimesheetResponse

type GetTimesheetResponse struct {
	ID               string    `json:"id,omitempty"`
	StartTime        time.Time `json:"start_time,omitempty"`
	EndTime          time.Time `json:"end_time,omitempty"`
	EmployeeID       string    `json:"employee_id,omitempty"`
	Employee         string    `json:"employee,omitempty"`
	ScheduleID       string    `json:"schedule_id,omitempty"`
	Schedule         string    `json:"schedule,omitempty"`
	PositionID       string    `json:"position_id,omitempty"`
	Position         string    `json:"position,omitempty"`
	JobSiteID        string    `json:"job_site_id,omitempty"`
	JobSite          string    `json:"job_site,omitempty"`
	Type             string    `json:"type,omitempty"`
	Duration         float64   `json:"duration,omitempty"`
	BreakDuration    float64   `json:"break_duration,omitempty"`
	Notes            string    `json:"notes,omitempty"`
	Status           string    `json:"status,omitempty"`
	TimeoffRequestID string    `json:"timeoff_request_id,omitempty"`
	TimeoffTypeID    string    `json:"timeoff_type_id,omitempty"`
	TimeoffType      string    `json:"timeoff_type,omitempty"`
	InLat            float64   `json:"in_lat,omitempty"`
	InLng            float64   `json:"in_lng,omitempty"`
	OutLat           float64   `json:"out_lat,omitempty"`
	OutLng           float64   `json:"out_lng,omitempty"`
	Latitude         float64   `json:"latitude,omitempty"`
	Longitude        float64   `json:"longitude,omitempty"`
	ShiftID          string    `json:"shift_id,omitempty"`
	Breaks           []struct {
		BreakID      string    `json:"break_id,omitempty"`
		BreakName    string    `json:"break_name,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
		IsPaid       bool      `json:"is_paid,omitempty"`
	} `json:"breaks,omitempty"`
}

type GetTimesheetsResponse

type GetTimesheetsResponse struct {
	TimeEntries []struct {
		ID               string    `json:"id,omitempty"`
		StartTime        time.Time `json:"start_time,omitempty"`
		EndTime          time.Time `json:"end_time,omitempty"`
		EmployeeID       string    `json:"employee_id,omitempty"`
		Employee         string    `json:"employee,omitempty"`
		ScheduleID       string    `json:"schedule_id,omitempty"`
		Schedule         string    `json:"schedule,omitempty"`
		PositionID       string    `json:"position_id,omitempty"`
		Position         string    `json:"position,omitempty"`
		JobSiteID        string    `json:"job_site_id,omitempty"`
		JobSite          string    `json:"job_site,omitempty"`
		Type             string    `json:"type,omitempty"`
		Duration         float64   `json:"duration,omitempty"`
		BreakDuration    float64   `json:"break_duration,omitempty"`
		Notes            string    `json:"notes,omitempty"`
		Status           string    `json:"status,omitempty"`
		TimeoffRequestID string    `json:"timeoff_request_id,omitempty"`
		TimeoffTypeID    string    `json:"timeoff_type_id,omitempty"`
		TimeoffType      string    `json:"timeoff_type,omitempty"`
		InLat            float64   `json:"in_lat,omitempty"`
		InLng            float64   `json:"in_lng,omitempty"`
		OutLat           float64   `json:"out_lat,omitempty"`
		OutLng           float64   `json:"out_lng,omitempty"`
		Latitude         float64   `json:"latitude,omitempty"`
		Longitude        float64   `json:"longitude,omitempty"`
		ShiftID          string    `json:"shift_id,omitempty"`
		Breaks           []struct {
			BreakID      string    `json:"break_id,omitempty"`
			BreakName    string    `json:"break_name,omitempty"`
			DurationMins int       `json:"duration_mins,omitempty"`
			StartTime    time.Time `json:"start_time,omitempty"`
			EndTime      time.Time `json:"end_time,omitempty"`
			IsPaid       bool      `json:"is_paid,omitempty"`
		} `json:"breaks,omitempty"`
	} `json:"time_entries,omitempty"`
	Meta struct {
		Count int `json:"count,omitempty"`
		Limit int `json:"limit,omitempty"`
		Page  int `json:"page,omitempty"`
	} `json:"meta,omitempty"`
}

type InviteEmployeeRequest

type InviteEmployeeRequest struct {
	Employees     []string `json:"employees"` // required
	AccessLevelID string   `json:"access_level_id,omitempty"`
}

type InviteEmployeeResponse

type InviteEmployeeResponse struct {
	Message string `json:"message,omitempty"`
}

type Module

type Module = string
const (
	EmployeesModule    Module = "employees" // CRUD
	AvailabilityModule Module = "schedules" // CRUD - Shifts, Availability

	TimesheetsModule Module = "timesheets" // CRUD
	SettingsModule   Module = "settings"   // CRUD - Settings (Schedules, Positions, Job Sites)

	TimeoffModule Module = "timeoff" // CRUD
)

type UpdateAvailabilityRequest

type UpdateAvailabilityRequest struct {
	ID         string    `json:"id,omitempty"`
	EmployeeID string    `json:"employee_id,omitempty"`
	StartTime  time.Time `json:"start_time,omitempty"`
	EndTime    time.Time `json:"end_time,omitempty"`
	Preference string    `json:"preference,omitempty"` // preferred, unavailable
	Notes      string    `json:"notes,omitempty"`
}

type UpdateAvailabilityResponse

type UpdateAvailabilityResponse struct {
	EmployeeID string    `json:"employee_id,omitempty"`
	StartTime  time.Time `json:"start_time,omitempty"`
	EndTime    time.Time `json:"end_time,omitempty"`
	Preference string    `json:"preference,omitempty"`
	Notes      string    `json:"notes,omitempty"`
}

type UpdateEmployeeRequest

type UpdateEmployeeRequest struct {
	FirstName         string `json:"first_name,omitempty"`
	LastName          string `json:"last_name,omitempty"`
	WorkEmail         string `json:"work_email,omitempty"`
	Mobile            string `json:"mobile,omitempty"`
	MobileCountryCode string `json:"mobile_country_code,omitempty"`
	Schedules         []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules,omitempty"`
	Positions []struct {
		ID string `json:"id,omitempty"`
	} `json:"positions,omitempty"`
	Timezone           string `json:"timezone,omitempty"`
	AccessLevelID      string `json:"access_level_id,omitempty"`
	HourlyRate         int    `json:"hourly_rate,omitempty"`
	HireDate           string `json:"hire_date,omitempty"`
	ExternalEmployeeID string `json:"external_employee_id,omitempty"`
	HideFromSchedule   bool   `json:"hide_from_schedule,omitempty"`
	OvertimeRuleID     string `json:"overtime_rule_id,omitempty"`
	EmploymentType     string `json:"employment_type,omitempty"`
	MaxHrsWeek         int    `json:"max_hrs_week,omitempty"`
	MinHrsWeek         int    `json:"min_hrs_week,omitempty"`
	MaxHrsDay          int    `json:"max_hrs_day,omitempty"`
	MaxDaysWeek        int    `json:"max_days_week,omitempty"`
	MaxShiftsDay       int    `json:"max_shifts_day,omitempty"`
}

type UpdateEmployeeResponse

type UpdateEmployeeResponse struct {
	ID                string `json:"id,omitempty"`
	FirstName         string `json:"first_name,omitempty"`
	LastName          string `json:"last_name,omitempty"`
	WorkEmail         string `json:"work_email,omitempty"`
	Mobile            string `json:"mobile,omitempty"`
	MobileCountryCode string `json:"mobile_country_code,omitempty"`
	AccessLevelID     string `json:"access_level_id,omitempty"`
	Status            string `json:"status,omitempty"`
	InviteStatus      string `json:"invite_status,omitempty"`
	Schedules         []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules,omitempty"`
	Positions []struct {
		ID string `json:"id,omitempty"`
	} `json:"positions,omitempty"`
	Timezone           string `json:"timezone,omitempty"`
	HireDate           string `json:"hire_date,omitempty"`
	ExternalEmployeeID string `json:"external_employee_id,omitempty"`
	HideFromSchedule   bool   `json:"hide_from_schedule,omitempty"`
	OvertimeRuleID     string `json:"overtime_rule_id,omitempty"`
	EmploymentType     string `json:"employment_type,omitempty"`
	MaxHrsWeek         int    `json:"max_hrs_week,omitempty"`
	MinHrsWeek         int    `json:"min_hrs_week,omitempty"`
	MaxHrsDay          int    `json:"max_hrs_day,omitempty"`
	MaxDaysWeek        int    `json:"max_days_week,omitempty"`
	MaxShiftsDay       int    `json:"max_shifts_day,omitempty"`
}

type UpdateJobsiteRequest

type UpdateJobsiteRequest struct {
	Name      string `json:"name,omitempty"`
	Schedules []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules,omitempty"`
	Address   string `json:"address,omitempty"`
	Latitude  string `json:"latitude,omitempty"`
	Longitude string `json:"longitude,omitempty"`
	Notes     string `json:"notes,omitempty"`
}

type UpdateJobsiteResponse

type UpdateJobsiteResponse struct {
	ID        string `json:"id,omitempty"`
	Name      string `json:"name,omitempty"`
	Schedules []struct {
		ID   string `json:"id,omitempty"`
		Name string `json:"name,omitempty"`
	} `json:"schedules,omitempty"`
	Address   string `json:"address,omitempty"`
	Latitude  string `json:"latitude,omitempty"`
	Longitude string `json:"longitude,omitempty"`
	Notes     string `json:"notes,omitempty"`
}

type UpdatePositionRequest

type UpdatePositionRequest struct {
	Name      string `json:"name,omitempty"`
	Color     string `json:"color,omitempty"` // red, pink, magenta, purple, deep-purple, indigo, light-violet, blue, light-blue, cyan, muted-green, teal, green, light-green, lime, yellow, amber, orange, deep-orange, brown, grey, blue-grey
	Schedules []struct {
		ID string `json:"id,omitempty"`
	} `json:"schedules,omitempty"`
}

type UpdatePositionResponse

type UpdatePositionResponse struct {
	ID        string `json:"id,omitempty"`
	Name      string `json:"name,omitempty"`
	Color     string `json:"color,omitempty"`
	Schedules []struct {
		ID   string `json:"id,omitempty"`
		Name string `json:"name,omitempty"`
	} `json:"schedules,omitempty"`
}

type UpdateScheduleRequest

type UpdateScheduleRequest struct {
	Name      string `json:"name,omitempty"`
	Timezone  string `json:"timezone,omitempty"`
	Address   string `json:"address,omitempty"`
	Latitude  string `json:"latitude,omitempty"`
	Longitude string `json:"longitude,omitempty"`
}

type UpdateScheduleResponse

type UpdateScheduleResponse struct {
	ID        string `json:"id,omitempty"`
	Name      string `json:"name,omitempty"`
	Timezone  string `json:"timezone,omitempty"`
	Address   string `json:"address,omitempty"`
	Latitude  string `json:"latitude,omitempty"`
	Longitude string `json:"longitude,omitempty"`
}

type UpdateShiftRequest

type UpdateShiftRequest struct {
	StartTime  time.Time `json:"start_time,omitempty"`
	EndTime    time.Time `json:"end_time,omitempty"`
	EmployeeID string    `json:"employee_id,omitempty"` // empty creates an open shift
	Count      int       `json:"count,omitempty"`
	ScheduleID string    `json:"schedule_id,omitempty"`
	PositionID string    `json:"position_id,omitempty"`
	JobSiteID  string    `json:"job_site_id,omitempty"`
	Notes      string    `json:"notes,omitempty"`
	Breaks     []struct {
		BreakID      string    `json:"break_id,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
	} `json:"breaks,omitempty"`
}

type UpdateShiftResponse

type UpdateShiftResponse struct {
	ID            string    `json:"id,omitempty"`
	StartTime     time.Time `json:"start_time,omitempty"`
	EndTime       time.Time `json:"end_time,omitempty"`
	EmployeeID    string    `json:"employee_id,omitempty"`
	Count         int       `json:"count,omitempty"`
	ScheduleID    string    `json:"schedule_id,omitempty"`
	PositionID    string    `json:"position_id,omitempty"`
	JobSiteID     string    `json:"job_site_id,omitempty"`
	Duration      float64   `json:"duration,omitempty"`
	BreakDuration float64   `json:"break_duration,omitempty"`
	Notes         string    `json:"notes,omitempty"`
	IsPublished   bool      `json:"is_published,omitempty"`
	IsConfirmed   bool      `json:"is_confirmed,omitempty"`
	Breaks        []struct {
		BreakID      string    `json:"break_id,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
		IsPaid       bool      `json:"is_paid,omitempty"`
	} `json:"breaks,omitempty"`
}

type UpdateTimeoffRequest

type UpdateTimeoffRequest struct {
	StartDate time.Time `json:"start_date,omitempty"`
	EndDate   time.Time `json:"end_date,omitempty"`
	TypeID    string    `json:"type_id,omitempty"`
	DayType   string    `json:"day_type,omitempty"` // all_day, partial
	Reason    string    `json:"reason,omitempty"`
}

type UpdateTimeoffResponse

type UpdateTimeoffResponse struct {
	ID             string    `json:"id,omitempty"`
	StartDate      time.Time `json:"start_date,omitempty"`
	EndDate        time.Time `json:"end_date,omitempty"`
	EmployeeID     string    `json:"employee_id,omitempty"`
	Employee       string    `json:"employee,omitempty"`
	RequestedByID  string    `json:"requested_by_id,omitempty"`
	RequestedBy    string    `json:"requested_by,omitempty"`
	TypeID         string    `json:"type_id,omitempty"`
	Type           string    `json:"type,omitempty"`
	DayType        string    `json:"day_type,omitempty"`
	Duration       float64   `json:"duration,omitempty"`
	Status         string    `json:"status,omitempty"`
	CreatedAt      time.Time `json:"created_at,omitempty"`
	IsPaid         bool      `json:"is_paid,omitempty"`
	Reason         string    `json:"reason,omitempty"`
	ApproverID     string    `json:"approver_id,omitempty"`
	Approver       string    `json:"approver,omitempty"`
	ApprovalRespAt time.Time `json:"approval_resp_at,omitempty"`
	CancelledAt    time.Time `json:"cancelled_at,omitempty"`
	UpdatedAt      time.Time `json:"updated_at,omitempty"`
	Comments       []struct {
		CommentID   string    `json:"comment_id,omitempty"`
		Comment     string    `json:"comment,omitempty"`
		CommenterID string    `json:"commenter_id,omitempty"`
		Commenter   string    `json:"commenter,omitempty"`
		CreatedAt   time.Time `json:"created_at,omitempty"`
	} `json:"comments,omitempty"`
}

type UpdateTimesheetRequest

type UpdateTimesheetRequest struct {
	StartTime  time.Time `json:"start_time,omitempty"`
	EndTime    time.Time `json:"end_time,omitempty"`
	EmployeeID string    `json:"employee_id,omitempty"`
	ScheduleID string    `json:"schedule_id,omitempty"`
	PositionID string    `json:"position_id,omitempty"`
	JobSiteID  string    `json:"job_site_id,omitempty"`
	Notes      string    `json:"notes,omitempty"`
	ShiftID    string    `json:"shift_id,omitempty"`
	Breaks     []struct {
		BreakID      string    `json:"break_id,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
	} `json:"breaks,omitempty"`
}

type UpdateTimesheetResponse

type UpdateTimesheetResponse struct {
	ID               string    `json:"id,omitempty"`
	StartTime        time.Time `json:"start_time,omitempty"`
	EndTime          time.Time `json:"end_time,omitempty"`
	EmployeeID       string    `json:"employee_id,omitempty"`
	Employee         string    `json:"employee,omitempty"`
	ScheduleID       string    `json:"schedule_id,omitempty"`
	Schedule         string    `json:"schedule,omitempty"`
	PositionID       string    `json:"position_id,omitempty"`
	Position         string    `json:"position,omitempty"`
	JobSiteID        string    `json:"job_site_id,omitempty"`
	JobSite          string    `json:"job_site,omitempty"`
	Type             string    `json:"type,omitempty"`
	Duration         float64   `json:"duration,omitempty"`
	BreakDuration    float64   `json:"break_duration,omitempty"`
	Notes            string    `json:"notes,omitempty"`
	Status           string    `json:"status,omitempty"`
	TimeoffRequestID string    `json:"timeoff_request_id,omitempty"`
	TimeoffTypeID    string    `json:"timeoff_type_id,omitempty"`
	TimeoffType      string    `json:"timeoff_type,omitempty"`
	InLat            float64   `json:"in_lat,omitempty"`
	InLng            float64   `json:"in_lng,omitempty"`
	OutLat           float64   `json:"out_lat,omitempty"`
	OutLng           float64   `json:"out_lng,omitempty"`
	Latitude         float64   `json:"latitude,omitempty"`
	Longitude        float64   `json:"longitude,omitempty"`
	ShiftID          string    `json:"shift_id,omitempty"`
	Breaks           []struct {
		BreakID      string    `json:"break_id,omitempty"`
		BreakName    string    `json:"break_name,omitempty"`
		DurationMins int       `json:"duration_mins,omitempty"`
		StartTime    time.Time `json:"start_time,omitempty"`
		EndTime      time.Time `json:"end_time,omitempty"`
		IsPaid       bool      `json:"is_paid,omitempty"`
	} `json:"breaks,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL