feat!(certificates): expose full /certificates/search filter surface on Get/Search-InfisicalCertificate #6

Merged
gsadmin merged 6 commits from dev into main 2026-06-05 02:37:44 +00:00
3 changed files with 28 additions and 4 deletions
Showing only changes of commit 86968c18cb - Show all commits
@@ -8,7 +8,7 @@ namespace PSInfisicalAPI.Models
public string ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public InfisicalCertificatePolicySubject Subject { get; set; }
public InfisicalCertificatePolicySubject[] Subject { get; set; }
public InfisicalCertificatePolicySan[] Sans { get; set; }
public InfisicalCertificatePolicyUsages KeyUsages { get; set; }
public InfisicalCertificatePolicyUsages ExtendedKeyUsages { get; set; }
@@ -10,7 +10,7 @@ namespace PSInfisicalAPI.Pki
[JsonProperty("projectId")] public string ProjectId { get; set; }
[JsonProperty("name")] public string Name { get; set; }
[JsonProperty("description")] public string Description { get; set; }
[JsonProperty("subject")] public InfisicalCertificatePolicySubjectDto Subject { get; set; }
[JsonProperty("subject")] public JToken SubjectRaw { get; set; }
[JsonProperty("sans")] public JToken SansRaw { get; set; }
[JsonProperty("keyUsages")] public InfisicalCertificatePolicyUsagesDto KeyUsages { get; set; }
[JsonProperty("extendedKeyUsages")] public InfisicalCertificatePolicyUsagesDto ExtendedKeyUsages { get; set; }
@@ -21,7 +21,7 @@ namespace PSInfisicalAPI.Pki
ProjectId = !string.IsNullOrEmpty(dto.ProjectId) ? dto.ProjectId : fallbackProjectId,
Name = dto.Name,
Description = dto.Description,
Subject = MapSubject(dto.Subject),
Subject = MapSubjects(dto.SubjectRaw),
Sans = MapSans(dto.SansRaw),
KeyUsages = MapUsages(dto.KeyUsages),
ExtendedKeyUsages = MapUsages(dto.ExtendedKeyUsages),
@@ -52,8 +52,32 @@ namespace PSInfisicalAPI.Pki
return results.ToArray();
}
private static InfisicalCertificatePolicySubject MapSubject(InfisicalCertificatePolicySubjectDto dto)
private static InfisicalCertificatePolicySubject[] MapSubjects(JToken token)
{
if (token == null || token.Type == JTokenType.Null) { return null; }
List<InfisicalCertificatePolicySubject> results = new List<InfisicalCertificatePolicySubject>();
if (token.Type == JTokenType.Array)
{
foreach (JToken child in (JArray)token)
{
InfisicalCertificatePolicySubject mapped = MapSubjectObject(child);
if (mapped != null) { results.Add(mapped); }
}
}
else if (token.Type == JTokenType.Object)
{
InfisicalCertificatePolicySubject mapped = MapSubjectObject(token);
if (mapped != null) { results.Add(mapped); }
}
return results.Count > 0 ? results.ToArray() : null;
}
private static InfisicalCertificatePolicySubject MapSubjectObject(JToken token)
{
if (token == null || token.Type != JTokenType.Object) { return null; }
InfisicalCertificatePolicySubjectDto dto = token.ToObject<InfisicalCertificatePolicySubjectDto>();
if (dto == null) { return null; }
return new InfisicalCertificatePolicySubject
{