diff --git a/go.mod b/go.mod index 7c72ad9..9fc4d14 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/MEDIGO/go-zendesk -go 1.14 +go 1.18 require ( github.com/google/go-querystring v1.0.0 diff --git a/zendesk/mock_client.go b/zendesk/mock_client.go index 7b49cfc..67b4011 100644 --- a/zendesk/mock_client.go +++ b/zendesk/mock_client.go @@ -2,8 +2,11 @@ package zendesk // Code generated by mockery v1.0.0. DO NOT EDIT. -import io "io" -import mock "github.com/stretchr/testify/mock" +import ( + io "io" + + mock "github.com/stretchr/testify/mock" +) // MockClient is an autogenerated mock type for the Client type type MockClient struct { diff --git a/zendesk/org_membership.go b/zendesk/org_membership.go index 717221c..852a76a 100644 --- a/zendesk/org_membership.go +++ b/zendesk/org_membership.go @@ -37,6 +37,15 @@ func (c *client) ListOrganizationMembershipsByUserID(id int64) ([]OrganizationMe return out.OrganizationMemberships, err } +// ListOrganizationMembershipsByOrganisationID returns all organization memberships for a specific organisation +// +// Zendesk Core API docs: https://developer.zendesk.com/rest_api/docs/core/organization_memberships#list-memberships +func (c *client) ListOrganizationMembershipsByOrganisationID(id int64) ([]OrganizationMembership, error) { + out := new(APIPayload) + err := c.get(fmt.Sprintf("/api/v2/organizations/%d/organization_memberships.json", id), out) + return out.OrganizationMemberships, err +} + // DeleteOrganizationMembership removes an organization membership // // Zendesk Core API docs: https://developer.zendesk.com/rest_api/docs/core/organization_memberships#delete-membership diff --git a/zendesk/search.go b/zendesk/search.go index b0335ef..27bca22 100644 --- a/zendesk/search.go +++ b/zendesk/search.go @@ -80,7 +80,7 @@ func (c *client) SearchTickets(term string, options *ListOptions, filters ...Fil queryString := fmt.Sprintf("type:%s ", ResultTypeTicket) queryString += strings.Join(searchOptions.Search, " ") if term != "" { - queryString = fmt.Sprintf(`%s /"%s/"`, queryString, term) + queryString = fmt.Sprintf(`%s %s`, queryString, term) } params.Set("query", queryString) out := new(TicketSearchResults) diff --git a/zendesk/ticket.go b/zendesk/ticket.go index b789bbc..784f472 100644 --- a/zendesk/ticket.go +++ b/zendesk/ticket.go @@ -2,10 +2,11 @@ package zendesk import ( "fmt" - "github.com/google/go-querystring/query" "strconv" "strings" "time" + + "github.com/google/go-querystring/query" ) // Ticket represents a Zendesk Ticket. @@ -73,6 +74,20 @@ func (c *client) ShowTicket(id int64) (*Ticket, error) { return out.Ticket, err } +// ShowManyTickets accepts a comma-separated list of ticket ids or external ids. +// +// Zendesk Core API docs: https://developer.zendesk.com/rest_api/docs/support/tickets#show-multiple-tickets +func (c *client) ShowManyTickets(ids []int64) ([]Ticket, error) { + var sids []string + for _, id := range ids { + sids = append(sids, strconv.FormatInt(id, 10)) + } + + out := new(APIPayload) + err := c.get(fmt.Sprintf("/api/v2/tickets/show_many.json?ids=%s", strings.Join(sids, ",")), out) + return out.Tickets, err +} + func (c *client) CreateTicket(ticket *Ticket) (*Ticket, error) { in := &APIPayload{Ticket: ticket} out := new(APIPayload) diff --git a/zendesk/user.go b/zendesk/user.go index fa4ad07..96a5729 100644 --- a/zendesk/user.go +++ b/zendesk/user.go @@ -80,6 +80,7 @@ func (c *client) ShowManyUsers(ids []int64) ([]User, error) { err := c.get(fmt.Sprintf("/api/v2/users/show_many.json?ids=%s", strings.Join(sids, ",")), out) return out.Users, err } + // ShowManyUsersByExternalIDs accepts a comma-separated list of external ids. // // Zendesk Core API docs: https://developer.zendesk.com/rest_api/docs/support/users#show-many-users diff --git a/zendesk/zendesk.go b/zendesk/zendesk.go index 26ad091..af4095c 100644 --- a/zendesk/zendesk.go +++ b/zendesk/zendesk.go @@ -40,6 +40,7 @@ type Client interface { ListIdentities(int64) ([]UserIdentity, error) ListLocales() ([]Locale, error) ListOrganizationMembershipsByUserID(id int64) ([]OrganizationMembership, error) + ListOrganizationMembershipsByOrganisationID(id int64) ([]OrganizationMembership, error) ListOrganizations(*ListOptions) ([]Organization, error) ListOrganizationUsers(int64, *ListUsersOptions) ([]User, error) ListOrganizationTickets(int64, *ListOptions, ...SideLoad) (*ListResponse, error) @@ -70,6 +71,7 @@ type Client interface { ShowLocale(int64) (*Locale, error) ShowLocaleByCode(string) (*Locale, error) ShowManyOrganizations([]int64) ([]Organization, error) + ShowManyTickets([]int64) ([]Ticket, error) ShowManyUsers([]int64) ([]User, error) ShowManyUsersByExternalIDs([]string) ([]User, error) ShowOrganization(int64) (*Organization, error)