Skip to content

Commit

Permalink
feat: Create Dialogporten Serviceowner client library (#1831)
Browse files Browse the repository at this point in the history
<!--- Provide a general summary of your changes in the Title above -->

## Description

<!--- Describe your changes in detail -->

## Related Issue(s)

- #1137

## Verification

- [x] **Your** code builds clean without any errors or warnings
- [x] Manual testing done (required)
- [x] Relevant automated test added (if you find this hard, leave it and
we'll help out)

## Documentation

- [ ] Documentation is updated (either in `docs`-directory, Altinnpedia
or a separate linked PR in
[altinn-studio-docs.](https://github.com/Altinn/altinn-studio-docs), if
applicable)

---------

Co-authored-by: Ole Jørgen Skogstad <[email protected]>
Co-authored-by: Are Almaas <[email protected]>
Co-authored-by: Magnus Sandgren <[email protected]>
  • Loading branch information
4 people authored Feb 20, 2025
1 parent ed30408 commit bb3ebc3
Show file tree
Hide file tree
Showing 34 changed files with 5,545 additions and 65 deletions.
13 changes: 12 additions & 1 deletion .github/workflows/ci-cd-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,21 @@ jobs:
version: ${{ needs.get-current-version.outputs.version }}-${{ needs.generate-git-short-sha.outputs.gitShortSha }}
runMigration: ${{ github.event_name == 'workflow_dispatch' || needs.check-for-changes.outputs.hasMigrationChanges == 'true' }}

# publish-sdk-to-nuget:
# uses: ./.github/workflows/workflow-publish-nuget.yml
# needs: [ get-current-version, generate-git-short-sha, check-for-changes ]
# if: ${{ needs.check-for-changes.outputs.hasSwaggerSchemaChanges == 'true' }}
# with:
# version: ${{ needs.get-current-version.outputs.version }}-rc.${{ needs.generate-git-short-sha.outputs.gitShortSha }}
# path: 'src/Digdir.Library.Dialogporten.WebApiClient.csproj'
# source: 'https://api.nuget.org/v3/index.json'
# secrets:
# NUGET_API_KEY: ${{ secrets.NUGET_API_TEST_KEY }}

publish-schema-npm:
name: Deploy schema npm package
needs: [check-for-changes, get-current-version, generate-git-short-sha, deploy-apps]
if: ${{ always() && !failure() && !cancelled() && (github.event_name == 'workflow_dispatch' || needs.check-for-changes.outputs.hasSchemaChanges == 'true') }}
if: ${{ always() && !failure() && !cancelled() && (github.event_name == 'workflow_dispatch' || needs.check-for-changes.outputs.hasSwaggerSchemaChanges == 'true' || needs.check-for-changes.outputs.hasGqlSchemaChanges == 'true') }}
uses: ./.github/workflows/workflow-publish-schema.yml
with:
version: ${{ needs.get-current-version.outputs.version }}-${{ needs.generate-git-short-sha.outputs.gitShortSha }}
Expand Down
15 changes: 7 additions & 8 deletions .github/workflows/ci-cd-pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@

on:
pull_request:
branches: [main]
branches: [ main ]
paths-ignore:
- "tests/k6/**"
- "CHANGELOG.md"

jobs:
generate-git-short-sha:
Expand All @@ -19,23 +18,23 @@ jobs:
check-for-changes:
name: Check for changes
uses: ./.github/workflows/workflow-check-for-changes.yml

build:
uses: ./.github/workflows/workflow-build-and-test.yml
needs: [check-for-changes]
needs: [ check-for-changes ]
if: ${{ needs.check-for-changes.outputs.hasBackendChanges == 'true' || needs.check-for-changes.outputs.hasTestChanges == 'true' }}

build-infrastructure:
uses: ./.github/workflows/workflow-build-infrastructure.yml
needs: [check-for-changes]
needs: [ check-for-changes ]
if: ${{ always() && needs.check-for-changes.outputs.hasInfraChanges == 'true' }}
secrets:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
with:
environment: "test"

dry-run-deploy-infra:
name: Dry run deploy infrastructure
uses: ./.github/workflows/workflow-deploy-infra.yml
Expand Down Expand Up @@ -93,7 +92,7 @@ jobs:
delete-github-deployments:
name: Delete GitHub deployments
uses: ./.github/workflows/workflow-delete-deployments.yml
needs: [dry-run-deploy-apps, dry-run-deploy-infra]
needs: [ dry-run-deploy-apps, dry-run-deploy-infra ]
if: ${{ always() && !failure() && !cancelled() }}
with:
gitSha: ${{ github.event.pull_request.head.sha }}
gitSha: ${{ github.event.pull_request.head.sha }}
13 changes: 12 additions & 1 deletion .github/workflows/ci-cd-staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,17 @@ jobs:
runMigration: ${{ needs.check-for-changes.outputs.hasMigrationChanges == 'true' }}
ref: "refs/tags/v${{ github.event.client_payload.version }}"

# publish-sdk-to-nuget:
# uses: ./.github/workflows/workflow-publish-nuget.yml
# needs: [ get-current-version, check-for-changes ]
# if: ${{ needs.check-for-changes.outputs.hasSwaggerSchemaChanges == 'true' }}
# with:
# version: ${{ needs.get-current-version.outputs.version }}
# path: 'src/Digdir.Library.Dialogporten.WebApiClient/Digdir.Library.Dialogporten.WebApiClient.csproj'
# source: 'https://api.nuget.org/v3/index.json'
# secrets:
# NUGET_API_KEY: ${{ secrets.NUGET_API_TEST_KEY }}

store-apps-version:
name: Store Latest Deployed Apps Version as GitHub Variable
needs: [deploy-apps]
Expand All @@ -94,7 +105,7 @@ jobs:
publish-schema-npm:
name: Publish schema npm package
needs: [check-for-changes, deploy-apps]
if: ${{ always() && !failure() && !cancelled() && needs.check-for-changes.outputs.hasSchemaChanges == 'true' }}
if: ${{ always() && !failure() && !cancelled() && needs.check-for-changes.outputs.hasSwaggerSchemaChanges == 'true' || needs.check-for-changes.outputs.hasGqlSchemaChanges == 'true' }}
uses: ./.github/workflows/workflow-publish-schema.yml
with:
version: ${{ github.event.client_payload.version }}
Expand Down
18 changes: 12 additions & 6 deletions .github/workflows/workflow-check-for-changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,12 @@ on:
hasSlackNotifierChanges:
description: "Slack Notifier function related files changed"
value: ${{ jobs.check-for-changes.outputs.hasSlackNotifierChanges }}
hasSchemaChanges:
description: "Schema has changed"
value: ${{ jobs.check-for-changes.outputs.hasSchemaChanges }}
hasSwaggerSchemaChanges:
description: "Swagger schema has changed"
value: ${{ jobs.check-for-changes.outputs.hasSwaggerSchemaChanges }}
hasGqlSchemaChanges:
description: "GraphQL schema has changed"
value: ${{ jobs.check-for-changes.outputs.hasGqlSchemaChanges }}
hasMigrationChanges:
description: "Migration related files changed"
value: ${{ jobs.check-for-changes.outputs.hasMigrationChanges }}
Expand All @@ -42,7 +45,8 @@ jobs:
hasSlackNotifierChanges: ${{ steps.filter.outputs.slackNotifier_any_modified == 'true'}}
hasBackendChanges: ${{ steps.filter-backend.outputs.backend_any_modified == 'true' }}
hasTestChanges: ${{ steps.filter-backend.outputs.tests_any_modified == 'true' }}
hasSchemaChanges: ${{ steps.filter-backend.outputs.schema_any_modified == 'true'}}
hasSwaggerSchemaChanges: ${{ steps.filter-backend.outputs.swagger_schema_any_modified == 'true'}}
hasGqlSchemaChanges: ${{ steps.filter-backend.outputs.gql_schema_any_modified == 'true'}}
hasMigrationChanges: ${{ steps.filter-backend.outputs.migration_any_modified == 'true'}}
steps:
- name: Checkout
Expand Down Expand Up @@ -75,7 +79,9 @@ jobs:
- '.azure/modules/containerApp/**/*'
tests:
- 'tests/**/*'
schema:
- 'docs/schema/V1/**/*'
swagger_schema:
- 'docs/schema/V1/swagger.verified.json'
gql_schema:
- 'docs/schema/V1/schema.verified.graphql'
migration:
- 'src/Digdir.Domain.Dialogporten.Infrastructure/Persistence/Migrations/**/*'
44 changes: 44 additions & 0 deletions .github/workflows/workflow-publish-nuget.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: "Publish nuget package"

on:
workflow_call:
inputs:
version:
description: "Version"
required: true
type: string
path:
description: "Path to project"
required: true
type: string
source:
description: "Nuget Source"
required: true
type: string
secrets:
NUGET_API_KEY:
required: true
jobs:
build-and-push:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up .NET
uses: actions/setup-dotnet@v4
with:
global-json-file: ./global.json

- name: Pack with debug symbols
run: dotnet pack --configuration Release -p:Version="${{ inputs.version }}" -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg --output . "${{ inputs.path }}"

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: package
path: '*.*nupkg'

- name: Push to NuGet
run: dotnet nuget push *.nupkg --source "${{ inputs.source }}" --api-key ${{secrets.NUGET_API_KEY}}
32 changes: 31 additions & 1 deletion Digdir.Domain.Dialogporten.sln
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Domain.Dialogporten.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Tool.Dialogporten.Ed25519KeyPairGenerator", "src\Digdir.Tool.Dialogporten.Ed25519KeyPairGenerator\Digdir.Tool.Dialogporten.Ed25519KeyPairGenerator.csproj", "{030909AA-5B61-46B4-9B74-0D2D779478FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Domain.Dialogporten.WebApi.Integration.Tests", "tests\Digdir.Domain.Dialogporten.WebApi.Integration.Tests\Digdir.Domain.Dialogporten.WebApi.Integration.Tests.csproj", "{42004236-D45C-4A1F-9FF9-CF12B7388389}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Domain.Dialogporten.WebApi.Unit.Tests", "tests\Digdir.Domain.Dialogporten.WebApi.Unit.Tests\Digdir.Domain.Dialogporten.WebApi.Unit.Tests.csproj", "{42004236-D45C-4A1F-9FF9-CF12B7388389}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Domain.Dialogporten.GraphQL", "src\Digdir.Domain.Dialogporten.GraphQL\Digdir.Domain.Dialogporten.GraphQL.csproj", "{234FE24D-1047-4E29-A625-1EB406C37A2D}"
EndProject
Expand All @@ -61,8 +61,20 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Domain.Dialogporten.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Library.Utils.AspNet", "src\Digdir.Library.Utils.AspNet\Digdir.Library.Utils.AspNet.csproj", "{6A485C65-3613-4A49-A16F-2789119F6F38}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebApiClient", "WebApiClient", "{9B809C3A-B169-4599-A2D3-A25E87C510FC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Library.Dialogporten.WebApiClient", "src\Digdir.Library.Dialogporten.WebApiClient\Digdir.Library.Dialogporten.WebApiClient.csproj", "{714FBB11-ADC0-44E8-A768-D1A59D641D31}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Tool.Dialogporten.LargeDataSetGenerator", "src\Digdir.Tool.Dialogporten.LargeDataSetGenerator\Digdir.Tool.Dialogporten.LargeDataSetGenerator.csproj", "{B0E0E9EE-AFBE-4013-908C-5F8DF66AB671}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Library.Dialogporten.WebApiClient.WebApiSample", "src\Digdir.Library.Dialogporten.WebApiClient.WebApiSample\Digdir.Library.Dialogporten.WebApiClient.WebApiSample.csproj", "{FBF19369-21CD-437D-BB88-CCB81EC947CF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{21A54524-CC15-42A7-804B-1E4DEBFAA1F7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebApiClient", "WebApiClient", "{020E53CD-4575-44BA-81AC-26CE948EE0E7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Digdir.Library.Dialogporten.WebApiClient.Unit.Tests", "tests\Digdir.Library.Dialogporten.WebApiClient.Unit.Tests\Digdir.Library.Dialogporten.WebApiClient.Unit.Tests.csproj", "{E6CBC569-6821-4DBB-A819-AC95AA8A0682}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -149,10 +161,22 @@ Global
{6A485C65-3613-4A49-A16F-2789119F6F38}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A485C65-3613-4A49-A16F-2789119F6F38}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A485C65-3613-4A49-A16F-2789119F6F38}.Release|Any CPU.Build.0 = Release|Any CPU
{714FBB11-ADC0-44E8-A768-D1A59D641D31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{714FBB11-ADC0-44E8-A768-D1A59D641D31}.Debug|Any CPU.Build.0 = Debug|Any CPU
{714FBB11-ADC0-44E8-A768-D1A59D641D31}.Release|Any CPU.ActiveCfg = Release|Any CPU
{714FBB11-ADC0-44E8-A768-D1A59D641D31}.Release|Any CPU.Build.0 = Release|Any CPU
{B0E0E9EE-AFBE-4013-908C-5F8DF66AB671}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B0E0E9EE-AFBE-4013-908C-5F8DF66AB671}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B0E0E9EE-AFBE-4013-908C-5F8DF66AB671}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B0E0E9EE-AFBE-4013-908C-5F8DF66AB671}.Release|Any CPU.Build.0 = Release|Any CPU
{FBF19369-21CD-437D-BB88-CCB81EC947CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FBF19369-21CD-437D-BB88-CCB81EC947CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FBF19369-21CD-437D-BB88-CCB81EC947CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FBF19369-21CD-437D-BB88-CCB81EC947CF}.Release|Any CPU.Build.0 = Release|Any CPU
{E6CBC569-6821-4DBB-A819-AC95AA8A0682}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E6CBC569-6821-4DBB-A819-AC95AA8A0682}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E6CBC569-6821-4DBB-A819-AC95AA8A0682}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E6CBC569-6821-4DBB-A819-AC95AA8A0682}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -181,7 +205,13 @@ Global
{0900E3CF-F9D8-4B29-957F-484B3B028D6D} = {320B47A0-5EB8-4B6E-8C84-90633A1849CA}
{E389C7C8-9610-40AC-86DC-769B1B7DC78E} = {CADB8189-4AA1-4732-844A-C41DBF3EC8B7}
{6A485C65-3613-4A49-A16F-2789119F6F38} = {096E9B69-6783-4446-A895-0B6D7729A0D9}
{9B809C3A-B169-4599-A2D3-A25E87C510FC} = {096E9B69-6783-4446-A895-0B6D7729A0D9}
{714FBB11-ADC0-44E8-A768-D1A59D641D31} = {9B809C3A-B169-4599-A2D3-A25E87C510FC}
{B0E0E9EE-AFBE-4013-908C-5F8DF66AB671} = {3C2C775D-F2D1-42A2-B53F-CC6D5FF59633}
{FBF19369-21CD-437D-BB88-CCB81EC947CF} = {9B809C3A-B169-4599-A2D3-A25E87C510FC}
{21A54524-CC15-42A7-804B-1E4DEBFAA1F7} = {CADB8189-4AA1-4732-844A-C41DBF3EC8B7}
{020E53CD-4575-44BA-81AC-26CE948EE0E7} = {21A54524-CC15-42A7-804B-1E4DEBFAA1F7}
{E6CBC569-6821-4DBB-A819-AC95AA8A0682} = {020E53CD-4575-44BA-81AC-26CE948EE0E7}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {B2FE67FF-7622-4AFB-AD8E-961B6A39D888}
Expand Down
2 changes: 1 addition & 1 deletion docs/schema/V1/swagger.verified.json
Original file line number Diff line number Diff line change
Expand Up @@ -7268,7 +7268,7 @@
},
"servers": [
{
"url": "https://altinn-dev-api.azure-api.net/dialogporten"
"url": "https://localhost:7214/"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,7 @@ public sealed class SearchDialogQuery : SortablePaginationParameter<SearchDialog

private DeletedFilter? _deleted = DeletedFilter.Exclude;
/// <summary>
/// If set to 'include', the result will include both deleted and non-deleted dialogs
/// If set to 'exclude', the result will only include non-deleted dialogs
/// If set to 'only', the result will only include deleted dialogs
/// If set to 'include', the result will include both deleted and non-deleted dialogs. If set to 'exclude', the result will only include non-deleted dialogs. If set to 'only', the result will only include deleted dialogs
/// </summary>
public DeletedFilter? Deleted
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,18 @@

<ItemGroup>
<PackageReference Include="Azure.Identity" Version="1.13.2" />
<PackageReference Include="FastEndpoints.Swagger" Version="5.34.0"/>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.2" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.2" />
<PackageReference Include="Serilog.Sinks.OpenTelemetry" Version="4.1.1" />
<PackageReference Include="Microsoft.Azure.AppConfiguration.AspNetCore" Version="8.0.0" />
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
<PackageReference Include="Serilog.Enrichers.Environment" Version="3.0.1" />
<PackageReference Include="FastEndpoints.Swagger" Version="5.34.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.2" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.2" />
<PackageReference Include="NSwag.MSBuild" Version="14.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
Expand All @@ -25,4 +29,8 @@
<ProjectReference Include="..\Digdir.Tool.Dialogporten.GenerateFakeData\Digdir.Tool.Dialogporten.GenerateFakeData.csproj" />
</ItemGroup>

<Target Name="NSwag" AfterTargets="Build" Condition="$(Configuration)=='Release'">
<Exec WorkingDirectory="$(ProjectDir)" EnvironmentVariables="ASPNETCORE_ENVIRONMENT=Development" Command="$(NSwagExe_net90) aspnetcore2openapi /nobuild:true /project:$(MSBuildProjectFullPath) /configuration:$(Configuration) /output:$(TargetDir)/swagger.json"/>
</Target>

</Project>
42 changes: 21 additions & 21 deletions src/Digdir.Domain.Dialogporten.WebApi/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,26 @@ static void BuildAndRun(string[] args)
x.RemoveEmptyRequestSchema = true;
x.DocumentSettings = s =>
{
s.PostProcess = document =>
{
var dialogportenBaseUri = builder.Configuration
.GetSection(ApplicationSettings.ConfigurationSectionName)
.Get<ApplicationSettings>()!
.Dialogporten
.BaseUri
.ToString();

document.Servers.Clear();
document.Servers.Add(new OpenApiServer
{
Url = dialogportenBaseUri
});
document.Generator = null;
document.ReplaceProblemDetailsDescriptions();
document.MakeCollectionsNullable();
document.FixJwtBearerCasing();
document.RemoveSystemStringHeaderTitles();
};
s.Title = "Dialogporten";
s.DocumentName = "v1";
s.Version = "v1";
Expand Down Expand Up @@ -158,7 +178,6 @@ static void BuildAndRun(string[] args)
}

var app = builder.Build();

app.MapAspNetHealthChecks()
.MapControllers();

Expand Down Expand Up @@ -197,26 +216,7 @@ static void BuildAndRun(string[] args)
x.Errors.ResponseBuilder = ErrorResponseBuilderExtensions.ResponseBuilder;
})
.UseAddSwaggerCorsHeader()
.UseSwaggerGen(config =>
{
config.PostProcess = (document, _) =>
{
var dialogportenBaseUri = builder.Configuration
.GetSection(ApplicationSettings.ConfigurationSectionName)
.Get<ApplicationSettings>()!
.Dialogporten
.BaseUri
.ToString();

document.Servers.Clear();
document.Servers.Add(new OpenApiServer { Url = dialogportenBaseUri });
document.Generator = null;
document.ReplaceProblemDetailsDescriptions();
document.MakeCollectionsNullable();
document.FixJwtBearerCasing();
document.RemoveSystemStringHeaderTitles();
};
}, uiConfig =>
.UseSwaggerGen(uiConfig: uiConfig =>
{
// Hide schemas view
uiConfig.DefaultModelsExpandDepth = -1;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk.Web">


<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<UserSecretsId>750256a4-f332-4783-8802-8a7d9566f9cb</UserSecretsId>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.2"/>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Digdir.Library.Dialogporten.WebApiClient\Digdir.Library.Dialogporten.WebApiClient.csproj" />
</ItemGroup>

</Project>
Loading

0 comments on commit bb3ebc3

Please sign in to comment.