/// <summary> /// Gets a person from the system. /// Invocations of this method are rate-limited, with a restriction of 60 calls per IP address every 60 seconds. /// </summary> /// <param name="uid"></param> /// <param name="authHeader"></param> /// <param name="tDXEnvironment"></param> /// <returns></returns> public async Task <User> GetPersonByUIDAsync(Guid uid, string authHeader, TDXEnvironment tDXEnvironment) { JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; var bearer = $"Bearer {authHeader}"; RestClient restClient = new RestClient(tDXEnvironment.ClientUrl + (tDXEnvironment.IsSandboxEnvironment ? "SBTDWebApi" : "TDWebApi")); RestRequest restRequest = new RestRequest($"api/people/{uid}", Method.GET); restRequest.AddHeader("accept", "application/json"); restRequest.AddHeader("Authorization", bearer); if (tDXEnvironment.ProxyURL != null) { restClient.Proxy = new WebProxy(tDXEnvironment.ProxyURL, tDXEnvironment.ProxyPort); } TaskCompletionSource <IRestResponse> taskCompletion = new TaskCompletionSource <IRestResponse>(); RestRequestAsyncHandle handle = restClient.ExecuteAsync( restRequest, r => taskCompletion.SetResult(r) ); RestResponse response = (RestResponse)(await taskCompletion.Task); if (response.StatusCode == HttpStatusCode.NotFound) { return(null); } return(JsonConvert.DeserializeObject <User>(response.Content)); }
// POST https://yourSchool.Teamdynamix.com/TDWebApi/api/{appId}/tickets?EnableNotifyReviewer={EnableNotifyReviewer}&NotifyRequestor={NotifyRequestor}&NotifyResponsible={NotifyResponsible}&AllowRequestorCreation={AllowRequestorCreation} // Description: Creates a ticket. // Invocations of this method are rate-limited, with a restriction of 120 calls per IP address every 60 seconds. public async Task <Ticket> CreateTicketAsync(Ticket ticket, int appID, TicketCreateOptions ticketCreateOptions, string authHeader, TDXEnvironment tDXEnvironment) { JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; var bearer = $"Bearer {authHeader}"; RestClient restClient = new RestClient(tDXEnvironment.ClientUrl + (tDXEnvironment.IsSandboxEnvironment ? "SBTDWebApi" : "TDWebApi")); RestRequest restRequest = new RestRequest($"api/{appID}/tickets", Method.POST); restRequest.AddParameter("EnableNotifyReviewer", ticketCreateOptions.EnableNotifyReviewer); restRequest.AddParameter("NotifyRequestor", ticketCreateOptions.NotifyRequestor); restRequest.AddParameter("NotifyResponsible", ticketCreateOptions.NotifyResponsible); restRequest.AddParameter("AllowRequestorCreation", ticketCreateOptions.AllowRequestorCreation); restRequest.AddHeader("accept", "application/json"); restRequest.AddHeader("Authorization", bearer); string jsonObject = JsonConvert.SerializeObject(ticket, Formatting.Indented, jsonSerializerSettings); restRequest.AddParameter("application/json", jsonObject, ParameterType.RequestBody); if (tDXEnvironment.ProxyURL != null) { restClient.Proxy = new WebProxy(tDXEnvironment.ProxyURL, tDXEnvironment.ProxyPort); } TaskCompletionSource <IRestResponse> taskCompletion = new TaskCompletionSource <IRestResponse>(); RestRequestAsyncHandle handle = restClient.ExecuteAsync( restRequest, r => taskCompletion.SetResult(r) ); RestResponse response = (RestResponse)(await taskCompletion.Task); if (response.StatusCode == HttpStatusCode.NotFound) { return(null); } return(JsonConvert.DeserializeObject <Ticket>(response.Content)); }
/// <summary> /// Gets all active ticket sources. /// Invocations of this method are rate-limited, with a restriction of 60 calls per IP address every 60 seconds. /// </summary> /// <param name="appID"></param> /// <param name="authHeader"></param> /// <param name="tDXEnvironment"></param> /// <returns>A list of all active ticket sources. (IEnumerable(Of TeamDynamix.Api.Tickets.TicketSource)) </returns> public async Task <List <TicketSource> > GetTicketSourcesAsync(int appID, string authHeader, TDXEnvironment tDXEnvironment) { var bearer = $"Bearer {authHeader}"; RestClient restClient = new RestClient(tDXEnvironment.ClientUrl + (tDXEnvironment.IsSandboxEnvironment ? "SBTDWebApi" : "TDWebApi")); RestRequest restRequest = new RestRequest($"api/{appID}/tickets/sources", Method.GET); restRequest.AddHeader("accept", "application/json"); restRequest.AddHeader("Authorization", bearer); if (tDXEnvironment.ProxyURL != null) { restClient.Proxy = new WebProxy(tDXEnvironment.ProxyURL, tDXEnvironment.ProxyPort); } TaskCompletionSource <IRestResponse> taskCompletion = new TaskCompletionSource <IRestResponse>(); RestRequestAsyncHandle handle = restClient.ExecuteAsync( restRequest, r => taskCompletion.SetResult(r) ); RestResponse response = (RestResponse)(await taskCompletion.Task); if (response.StatusCode == HttpStatusCode.NotFound) { return(null); } return(JsonConvert.DeserializeObject <List <TicketSource> >(response.Content)); }
public async Task <string> GetAuthHeaderAsync(AdminTokenParameters adminTokenParameters, TDXEnvironment tDXEnvironment) { JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; RestClient restClient = new RestClient(tDXEnvironment.ClientUrl + (tDXEnvironment.IsSandboxEnvironment ? "SBTDWebApi" : "TDWebApi")); RestRequest restRequest = new RestRequest($"api/auth/loginadmin", Method.POST); restRequest.AddHeader("accept", "application/json"); string jsonObject = JsonConvert.SerializeObject(adminTokenParameters, Formatting.Indented, jsonSerializerSettings); restRequest.AddParameter("application/json", jsonObject, ParameterType.RequestBody); if (tDXEnvironment.ProxyURL != null) { restClient.Proxy = new WebProxy(tDXEnvironment.ProxyURL, tDXEnvironment.ProxyPort); } TaskCompletionSource <IRestResponse> taskCompletion = new TaskCompletionSource <IRestResponse>(); RestRequestAsyncHandle handle = restClient.ExecuteAsync( restRequest, r => taskCompletion.SetResult(r) ); RestResponse response = (RestResponse)(await taskCompletion.Task); if (response.StatusCode == HttpStatusCode.NotFound) { return(null); } return(response.Content); }
/// <summary> /// Performs a restricted lookup of TeamDynamix people. Will not return full user information for each matching user. /// Invocations of this method are rate-limited, with a restriction of 75 calls per IP address every 10 seconds. /// </summary> /// <param name="searchText"></param> /// <param name="authHeader"></param> /// <param name="tDXEnvironment"></param> /// <param name="maxResults"></param> /// <returns></returns> public async Task <List <User> > GetPersonLookupAsync(string searchText, string authHeader, TDXEnvironment tDXEnvironment, int maxResults = 50) { var bearer = $"Bearer {authHeader}"; RestClient restClient = new RestClient(tDXEnvironment.ClientUrl + (tDXEnvironment.IsSandboxEnvironment ? "SBTDWebApi" : "TDWebApi")); RestRequest restRequest = new RestRequest($"api/people/lookup", Method.GET); restRequest.AddParameter("searchText", searchText); restRequest.AddParameter("maxResults", maxResults); restRequest.AddHeader("accept", "application/json"); restRequest.AddHeader("Authorization", bearer); if (tDXEnvironment.ProxyURL != null) { restClient.Proxy = new WebProxy(tDXEnvironment.ProxyURL, tDXEnvironment.ProxyPort); } TaskCompletionSource <IRestResponse> taskCompletion = new TaskCompletionSource <IRestResponse>(); RestRequestAsyncHandle handle = restClient.ExecuteAsync( restRequest, r => taskCompletion.SetResult(r) ); RestResponse response = (RestResponse)(await taskCompletion.Task); if (response.StatusCode == HttpStatusCode.NotFound) { return(null); } return(JsonConvert.DeserializeObject <List <User> >(response.Content)); }