Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copilot Instructions

## Code Style
- When formatting C# code, wrap if statements onto two lines; do not use single-line if statements.

## Project Guidelines
- When migrating or renaming code, reproduce existing tests for the new implementation to preserve test coverage; do not delete the old tests outright.
- For Auth0 and special SAML connection option mappings, keep controller/converter conversions manual; do not replace them with JSON-based mapping or add JSON converters to model classes because source and target models can be incompatible. Never use JsonConvertTo for Auth0-to-model transformations; every Auth0 type → model type conversion must be mapped by hand. Prefer explicit, manual representations or alternative mapping approaches instead of attaching JSON converters to the models.
- Extract nested conversion logic in controller mappings into separate FromApi/ToApi helper methods instead of inlining them inside larger conversion methods.
- Use explicit, manual mapping in these helpers for each nested type to preserve correctness and handle incompatibilities.
- When guarding assignments for manual converters, check the source property in the if-condition and keep the ToApi(...) call on the assignment's right-hand side; do not bind the converted or source value in the if pattern.

### Generated Files / Code Generation
- Do not delete orphaned generated files when regenerating client V2alpha1 models unless explicitly requested.
- For client addon SharePoint external URLs, generate the V2alpha1 model property as string[] (always an array); do not use a union helper type for this field.
8 changes: 7 additions & 1 deletion Alethic.Auth0.Operator.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.1.11312.151 d18.0
VisualStudioVersion = 18.1.11312.151
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E13F491D-01A4-4586-9D6C-C2B2150ACB65}"
ProjectSection(SolutionItems) = preProject
Expand Down Expand Up @@ -43,6 +43,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "targets", "targets", "{ABA7
EndProject
Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "dist-images", "src\dist-images\dist-images.msbuildproj", "{4EB6F7F9-BEA2-EA96-955E-2ED53346803D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Alethic.Auth0.Operator.ModelGenerator", "src\Alethic.Auth0.Operator.ModelGenerator\Alethic.Auth0.Operator.ModelGenerator.csproj", "{881E837A-A326-BD1A-F0E0-0490CCA70CA8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -77,6 +79,10 @@ Global
{4EB6F7F9-BEA2-EA96-955E-2ED53346803D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4EB6F7F9-BEA2-EA96-955E-2ED53346803D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4EB6F7F9-BEA2-EA96-955E-2ED53346803D}.Release|Any CPU.Build.0 = Release|Any CPU
{881E837A-A326-BD1A-F0E0-0490CCA70CA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{881E837A-A326-BD1A-F0E0-0490CCA70CA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{881E837A-A326-BD1A-F0E0-0490CCA70CA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{881E837A-A326-BD1A-F0E0-0490CCA70CA8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="KubeOps.Operator" Version="10.3.2" />
<PackageReference Include="KubeOps.Operator" Version="10.5.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ public record V1ClientAddonSharePointExternalUrl
/// </summary>
[JsonPropertyName("type")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Type { get; internal set; }
public string? Type { get; set; }

/// <summary>
/// Union value
/// </summary>
[JsonPropertyName("value")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public object? Value { get; internal set; }
public object? Value { get; set; }

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ public enum V1ClientComplianceLevel
{

[JsonStringEnumMemberName("none")]
NONE,
None,

[JsonStringEnumMemberName("fapi1_adv_pkj_par")]
FAPI1_ADV_PKJ_PAR,
Fapi1AdvPkjPar,

[JsonStringEnumMemberName("fapi1_adv_mtls_par")]
FAPI1_ADV_MTLS_PAR
Fapi1AdvMtlsPar

}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonAws
{

[JsonPropertyName("principal")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Principal { get; set; }

[JsonPropertyName("role")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Role { get; set; }

[JsonPropertyName("lifetime_in_seconds")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? LifetimeInSeconds { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonAzureBlob
{

[JsonPropertyName("accountName")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? AccountName { get; set; }

[JsonPropertyName("storageAccessKey")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? StorageAccessKey { get; set; }

[JsonPropertyName("containerName")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? ContainerName { get; set; }

[JsonPropertyName("blobName")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? BlobName { get; set; }

[JsonPropertyName("expiration")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? Expiration { get; set; }

[JsonPropertyName("signedIdentifier")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? SignedIdentifier { get; set; }

[JsonPropertyName("blob_read")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? BlobRead { get; set; }

[JsonPropertyName("blob_write")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? BlobWrite { get; set; }

[JsonPropertyName("blob_delete")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? BlobDelete { get; set; }

[JsonPropertyName("container_read")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? ContainerRead { get; set; }

[JsonPropertyName("container_write")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? ContainerWrite { get; set; }

[JsonPropertyName("container_delete")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? ContainerDelete { get; set; }

[JsonPropertyName("container_list")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public bool? ContainerList { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonAzureSb
{

[JsonPropertyName("namespace")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Namespace { get; set; }

[JsonPropertyName("sasKeyName")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? SasKeyName { get; set; }

[JsonPropertyName("sasKey")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? SasKey { get; set; }

[JsonPropertyName("entityPath")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? EntityPath { get; set; }

[JsonPropertyName("expiration")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? Expiration { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonEchoSign
{

[JsonPropertyName("domain")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Domain { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonEgnyte
{

[JsonPropertyName("domain")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Domain { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonFirebase
{

[JsonPropertyName("secret")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Secret { get; set; }

[JsonPropertyName("private_key_id")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? PrivateKeyId { get; set; }

[JsonPropertyName("private_key")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? PrivateKey { get; set; }

[JsonPropertyName("client_email")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? ClientEmail { get; set; }

[JsonPropertyName("lifetime_in_seconds")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? LifetimeInSeconds { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonLayer
{

[JsonPropertyName("providerId")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? ProviderId { get; set; }

[JsonPropertyName("keyId")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? KeyId { get; set; }

[JsonPropertyName("privateKey")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? PrivateKey { get; set; }

[JsonPropertyName("principal")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Principal { get; set; }

[JsonPropertyName("expiration")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? Expiration { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonMscrm
{

[JsonPropertyName("url")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Url { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonNewRelic
{

[JsonPropertyName("account")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Account { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonOag
{


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonOffice365
{

[JsonPropertyName("domain")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Domain { get; set; }

[JsonPropertyName("connection")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Connection { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonRms
{

[JsonPropertyName("url")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Url { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonSalesforce
{

[JsonPropertyName("entity_id")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? EntityId { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Text.Json.Serialization;

namespace Alethic.Auth0.Operator.Core.Models.Client.V2alpha1;

public record V2alpha1ClientAddonSalesforceApi
{

[JsonPropertyName("clientid")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Clientid { get; set; }

[JsonPropertyName("principal")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Principal { get; set; }

[JsonPropertyName("communityName")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? CommunityName { get; set; }

[JsonPropertyName("community_url_section")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? CommunityUrlSection { get; set; }

}
Loading
Loading