/// <summary> /// Note: You cannot add end users to groups they go in organizations. /// </summary> /// <param name="group"></param> /// <returns></returns> public int CreateOrUpdateGroup(Group group) { //Check to see if a group already exists var oldGroups = GetGroups().Where(x => x.Name == group.Name); if (oldGroups.Count() > 0) { group.Id = oldGroups.First().Id; if (UpdateGroup(group)) return group.Id; return -1; } //Make sure to use the UserIds not the Users group.CopyUsersToUserIds(); var request = new ZenRestRequest { Method = Method.POST, Resource = Groups + ".xml" }; request.AddBody(group); var res = Execute(request); return GetIdFromLocationHeader(res); }
public int CreateOrUpdateOrganization(Organization newOrg) { var orgs = GetOgranizations(); var curOrg = orgs.Where(x => x.Name == newOrg.Name); if (curOrg.Count() > 0) { newOrg.Id = curOrg.First().Id; //If it couldn't be updated if (!UpdateOrganization(newOrg)) return -1; return curOrg.First().Id; } var request = new ZenRestRequest { Method = Method.POST, Resource = _organizations + ".xml" }; request.AddBody(newOrg); var res = Execute(request); return GetIdFromLocationHeader(res); }
public int CreateOrUpdateForum(Forum forum) { int existingId = GetExistingForumId(forum); if(existingId > 0) { forum.Id = existingId; //If it couldn't be updated if (!UpdateForum(forum)) return -1; return forum.Id; } var request = new ZenRestRequest { Method = Method.POST, Resource = _forums + ".xml" }; request.AddBody(forum); var res = Execute(request); return GetIdFromLocationHeader(res); }
public Organization GetOgranizationById(int id) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.xml", _organizations, id) }; return Execute<Organization>(request); }
public List <Entry> GetEntriesByForumId(int forumId) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("forums/{0}/{1}.json", forumId, Entries) }; return(Execute <List <Entry> >(request)); }
/// <summary> /// The first comment for a ticket is always equivalent to the ticket description. /// If you have any custom fields in your zendesk, they will show up in the <ticket-field-entries> part of the document. /// </summary> /// <param name="id"></param> /// <returns></returns> public Ticket GetTicketById(int id) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.xml", Tickets, id) }; return(Execute <Ticket>(request)); }
public Organization GetOgranizationById(int id) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.json", _organizations, id) }; return(Execute <Organization>(request)); }
public Forum GetForumById(int id) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.json", _forums, id) }; return(Execute <Forum>(request)); }
public Entry GetEntryById(int id) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.json", Entries, id) }; return(Execute <Entry>(request)); }
/// <summary> /// Gets the Collection /// </summary> /// <returns></returns> public List <T> GetCollection <T>(string resource, string rootElement = "") { var request = new ZenRestRequest { Method = Method.GET, Resource = resource, RootElement = rootElement }; return(Execute <List <T> >(request)); }
public List<View> GetViews() { var request = new ZenRestRequest { Method = Method.GET, Resource = "views.xml", RootElement = "views" }; return Execute<List<View>>(request); }
public List <View> GetViews() { var request = new ZenRestRequest { Method = Method.GET, Resource = "views.xml", RootElement = "views" }; return(Execute <List <View> >(request)); }
public bool DestroyOrganization(int orgId) { var request = new ZenRestRequest { Method = Method.DELETE, Resource = string.Format("{0}/{1}.xml", _organizations, orgId) }; var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
public bool MakeUserIdentityPrimary(int userId, int identityId) { var request = new ZenRestRequest { Method = Method.POST, Resource = string.Format("/{0}/{1}/user_identities/{2}/make_primary", Users, userId, identityId) }; var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
public List <Ticket> GetTicketsInViewByPage(int viewId, int page = 1) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("rules/{0}.xml", viewId) }; request.AddParameter("page", page.ToString()); return(Execute <List <Ticket> >(request)); }
public bool DestroyRequest(int requestId) { var request = new ZenRestRequest { Method = Method.DELETE, Resource = string.Format("{0}/{1}.xml", Requests, requestId.ToString()) }; var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
public bool DestroyForum(int forumId) { var request = new ZenRestRequest { Method = Method.DELETE, Resource = string.Format("{0}/{1}.xml", _forums, forumId) }; var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
/// <summary> /// Returns tickets with that tag in groups of 15. Use the page index to get the next set. /// </summary> /// <param name="tagName"></param> /// <param name="page"></param> /// <returns></returns> public List<Ticket> GetTicktesForTagByPage(string tagName, int page = 1) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.xml", Tags, tagName) }; request.AddParameter("page", page.ToString()); return Execute<List<Ticket>>(request); }
public bool DestroyGroup(int groupId) { var request = new ZenRestRequest { Method = Method.DELETE, Resource = string.Format("{0}/{1}.json", Groups, groupId) }; var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
/// <summary> /// Returns tickets with that tag in groups of 15. Use the page index to get the next set. /// </summary> /// <param name="tagName"></param> /// <param name="page"></param> /// <returns></returns> public List <Ticket> GetTicktesForTagByPage(string tagName, int page = 1) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.xml", Tags, tagName) }; request.AddParameter("page", page.ToString()); return(Execute <List <Ticket> >(request)); }
public bool DestroyForum(int forumId) { var request = new ZenRestRequest { Method = Method.DELETE, Resource = string.Format("{0}/{1}.xml", _forums, forumId) }; var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
public bool DestroyOrganization(int orgId) { var request = new ZenRestRequest { Method = Method.DELETE, Resource = string.Format("{0}/{1}.xml", _organizations, orgId) }; var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
/// <summary> /// Matches the api method at http://www.zendesk.com/api/users /// Ex: QueryUsers("*****@*****.**") returns a list of users with that email, which should only be one. /// </summary> /// <param name="query"></param> /// <returns></returns> public List <User> QueryUsers(string query) { var request = new ZenRestRequest { Method = Method.GET, Resource = Users, }; request.AddParameter("query", query); return(Execute <List <User> >(request)); }
public bool AddComment(int ticketId, Comment comment) { var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Tickets, ticketId) }; request.AddBody(comment); var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
public bool DeleteUserIdentity(int userId, int identityId) { var request = new ZenRestRequest { Method = Method.DELETE, Resource = string.Format("/{0}/{1}/user_identities/{2}", Users, userId, identityId) }; var res = Execute(request); //If it is not found then it is already deleted return(res.StatusCode == System.Net.HttpStatusCode.OK || res.StatusCode == System.Net.HttpStatusCode.NotFound); }
public int CreateTicket(Ticket ticket) { var request = new ZenRestRequest { Method = Method.POST, Resource = Tickets + ".xml" }; request.AddBody(ticket); var res = Execute(request); return GetIdFromLocationHeader(res); }
public int CreatePost(Post post) { var request = new ZenRestRequest { Method = Method.POST, Resource = Posts }; request.AddBody(post); var res = Execute(request); return(GetIdFromLocationHeader(res)); }
public bool AddComment(int ticketId, Comment comment) { var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Tickets, ticketId) }; request.AddBody(comment); var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
/// <summary> /// Creates a new ticket AND creates a new user as the tickets requester, IF the user does not already exist (based on the requester email). /// If the requester exists, no user is created and the ticket is created with the existing user as requester /// </summary> /// <param name="ticket"></param> /// <returns></returns> public int CreateTicketWithRequester(Ticket ticket) { var request = new ZenRestRequest { Method = Method.POST, Resource = Tickets + ".xml" }; request.AddBody(ticket); var res = Execute(request); return(GetIdFromLocationHeader(res)); }
public int CreateEntry(Entry entry) { var request = new ZenRestRequest { Method = Method.POST, Resource = Entries + ".xml" }; request.AddBody(entry); var res = Execute(request); return GetIdFromLocationHeader(res); }
public int CreatePost(Post post) { var request = new ZenRestRequest { Method = Method.POST, Resource = Posts }; request.AddBody(post); var res = Execute(request); return GetIdFromLocationHeader(res); }
public bool ApplyMacro(int macroId, int ticketId) { var request = new ZenRestRequest { Method = Method.POST, Resource = string.Format("{0}/{1}/apply.xml", Macros, macroId) }; request.AddParameter("ticket_id", ticketId.ToString()); var resp = Execute(request); return resp.StatusCode == System.Net.HttpStatusCode.OK; }
public bool UpdateEntry(Entry entry) { var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Entries, entry.Id) }; request.AddBody(entry); var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
public int CreateEntry(Entry entry) { var request = new ZenRestRequest { Method = Method.POST, Resource = Entries + ".xml" }; request.AddBody(entry); var res = Execute(request); return(GetIdFromLocationHeader(res)); }
public bool UpdateUser(User user) { var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Users, user.Id) }; request.AddBody(user); var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
public bool ApplyMacro(int macroId, int ticketId) { var request = new ZenRestRequest { Method = Method.POST, Resource = string.Format("{0}/{1}/apply.json", Macros, macroId) }; request.AddParameter("ticket_id", ticketId.ToString()); var resp = Execute(request); return(resp.StatusCode == System.Net.HttpStatusCode.OK); }
public bool UpdateOrganization(Organization org) { var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", _organizations, org.Id) }; request.AddBody(org); var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
public bool UpdateForum(Forum forum) { var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", _forums, forum.Id) }; request.AddBody(forum); var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
/// <summary> /// To update custom ticket fields just add them to the ticket's TicketFieldEntries. /// Use GetTicketFields and then manually search to find the one you want to update. /// Note you can't add comments this way. Call AddComments to do that. /// </summary> /// <param name="ticket"></param> /// <returns></returns> public bool UpdateTicket(Ticket ticket) { ticket.Comments.Clear(); var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Tickets, ticket.NiceId.ToString()) }; request.AddBody(ticket); var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
/// <summary> /// Gets the Collection /// </summary> /// <returns></returns> public List <T> GetCollection <T>(string resource, string rootElement = "") { if (!resource.EndsWith(".xml")) { resource += ".xml"; } var request = new ZenRestRequest { Method = Method.GET, Resource = resource, RootElement = rootElement }; return(Execute <List <T> >(request)); }
public int CreateTicketAsEndUser(string endUserEmail, Ticket ticket) { var request = new ZenRestRequest { Method = Method.POST, Resource = Requests + ".xml" }; request.AddHeader(XOnBehalfOfEmail, endUserEmail); request.AddBody(ticket); //request.AddParameter("text/xml", string.Format("<ticket><subject>{0}</subject><description>{1}</description></ticket>", ticket.Subject, ticket.Description), ParameterType.RequestBody); var res = Execute(request); return GetIdFromLocationHeader(res); }
public int CreateTicketAsEndUser(string endUserEmail, Ticket ticket) { var request = new ZenRestRequest { Method = Method.POST, Resource = Requests + ".xml" }; request.AddHeader(XOnBehalfOfEmail, endUserEmail); request.AddBody(ticket); //request.AddParameter("text/xml", string.Format("<ticket><subject>{0}</subject><description>{1}</description></ticket>", ticket.Subject, ticket.Description), ParameterType.RequestBody); var res = Execute(request); return(GetIdFromLocationHeader(res)); }
public bool UpdateGroup(Group group) { //Make sure to use the UserIds not the Users group.CopyUsersToUserIds(); var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.json", Groups, group.Id) }; request.AddBody(group); var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
public bool UpdateTicketAsEndUser(int ticketId, Comment comment) { string email = GetUserById(GetTicketById(ticketId).RequesterId).Email; var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Requests, ticketId.ToString()) }; request.AddHeader(XOnBehalfOfEmail, email); request.AddBody(comment); //request.AddParameter("text/xml", string.Format("<ticket><subject>{0}</subject><description>{1}</description></ticket>", ticket.Subject, ticket.Description), ParameterType.RequestBody); var res = Execute(request); return(res.StatusCode == System.Net.HttpStatusCode.OK); }
/// <summary> /// Throws a ZenDeskNotAcceptableInputException if the twitter account doesn't exist or is already assigned to someone else. /// </summary> /// <param name="userId"></param> /// <param name="twitterHandle"></param> /// <returns></returns> public bool AddTwitterHandleToUser(int userId, string twitterHandle) { //first check to see if the user already has that twitter identity var records = GetUserIdentities(userId); if (records.Where(x => x.ScreenName == twitterHandle).Count() > 0) return true; var request = new ZenRestRequest { Method = Method.POST, Resource = string.Format("{0}/{1}/user_identities.xml", Users, userId) }; request.AddParameter("text/xml", string.Format("<twitter>{0}</twitter>", twitterHandle), ParameterType.RequestBody); var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.Created; }
public bool AddEmailAddressToAUser(int userId, string email) { //first check to see if the user allready has that email identity var emails = GetUserIdentities(userId); if (emails.Where(x => x.Value == email).Count() > 0) return true; var request = new ZenRestRequest { Method = Method.POST, Resource = string.Format("{0}/{1}/user_identities.xml", Users, userId) }; request.AddParameter("text/xml", string.Format("<email>{0}</email>", email), ParameterType.RequestBody); var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.Created; }
public bool DestroyTicket(int ticketId) { var request = new ZenRestRequest { Method = Method.DELETE, Resource = string.Format("{0}/{1}.xml", Tickets, ticketId.ToString()) }; var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
public bool UpdateForum(Forum forum) { var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", _forums, forum.Id) }; request.AddBody(forum); var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
public bool UpdateTicketAsEndUser(int ticketId, Comment comment) { string email = GetUserById(GetTicketById(ticketId).RequesterId).Email; var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Requests, ticketId.ToString()) }; request.AddHeader(XOnBehalfOfEmail, email); request.AddBody(comment); //request.AddParameter("text/xml", string.Format("<ticket><subject>{0}</subject><description>{1}</description></ticket>", ticket.Subject, ticket.Description), ParameterType.RequestBody); var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
public List<Ticket> GetTicketsInViewByPage(int viewId, int page = 1) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("rules/{0}.xml", viewId) }; request.AddParameter("page", page.ToString()); return Execute<List<Ticket>>(request); }
/// <summary> /// To update custom ticket fields just add them to the ticket's TicketFieldEntries. /// Use GetTicketFields and then manually search to find the one you want to update. /// Note you can't add comments this way. Call AddComments to do that. /// </summary> /// <param name="ticket"></param> /// <returns></returns> public bool UpdateTicket(Ticket ticket) { ticket.Comments.Clear(); var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Tickets, ticket.NiceId.ToString()) }; request.AddBody(ticket); var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
public List<Ticket> GetTicketsForUserByPage(string email, int page = 1) { var request = new ZenRestRequest { Method = Method.GET, Resource = Requests + ".xml", }; //Assume the user request.AddHeader(XOnBehalfOfEmail, email); request.AddParameter("page", page.ToString()); //Get the open ones var ticktes = Execute<List<Ticket>>(request); //Now get the closed ones request.AddParameter("filter", "solved"); var closedOrSolved = Execute<List<Ticket>>(request); ticktes.AddRange(closedOrSolved); return ticktes; }
/// <summary> /// Creates the new user and returns their id. Or updates if that email address is already in the system. /// </summary> /// <param name="newUser"></param> /// <returns></returns> public int CreateOrUpdateUser(User newUser) { //Update if the user exists var users = QueryUsers(newUser.Email); if (users.Count > 0) { newUser.Id = users.First().Id; if (!UpdateUser(newUser)) return -1; return (int)users.First().Id; } var request = new ZenRestRequest { Method = Method.POST, Resource = Users + ".xml", }; request.AddBody(newUser); var res = Execute(request); return GetIdFromLocationHeader(res); }
public bool UpdateOrganization(Organization org) { var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", _organizations, org.Id) }; request.AddBody(org); var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
private List<User> GetUsersByPage(int page) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}.xml", Users) }; request.AddParameter("page", page.ToString()); return Execute<List<User>>(request); }
public Forum GetForumById(int id) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.xml", _forums, id) }; return Execute<Forum>(request); }
public void MyTest() { var request = new ZenRestRequest { Method = Method.GET, Resource = "posts.rss" }; var res = _api.Execute(request); }
private List<Organization> GetOrganizationssByPage(int page) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}.xml", _organizations) }; request.AddParameter("page", page.ToString()); return Execute<List<Organization>>(request); }
public bool UpdateGroup(Group group) { //Make sure to use the UserIds not the Users group.CopyUsersToUserIds(); var request = new ZenRestRequest { Method = Method.PUT, Resource = string.Format("{0}/{1}.xml", Groups, group.Id) }; request.AddBody(group); var res = Execute(request); return res.StatusCode == System.Net.HttpStatusCode.OK; }
/// <summary> /// The first comment for a ticket is always equivalent to the ticket description. /// If you have any custom fields in your zendesk, they will show up in the <ticket-field-entries> part of the document. /// </summary> /// <param name="id"></param> /// <returns></returns> public Ticket GetTicketById(int id) { var request = new ZenRestRequest { Method = Method.GET, Resource = string.Format("{0}/{1}.xml", Tickets, id) }; return Execute<Ticket>(request); }