Add GetSystemMembers and GetSystemMemberByIdentifier
This commit is contained in:
parent
e6b8394896
commit
4171abcd8d
@ -21,24 +21,288 @@ type Callback struct {
|
|||||||
} `json:"_info"`
|
} `json:"_info"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Member struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Identifier string `json:"identifier"`
|
||||||
|
FirstName string `json:"firstName"`
|
||||||
|
LastName string `json:"lastName,omitempty"`
|
||||||
|
Title string `json:"title,omitempty"`
|
||||||
|
ReportCard struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
ReportCardHref string `json:"reportCard_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"reportCard,omitempty"`
|
||||||
|
LicenseClass string `json:"licenseClass"`
|
||||||
|
DisableOnlineFlag bool `json:"disableOnlineFlag"`
|
||||||
|
EnableMobileFlag bool `json:"enableMobileFlag,omitempty"`
|
||||||
|
Type struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
} `json:"type,omitempty"`
|
||||||
|
EmployeeIdentifer string `json:"employeeIdentifer,omitempty"`
|
||||||
|
TimeZone struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
TimeZoneSetupHref string `json:"timeZoneSetup_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"timeZone,omitempty"`
|
||||||
|
Country struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
CountryHref string `json:"country_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"country,omitempty"`
|
||||||
|
ServiceBoardTeamIds []int `json:"serviceBoardTeamIds"`
|
||||||
|
EnableMobileGpsFlag bool `json:"enableMobileGpsFlag"`
|
||||||
|
InactiveFlag bool `json:"inactiveFlag"`
|
||||||
|
LastLogin string `json:"lastLogin,omitempty"`
|
||||||
|
Photo struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
Filename string `json:"filename"`
|
||||||
|
DocumentHref string `json:"document_href"`
|
||||||
|
DocumentDownloadHref string `json:"documentDownload_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"photo,omitempty"`
|
||||||
|
OfficeEmail string `json:"officeEmail,omitempty"`
|
||||||
|
OfficePhone string `json:"officePhone,omitempty"`
|
||||||
|
OfficeExtension string `json:"officeExtension,omitempty"`
|
||||||
|
MobilePhone string `json:"mobilePhone,omitempty"`
|
||||||
|
MobileExtension string `json:"mobileExtension,omitempty"`
|
||||||
|
HomePhone string `json:"homePhone,omitempty"`
|
||||||
|
HomeExtension string `json:"homeExtension,omitempty"`
|
||||||
|
DefaultEmail string `json:"defaultEmail"`
|
||||||
|
DefaultPhone string `json:"defaultPhone"`
|
||||||
|
SecurityRole struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
} `json:"securityRole,omitempty"`
|
||||||
|
AdminFlag bool `json:"adminFlag"`
|
||||||
|
StructureLevel struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"structureLevel"`
|
||||||
|
SecurityLocation struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
LocationHref string `json:"location_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"securityLocation"`
|
||||||
|
DefaultLocation struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
LocationHref string `json:"location_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"defaultLocation,omitempty"`
|
||||||
|
DefaultDepartment struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Identifier string `json:"identifier"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
DepartmentHref string `json:"department_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"defaultDepartment,omitempty"`
|
||||||
|
RestrictLocationFlag bool `json:"restrictLocationFlag"`
|
||||||
|
RestrictDepartmentFlag bool `json:"restrictDepartmentFlag"`
|
||||||
|
WorkRole struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
WorkRoleHref string `json:"workRole_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"workRole,omitempty"`
|
||||||
|
WorkType struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
WorkTypeHref string `json:"workType_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"workType,omitempty"`
|
||||||
|
TimeApprover struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Identifier string `json:"identifier"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
MemberHref string `json:"member_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"timeApprover,omitempty"`
|
||||||
|
ExpenseApprover struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Identifier string `json:"identifier"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
MemberHref string `json:"member_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"expenseApprover,omitempty"`
|
||||||
|
DailyCapacity float64 `json:"dailyCapacity,omitempty"`
|
||||||
|
HourlyCost float64 `json:"hourlyCost"`
|
||||||
|
IncludeInUtilizationReportingFlag bool `json:"includeInUtilizationReportingFlag"`
|
||||||
|
RequireExpenseEntryFlag bool `json:"requireExpenseEntryFlag"`
|
||||||
|
RequireTimeSheetEntryFlag bool `json:"requireTimeSheetEntryFlag"`
|
||||||
|
RequireStartAndEndTimeOnTimeEntryFlag bool `json:"requireStartAndEndTimeOnTimeEntryFlag"`
|
||||||
|
AllowInCellEntryOnTimeSheet bool `json:"allowInCellEntryOnTimeSheet"`
|
||||||
|
EnterTimeAgainstCompanyFlag bool `json:"enterTimeAgainstCompanyFlag"`
|
||||||
|
AllowExpensesEnteredAgainstCompaniesFlag bool `json:"allowExpensesEnteredAgainstCompaniesFlag"`
|
||||||
|
TimeReminderEmailFlag bool `json:"timeReminderEmailFlag"`
|
||||||
|
DaysTolerance int `json:"daysTolerance,omitempty"`
|
||||||
|
MinimumHours float64 `json:"minimumHours,omitempty"`
|
||||||
|
TimeSheetStartDate string `json:"timeSheetStartDate"`
|
||||||
|
HireDate string `json:"hireDate,omitempty"`
|
||||||
|
ServiceDefaultLocation struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
LocationHref string `json:"location_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"serviceDefaultLocation,omitempty"`
|
||||||
|
ServiceDefaultDepartment struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Identifier string `json:"identifier"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
DepartmentHref string `json:"department_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"serviceDefaultDepartment,omitempty"`
|
||||||
|
ServiceDefaultBoard struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
BoardHref string `json:"board_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"serviceDefaultBoard,omitempty"`
|
||||||
|
RestrictServiceDefaultLocationFlag bool `json:"restrictServiceDefaultLocationFlag"`
|
||||||
|
RestrictServiceDefaultDepartmentFlag bool `json:"restrictServiceDefaultDepartmentFlag"`
|
||||||
|
ExcludedServiceBoardIds []int `json:"excludedServiceBoardIds"`
|
||||||
|
ProjectDefaultLocation struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
LocationHref string `json:"location_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"projectDefaultLocation,omitempty"`
|
||||||
|
ProjectDefaultDepartment struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Identifier string `json:"identifier"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
DepartmentHref string `json:"department_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"projectDefaultDepartment,omitempty"`
|
||||||
|
RestrictProjectDefaultLocationFlag bool `json:"restrictProjectDefaultLocationFlag"`
|
||||||
|
RestrictProjectDefaultDepartmentFlag bool `json:"restrictProjectDefaultDepartmentFlag"`
|
||||||
|
ExcludedProjectBoardIds []interface{} `json:"excludedProjectBoardIds"`
|
||||||
|
ScheduleDefaultLocation struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
LocationHref string `json:"location_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"scheduleDefaultLocation,omitempty"`
|
||||||
|
ScheduleDefaultDepartment struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Identifier string `json:"identifier"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
DepartmentHref string `json:"department_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"scheduleDefaultDepartment,omitempty"`
|
||||||
|
ScheduleCapacity float64 `json:"scheduleCapacity,omitempty"`
|
||||||
|
RestrictScheduleFlag bool `json:"restrictScheduleFlag"`
|
||||||
|
HideMemberInDispatchPortalFlag bool `json:"hideMemberInDispatchPortalFlag"`
|
||||||
|
SalesDefaultLocation struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
LocationHref string `json:"location_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"salesDefaultLocation,omitempty"`
|
||||||
|
RestrictDefaultSalesTerritoryFlag bool `json:"restrictDefaultSalesTerritoryFlag"`
|
||||||
|
RestrictDefaultWarehouseFlag bool `json:"restrictDefaultWarehouseFlag"`
|
||||||
|
RestrictDefaultWarehouseBinFlag bool `json:"restrictDefaultWarehouseBinFlag"`
|
||||||
|
MapiName string `json:"mapiName,omitempty"`
|
||||||
|
CalendarSyncIntegrationFlag bool `json:"calendarSyncIntegrationFlag"`
|
||||||
|
EnableLdapAuthenticationFlag bool `json:"enableLdapAuthenticationFlag"`
|
||||||
|
CompanyActivityTabFormat string `json:"companyActivityTabFormat,omitempty"`
|
||||||
|
InvoiceTimeTabFormat string `json:"invoiceTimeTabFormat,omitempty"`
|
||||||
|
InvoiceScreenDefaultTabFormat string `json:"invoiceScreenDefaultTabFormat"`
|
||||||
|
InvoicingDisplayOptions string `json:"invoicingDisplayOptions"`
|
||||||
|
AgreementInvoicingDisplayOptions string `json:"agreementInvoicingDisplayOptions"`
|
||||||
|
TimebasedOneTimePasswordActivated bool `json:"timebasedOneTimePasswordActivated"`
|
||||||
|
Info struct {
|
||||||
|
LastUpdated string `json:"lastUpdated"`
|
||||||
|
UpdatedBy string `json:"updatedBy"`
|
||||||
|
ImageHref string `json:"image_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
Notes string `json:"notes,omitempty"`
|
||||||
|
InactiveDate string `json:"inactiveDate,omitempty"`
|
||||||
|
BillableForecast float64 `json:"billableForecast,omitempty"`
|
||||||
|
ProjectDefaultBoard struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
BoardHref string `json:"board_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"projectDefaultBoard,omitempty"`
|
||||||
|
Calendar struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Info struct {
|
||||||
|
CalendarHref string `json:"calendar_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"calendar,omitempty"`
|
||||||
|
HourlyRate float64 `json:"hourlyRate,omitempty"`
|
||||||
|
LdapConfiguration struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Server string `json:"server"`
|
||||||
|
Info struct {
|
||||||
|
LdapConfigurationHref string `json:"ldapConfiguration_href"`
|
||||||
|
} `json:"_info"`
|
||||||
|
} `json:"ldapConfiguration,omitempty"`
|
||||||
|
LdapUserName string `json:"ldapUserName,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
//GetSystemMembers returns a slice of Member structs containing all the members (users) of connectwise
|
//GetSystemMembers returns a slice of Member structs containing all the members (users) of connectwise
|
||||||
//TBD finish this, I don't have permissions with my API key to see the JSON data
|
//TBD finish this, I don't have permissions with my API key to see the JSON data
|
||||||
func (cw *Site) GetSystemMembers() error {
|
func (cw *Site) GetSystemMembers() (*[]Member, error) {
|
||||||
req := cw.NewRequest("/system/members", "GET", nil)
|
req := cw.NewRequest("/system/members", "GET", nil)
|
||||||
err := req.Do()
|
err := req.Do()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("request failed for %s: %s", req.RestAction, err)
|
return nil, fmt.Errorf("request failed for %s: %s", req.RestAction, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
members := &[]Member{}
|
||||||
callbacks := &[]Callback{}
|
err = json.Unmarshal(req.Body, members)
|
||||||
err = json.Unmarshal(req.Body, callbacks)
|
if err != nil {
|
||||||
if err != nil {
|
return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
|
||||||
return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
|
}
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
return members, nil
|
||||||
return nil
|
}
|
||||||
|
|
||||||
|
func (cw *Site) GetSystemMemberByIdentifier(identifier string) (*Member, error) {
|
||||||
|
req := cw.NewRequest(fmt.Sprintf("/system/members/%s", identifier), "GET", nil)
|
||||||
|
err := req.Do()
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("request failed for %s: %s", req.RestAction, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
member := &Member{}
|
||||||
|
err = json.Unmarshal(req.Body, member)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to unmarshal body into struct: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return member, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//GetCallbacks returns a slice of Callback structs containing all the callbacks currently registered with ConnectWise
|
//GetCallbacks returns a slice of Callback structs containing all the callbacks currently registered with ConnectWise
|
||||||
|
Loading…
Reference in New Issue
Block a user