Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions Contrast.ApiClient.sln
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27004.2005
# Visual Studio Version 17
VisualStudioVersion = 17.9.34714.143
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ContrastRestClient", "src\ContrastRestClient\ContrastRestClient.csproj", "{A03F8136-A1AB-4621-9D38-A47416C83EBE}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ContrastRestClient", "src\ContrastRestClient\ContrastRestClient.csproj", "{A03F8136-A1AB-4621-9D38-A47416C83EBE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleContrastClient", "examples\SampleContrastClient\SampleContrastClient.csproj", "{1FDD7518-8C6F-4F53-86D4-E256D06A40B3}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleContrastClient", "examples\SampleContrastClient\SampleContrastClient.csproj", "{1FDD7518-8C6F-4F53-86D4-E256D06A40B3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ContrastRestClient.Tests", "tests\ContrastRestClient.Tests\ContrastRestClient.Tests.csproj", "{448EF756-4077-4072-8274-A2075B1C56A6}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ContrastRestClient.Tests", "tests\ContrastRestClient.Tests\ContrastRestClient.Tests.csproj", "{448EF756-4077-4072-8274-A2075B1C56A6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5700ED5C-D9E1-4049-8DA7-267FB3C113C1}"
ProjectSection(SolutionItems) = preProject
appveyor.yml = appveyor.yml
README.md = README.md
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "contrast-grid", "..\ari-devops-contrast-grid\contrast-grid.csproj", "{C1745B6D-2A96-45FA-9A8C-323070E2762E}"
ProjectSection(ProjectDependencies) = postProject
{A03F8136-A1AB-4621-9D38-A47416C83EBE} = {A03F8136-A1AB-4621-9D38-A47416C83EBE}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -33,6 +38,10 @@ Global
{448EF756-4077-4072-8274-A2075B1C56A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{448EF756-4077-4072-8274-A2075B1C56A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{448EF756-4077-4072-8274-A2075B1C56A6}.Release|Any CPU.Build.0 = Release|Any CPU
{C1745B6D-2A96-45FA-9A8C-323070E2762E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C1745B6D-2A96-45FA-9A8C-323070E2762E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C1745B6D-2A96-45FA-9A8C-323070E2762E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C1745B6D-2A96-45FA-9A8C-323070E2762E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
103 changes: 103 additions & 0 deletions src/ContrastRestClient/Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
using System.IO;
using Newtonsoft.Json;
using System.Net.Http;
using System.Net;
using contrast_grid;

namespace Contrast
{
Expand Down Expand Up @@ -749,6 +751,105 @@ public BaseApiResponse MarkTraceStatus(string organizationId, string appId, Trac
return GetResponseAndDeserialize<BaseApiResponse>(endpoint, JsonConvert.SerializeObject(requestBody), RequestMethod.Put);
}

// "internal static string TAGS_APPLICATION_LIST", "\"api/ng/{0}/tags/application/list/{1}\";", // GET
/// <summary>
/// Get all tags by application
/// </summary>
/// <param name="organizationId">Organization UUID.</param>
/// <param name="appId">Application ID</param>
/// <returns>TagsResponse</returns>
public TagsResponse GetApplicationTagsList(string organizationId, string appId)
{
string endpoint = String.Format(NgEndpoints.TAGS_APPLICATION_LIST,organizationId, appId);
return GetResponseAndDeserialize<TagsResponse>(endpoint);
}

// "internal static string TAGS_APPLICATION_DELETE", "\"api/ng/{0}/tags/application/{1}\";", // DELETE
/// <summary>
/// Remove tag from application
/// </summary>
/// <param name="organizationId">Organization UUID</param>
/// <param name="appId">Application Id</param>
/// <returns></returns>
public BaseApiResponse DeleteApplicationTag(string organizationId, string appId, TagsRequest requestBody)
{
string endpoint = string.Format(NgEndpoints.TAGS_APPLICATION_DELETE, organizationId, appId);
return GetResponseAndDeserialize<BaseApiResponse>(endpoint, JsonConvert.SerializeObject(requestBody), RequestMethod.Delete);
}

// "internal static string TAGS_APPLICATIONS", "\"api/ng/{0}/tags/applications\";", // PUT
/// <summary>
/// Tag applications
/// </summary>
/// <param name="organizationId">Organization UUID</param>
/// <param name="requestBody">Tags and servers</param>
/// <returns></returns>
public BaseApiResponse TagApplications(string organizationId, TagsServersResource requestBody)
{
string endpoint = String.Format(NgEndpoints.TAGS_APPLICATIONS, organizationId);
return GetResponseAndDeserialize<BaseApiResponse>(endpoint, JsonConvert.SerializeObject(requestBody), RequestMethod.Put);

}

// "internal static string TAGS_APPLICATIONS_BULK", "\"api/ng/{0}/tags/applications/bulk\";", // GET,PUT
/// <summary>
/// Get all tags shared by a list of applications
/// </summary>
/// <param name="organizationId">Organization UUID</param>
/// <param name="applicationsId">List of applicationIds</param>
/// <returns>TagsResponse</returns>
public TagsResponse GetBulkApplicationTags(string organizationId, string applicationsId)
{
string endpoint = String.Format(NgEndpoints.TAGS_APPLICATIONS_BULK_APP, organizationId, applicationsId);
return GetResponseAndDeserialize<TagsResponse>(endpoint);
}

// "internal static string TAGS_APPLICATIONS_BULK", "\"api/ng/{0}/tags/applications/bulk\";", // PUT
/// <summary>
/// Tag applications bulk
/// </summary>
/// <param name="organizationId">Organization UUID</param>
/// <param name="requestBody">update request</param>
/// <returns>API response</returns>
public BaseApiResponse SetBulkApplicationTags(string organizationId, TagsApplicationsUpdateRequest requestBody)
{
string endpoint = String.Format(NgEndpoints.TAGS_APPLICATIONS_BULK_APP, organizationId);
return GetResponseAndDeserialize<BaseApiResponse>(endpoint, JsonConvert.SerializeObject(requestBody), RequestMethod.Put);
}

// "internal static string TAGS_APPLICATIONS_LIST", "\"/ng/{0}/tags/applications/list\";", // GET
/// <summary>
/// Get all application tags by organization
/// </summary>
/// <param name="organizationId">Organization UUID</param>
/// <returns>tag list</returns>
public TagsResponse GetApplicationTags(string organizationId)
{
string endpoint = String.Format(NgEndpoints.TAGS_APPLICATIONS_LIST, organizationId);
return GetResponseAndDeserialize<TagsResponse>(endpoint);
}

// "internal static string TAGS_ATTACK_EVENT_LIST", "\"/ng/{orgUuid}/tags/attack/event/list/{eventUuid}\";",
/// <summary>
/// Get all tags by attack event
/// </summary>
/// <param name="organizationId">organization UUID</param>
/// <param name="eventUuid">attack event UUID</param>
/// <returns>list of tags</returns>
public TagsResponse GetAttackEventTagList(string organiztionId,string eventUuid)
{
string endpoint = String.Format(NgEndpoints.TAGS_ATTACK_EVENT_LIST, organiztionId, eventUuid);
return GetResponseAndDeserialize <TagsResponse>(endpoint);
}

// "internal static string TAGS_ATTACK_EVENT", "\"/ng/{orgUuid}/tags/attack/event/{eventUuid}\";"
public BaseApiResponse TagsServers(string organizationId,TagsServersRequest requestBody)
{
string endpoint = String.Format(NgEndpoints.TAGS_SERVERS, organizationId);
return GetResponseAndDeserialize<BaseApiResponse>(JsonConvert.SerializeObject(requestBody));
}


private bool _disposed;
protected virtual void Dispose(bool disposing)
{
Expand All @@ -767,6 +868,8 @@ protected virtual void Dispose(bool disposing)
_disposed = true;
}



public void Dispose()
{
Dispose(true);
Expand Down
18 changes: 18 additions & 0 deletions src/ContrastRestClient/Model/TagsApplicationsUpdateRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using Newtonsoft.Json;
using System.Collections.Generic;

namespace Contrast.Model
{
public class TagsApplicationsUpdateRequest
{
[JsonProperty(PropertyName ="applications_id")]
List<string> applications_id { get; set; }
[JsonProperty(PropertyName = "links")]
List<string> links { get; set; }
[JsonProperty(PropertyName ="links")]
List<string> tags { get; set; }
[JsonProperty(PropertyName ="tags_remove")]
List<string> tags_remove { get; set; }

}
}
10 changes: 10 additions & 0 deletions src/ContrastRestClient/Model/TagsRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using Newtonsoft.Json;

namespace Contrast.Model
{
public class TagsRequest
{
[JsonProperty(PropertyName ="tag")]
string Tag { get; set; }
}
}
14 changes: 14 additions & 0 deletions src/ContrastRestClient/Model/TagsServersRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.Collections.Generic;

namespace contrast_grid
{
public class TagsServersRequest
{
public TagsServersRequest()
{
}

public List<string> Tags { get; set; }
public List<string> ServersId { get; set; }
}
}
54 changes: 48 additions & 6 deletions src/ContrastRestClient/NgEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,57 @@ namespace Contrast
{
internal static class NgEndpoints
{
#region "tags"
internal static string APPLICATION_TRACE_TAGS = "api/ng/{0}/tags/traces/application/{1}";
internal static string SERVER_TAGS = "api/ng/{0}/";
internal static string SERVER_TRACE_TAGS = "api/ng/{0}/tags/traces/server/{1}";
internal static string TRACE_TAGS = "api/ng/{0}/tags/traces/trace/{1}";
internal static string DELETE_TRACE_TAG = "api/ng/{0}/tags/trace/{1}";
internal static string TRACES_TAGS = "api/ng/{0}/tags/traces";
internal static string TRACES_TAG_BULK = "api/ng/{0}/tags/traces/bulk";

internal static string TAGS_APPLICATION = "/ng/{orgUuid}/tags/application/{appId}";
internal static string TAGS_APPLICATION_LIST = "api/ng/{0}/tags/application/list/{1}"; // GET
internal static string TAGS_APPLICATION_DELETE = "api/ng/{0}/tags/application/{1}"; // DELETE
internal static string TAGS_APPLICATIONS = "api/ng/{0}/tags/applications"; // PUT
internal static string TAGS_APPLICATIONS_BULK_APP = "api/ng/{0}/tags/applications/bulk?applicationsId={1}"; // GET
internal static string TAGS_APPLICATIONS_BULK = "api/ng/{0}/tags/applications/bulk"; // PUT
internal static string TAGS_APPLICATIONS_LIST = "/ng/{0}/tags/applications/list"; // GET


internal static string TAGS_ATTACK_EVENT_LIST = "/ng/{orgUuid}/tags/attack/event/list/{eventUuid}";
internal static string TAGS_ATTACK_EVENT = "/ng/{orgUuid}/tags/attack/event/{eventUuid}";
internal static string TAGS_ATTACK_EVENTS = "/ng/{orgUuid}/tags/attack/events";
internal static string TAGS_ATTACK_EVENTS_BULK = "/ng/{orgUuid}/tags/attack/events/bulk";
internal static string TAGS_ATTACK_EVENTS_LIST = "/ng/{orgUuid}/tags/attack/events/list";
internal static string TAGS_ATTACK_LIST = "/ng/{orgUuid}/tags/attack/list/{attackUuid}";
internal static string TAGS_ATTACK = "/ng/{orgUuid}/tags/attack/{attackUuid}";
internal static string TAGS_ATTACKS = "/ng/{orgUuid}/tags/attacks";
internal static string TAGS_ATTACKS_BULK = "/ng/{orgUuid}/tags/attacks/bulk";
internal static string TAGS_ATTACKS_LIST = "/ng/{orgUuid}/tags/attacks/list";
internal static string TAGS_LIBRARIES = "/ng/{orgUuid}/tags/libraries";
internal static string TAGS_LIBRARIES_BULK = "/ng/{orgUuid}/tags/libraries/bulk";
internal static string TAGS_LIBRARIES_LIST = "/ng/{orgUuid}/tags/libraries/list";
internal static string TAGS_LIBRARIES1 = "/ng/{orgUuid}/tags/libraries/{appId}/list";
internal static string TAGS_LIBRARY = "/ng/{orgUuid}/tags/library/{hash}";
internal static string TAGS_SERVER_LIST = "/ng/{orgUuid}/tags/server/list/{serverId}";
internal static string TAGS_SERVER = "/ng/{orgUuid}/tags/server/{serverId}";
internal static string TAGS_SERVERS = "/ng/{orgUuid}/tags/servers";
internal static string TAGS_SERVERS_BULK = "/ng/{orgUuid}/tags/servers/bulk";
internal static string TAGS_SERVERS_LIST = "/ng/{orgUuid}/tags/servers/list";
internal static string TAGS_SERVERS_LIST_APPLICATION = "/ng/{orgUuid}/tags/servers/list/application/{appId}";
internal static string TAGS_TRACE = "/ng/{orgUuid}/tags/trace/{traceUuid}";
internal static string TAGS_TRACES = "/ng/{orgUuid}/tags/traces";
internal static string TAGS_TRACES_APPLICATION = "/ng/{orgUuid}/tags/traces/application/{appId}";
internal static string TAGS_TRACES_BULK = "/ng/{orgUuid}/tags/traces/bulk";
internal static string TAGS_TRACES_SERVER = "/ng/{orgUuid}/tags/traces/server/{serverId}";
internal static string TAGS_TRACES_TRACE = "/ng/{orgUuid}/tags/traces/trace/{traceUuid}";

#endregion
internal static string APPLICATIONS = "api/ng/{0}/applications/{1}";
internal static string APPLICATION_LIBRARIES = "api/ng/{0}/applications/{1}/libraries";
internal static string APPLICATION_SERVERS = "api/ng/{0}/applications/{1}/servers";
internal static string APPLICATION_TRACES = "api/ng/{0}/traces/{1}/filter";
internal static string APPLICATION_TRACE_TAGS = "api/ng/{0}/tags/traces/application/{1}";
internal static string APPLICATION_TRACE_MARK_STATUS = "api/ng/{0}/traces/{1}/mark";
internal static string RESET_APPLICATION = "api/ng/{0}/applications/{1}/reset";
internal static string DEFAULT_ORGANIZATION = "api/ng/profile/organizations/default";
Expand All @@ -50,7 +96,6 @@ internal static class NgEndpoints
internal static string PROFILES = "api/ng/{0}/agents/profiles";
internal static string SERVERS = "api/ng/{0}/servers/{1}";
internal static string SERVER_TRACES = "api/ng/{0}/servertraces/{1}/filter";
internal static string SERVER_TRACE_TAGS = "api/ng/{0}/tags/traces/server/{1}";
internal static string SERVER_TRACE_MARK_STATUS = "api/ng/{0}/servertraces/{1}/mark";
internal static string TRACE = "api/ng/{0}/traces/{1}";
internal static string TRACE_EVENTS_SUMMARY = "api/ng/{0}/traces/{1}/events/summary";
Expand All @@ -61,11 +106,8 @@ internal static class NgEndpoints
internal static string TRACE_FILTERS = "api/ng/{0}/orgtraces/filter/{1}/listing";
internal static string APPLICATION_TRACE_FILTERS = "api/ng/{0}/traces/{1}/filter/{2}/listing";
internal static string SERVER_TRACE_FILTERS = "api/ng/{0}/servertraces/{1}/filter/{2}/listing";
internal static string TRACE_TAGS = "api/ng/{0}/tags/traces/trace/{1}";
internal static string DELETE_TRACE_TAG = "api/ng/{0}/tags/trace/{1}";
internal static string TRACES_TAGS = "api/ng/{0}/tags/traces";
internal static string TRACES_TAG_BULK = "api/ng/{0}/tags/traces/bulk";
internal static string TRACE_MARK_STATUS = "api/ng/{0}/orgtraces/mark";
internal static string MODULES = "api/ng/{0}/modules/{1}";

}
}