diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
new file mode 100644
index 0000000..b0e38ab
--- /dev/null
+++ b/.config/dotnet-tools.json
@@ -0,0 +1,5 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {}
+}
\ No newline at end of file
diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index fe1152b..0000000
--- a/.dockerignore
+++ /dev/null
@@ -1,30 +0,0 @@
-**/.classpath
-**/.dockerignore
-**/.env
-**/.git
-**/.gitignore
-**/.project
-**/.settings
-**/.toolstarget
-**/.vs
-**/.vscode
-**/*.*proj.user
-**/*.dbmdl
-**/*.jfm
-**/azds.yaml
-**/bin
-**/charts
-**/docker-compose*
-**/Dockerfile*
-**/node_modules
-**/npm-debug.log
-**/obj
-**/secrets.dev.yaml
-**/values.dev.yaml
-LICENSE
-README.md
-!**/.gitignore
-!.git/HEAD
-!.git/config
-!.git/packed-refs
-!.git/refs/heads/**
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml
new file mode 100644
index 0000000..b03f509
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature.yml
@@ -0,0 +1,44 @@
+name: "Feature"
+description: "Crie uma feature vinculada a um conjunto de features"
+title: "[FEATURE] "
+labels: ["feature"]
+projects: ["default"]
+assignees: []
+type: "FEATURE"
+
+body:
+ - type: input
+ id: parent-issue
+ attributes:
+ label: Issue Pai (Feature Set)
+ description: "Número da issue do Feature Set ao qual esta feature pertence. Exemplo: 42"
+ placeholder: "42"
+ validations:
+ required: true
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Detalhes da Implementação
+ description: |
+ Descreva o que deve ser implementado nesta feature.
+ placeholder: "Explicar claramente o escopo da feature."
+ validations:
+ required: true
+
+ - type: textarea
+ id: steps
+ attributes:
+ label: Etapas do Desenvolvimento
+ description: |
+ Liste as etapas da feature em formato de checklist.
+ Exemplo:
+ - [ ] Criar endpoint
+ - [ ] Implementar testes
+ - [ ] Documentar
+ placeholder: |
+ - [ ] Etapa 1
+ - [ ] Etapa 2
+ - [ ] Etapa 3
+ validations:
+ required: false
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/featureset.yml b/.github/ISSUE_TEMPLATE/featureset.yml
new file mode 100644
index 0000000..33d0925
Binary files /dev/null and b/.github/ISSUE_TEMPLATE/featureset.yml differ
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
new file mode 100644
index 0000000..dde9774
--- /dev/null
+++ b/.github/workflows/build.yaml
@@ -0,0 +1,66 @@
+name: "Build"
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ workflow_dispatch:
+
+jobs:
+ build-mobile:
+ runs-on: macos-latest
+ strategy:
+ matrix:
+ target:
+ - { framework: net8.0-android }
+ - { framework: net8.0-ios, runtime: iossimulator-arm64 }
+ fail-fast: false
+
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.x
+
+ - name: Setup Xcode 16.2
+ uses: maxim-lobanov/setup-xcode@v1
+ with:
+ xcode-version: '16.2'
+
+ - name: Instalar workloads MAUI
+ run: dotnet workload install maui
+
+ - name: Restore workloads
+ run: dotnet workload restore
+
+ - name: Restore packages
+ run: dotnet restore ${{ github.workspace }}/src/Ayllu/Ayllu.csproj
+
+ - name: Build
+ run: dotnet build ${{ github.workspace }}/src/Ayllu/Ayllu.csproj --configuration Release --framework ${{ matrix.target.framework }} ${{ matrix.target.runtime && format('--runtime {0}', matrix.target.runtime) }} --no-restore
+
+ build-web:
+ runs-on: macos-15
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.x
+
+ - name: Instalar workloads MAUI
+ run: dotnet workload install maui
+
+ - name: Restore workloads
+ run: dotnet workload restore
+
+ - name: Restore packages
+ run: dotnet restore ${{ github.workspace }}/src/Ayllu.Web/Ayllu.Web.csproj
+
+ - name: Build
+ run: dotnet build ${{ github.workspace }}/src/Ayllu.Web/Ayllu.Web.csproj --configuration Release --framework net8.0 --no-restore
+
+
+
+
+
\ No newline at end of file
diff --git a/.github/workflows/link-feature-to-parent.yml b/.github/workflows/link-feature-to-parent.yml
new file mode 100644
index 0000000..9c1d7e5
Binary files /dev/null and b/.github/workflows/link-feature-to-parent.yml differ
diff --git a/.gitignore b/.gitignore
index 1feccde..0fdc281 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,20 +1,22 @@
-################################################################################
-# Este arquivo .gitignore foi criado automaticamente pelo Microsoft(R) Visual Studio.
-################################################################################
-
-/.env
-/.vs/Ayluu
-/obj/Docker
-/src/Ayllu.Api/obj
-/src/Ayllu.Application/obj
-/src/Ayllu.Composition/obj
-/src/Ayllu.Domain/obj
-/src/Ayllu.Web/obj
-/src/Ayllu.Infrastructure/obj
-/obj
-/src/Ayllu.Api/bin/Debug/net9.0
-/src/Ayllu.Application/bin/Debug/net9.0
-/src/Ayllu.Composition/bin/Debug/net9.0
-/src/Ayllu.Domain/bin/Debug/net9.0
-/src/Ayllu.Infrastructure/bin/Debug/net9.0
-/src/Ayllu.Web/bin/Debug/net9.0
+**/bin
+**/obj
+**/Debug
+**/Release
+**/*.user
+*/*.suo
+**/*.cache
+**/*.log
+.vs
+**/*.vspscc
+**/*.vssscc
+**/*.pdb
+**/*.dbmdl
+**/*.opendb
+**/*.jfm
+**/*.class
+**/*.jar
+**/*.war
+**/*.ear
+**/*.iml
+/src/Ayllu.Github.Client/Github/Client/kiota-lock.json
+/.vs/Ayllu
diff --git a/.vs/Ayllu/v17/.suo b/.vs/Ayllu/v17/.suo
new file mode 100644
index 0000000..0d72357
Binary files /dev/null and b/.vs/Ayllu/v17/.suo differ
diff --git a/.vs/Ayllu/v17/DocumentLayout.json b/.vs/Ayllu/v17/DocumentLayout.json
new file mode 100644
index 0000000..48a465a
--- /dev/null
+++ b/.vs/Ayllu/v17/DocumentLayout.json
@@ -0,0 +1,374 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "D:\\RemoteCodeHub\\Ayllu\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}|workflows{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}|D:\\RemoteCodeHub\\Ayllu\\.github\\workflows\\build.yaml||{8B382828-6202-11D1-8870-0000F87579D2}",
+ "RelativeMoniker": "D:0:0:{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}|workflows{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}|solutionrelative:.github\\workflows\\build.yaml||{8B382828-6202-11D1-8870-0000F87579D2}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{54ACB41B-134C-4C67-89C3-5692359CB228}|src\\Ayllu.Github.Client\\Ayllu.Github.Client.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.github.client\\ayllu.github.client.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
+ "RelativeMoniker": "D:0:0:{54ACB41B-134C-4C67-89C3-5692359CB228}|src\\Ayllu.Github.Client\\Ayllu.Github.Client.csproj|solutionrelative:src\\ayllu.github.client\\ayllu.github.client.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\ayllu.web.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\ayllu.web.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\ayllu.web.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\ayllu.web.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\app.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\app.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\app.razor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\components\\layout\\mainlayout.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\_imports.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\_imports.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\components\\pages\\weather.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\components\\pages\\home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\components\\pages\\counter.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\components\\pages\\counter.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|d:\\remotecodehub\\ayllu\\src\\ayllu.web\\wwwroot\\index.html||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+ "RelativeMoniker": "D:0:0:{29FF4418-8F0E-4496-9DA7-241D5E3683DE}|src\\Ayllu.Web\\Ayllu.Web.csproj|solutionrelative:src\\ayllu.web\\wwwroot\\index.html||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}|workflows{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}|D:\\RemoteCodeHub\\Ayllu\\.github\\workflows\\link-feature-to-parent.yml||{8B382828-6202-11D1-8870-0000F87579D2}",
+ "RelativeMoniker": "D:0:0:{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}|workflows{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}|solutionrelative:.github\\workflows\\link-feature-to-parent.yml||{8B382828-6202-11D1-8870-0000F87579D2}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\RemoteCodeHub\\Ayllu\\src\\Aullu\\Components\\Pages\\Home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}",
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:src\\Aullu\\Components\\Pages\\Home.razor||{40D31677-CBC0-4297-A9EF-89D907823A98}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": -1,
+ "Children": [
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{cf577b8c-4134-11d2-83e5-00c04f9902c1}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{f2e84780-2af1-11d1-a7fa-00a0c9110051}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:1:0:{90243340-bd7a-11d0-93ef-00a0c90f2734}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{4a18f9d0-b838-11d0-93eb-00a0c90f2734}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{0504ff91-9d61-11d0-a794-00a0c9110051}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{797f5b3d-853a-4854-a9f2-c488bac2661b}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:136:0:{75188d03-9892-4ae2-abf1-207126247ce5}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:137:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:138:0:{75188d03-9892-4ae2-abf1-207126247ce5}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:368611929:0:{83107a3e-496a-485e-b455-16ddb978e55e}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:1155921687:0:{83107a3e-496a-485e-b455-16ddb978e55e}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:1:0:{e8b06f52-6d01-11d2-aa7d-00c04f990343}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:2:0:{e8b06f52-6d01-11d2-aa7d-00c04f990343}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:2:0:{57d563b6-44a5-47df-85be-f4199ad6b651}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:12:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:254354193:0:{71f361cc-493f-47c0-923f-f2570b6f8618}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:36:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:11:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}"
+ }
+ ]
+ },
+ {
+ "DockedWidth": 379,
+ "SelectedChildIndex": 8,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "Ayllu.Github.Client",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Github.Client\\Ayllu.Github.Client.csproj",
+ "RelativeDocumentMoniker": "src\\Ayllu.Github.Client\\Ayllu.Github.Client.csproj",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Github.Client\\Ayllu.Github.Client.csproj",
+ "RelativeToolTip": "src\\Ayllu.Github.Client\\Ayllu.Github.Client.csproj",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+ "WhenOpened": "2025-08-19T12:04:23.813Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "Ayllu.Web",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Ayllu.Web.csproj",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\Ayllu.Web.csproj",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Ayllu.Web.csproj",
+ "RelativeToolTip": "src\\Ayllu.Web\\Ayllu.Web.csproj",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+ "WhenOpened": "2025-08-19T10:39:59.365Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 5,
+ "Title": "App.razor",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\App.razor",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\App.razor",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\App.razor",
+ "RelativeToolTip": "src\\Ayllu.Web\\App.razor",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAPAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
+ "WhenOpened": "2025-08-19T10:01:04.076Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "Program.cs",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Program.cs",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\Program.cs",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Program.cs",
+ "RelativeToolTip": "src\\Ayllu.Web\\Program.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-08-19T09:55:42.958Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:1:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "Ayllu.Web",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Ayllu.Web.csproj",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\Ayllu.Web.csproj",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Ayllu.Web.csproj",
+ "RelativeToolTip": "src\\Ayllu.Web\\Ayllu.Web.csproj",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAACIAAAAPAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+ "WhenOpened": "2025-08-19T09:14:55.636Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "build.yaml",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\.github\\workflows\\build.yaml",
+ "RelativeDocumentMoniker": ".github\\workflows\\build.yaml",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\.github\\workflows\\build.yaml",
+ "RelativeToolTip": ".github\\workflows\\build.yaml",
+ "ViewState": "AgIAABsAAAAAAAAAAAAAADUAAABKAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003775|",
+ "WhenOpened": "2025-08-19T02:29:40.139Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 6,
+ "Title": "App.razor.cs",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\App.razor.cs",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\App.razor.cs",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\App.razor.cs",
+ "RelativeToolTip": "src\\Ayllu.Web\\App.razor.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-08-19T10:00:45.453Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 7,
+ "Title": "MainLayout.razor",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Components\\Layout\\MainLayout.razor",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\Components\\Layout\\MainLayout.razor",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Components\\Layout\\MainLayout.razor",
+ "RelativeToolTip": "src\\Ayllu.Web\\Components\\Layout\\MainLayout.razor",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
+ "WhenOpened": "2025-08-19T09:58:03.386Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 9,
+ "Title": "Weather.razor",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Components\\Pages\\Weather.razor",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\Components\\Pages\\Weather.razor",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Components\\Pages\\Weather.razor",
+ "RelativeToolTip": "src\\Ayllu.Web\\Components\\Pages\\Weather.razor",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
+ "WhenOpened": "2025-08-19T09:57:20.634Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 10,
+ "Title": "Home.razor",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Components\\Pages\\Home.razor",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\Components\\Pages\\Home.razor",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Components\\Pages\\Home.razor",
+ "RelativeToolTip": "src\\Ayllu.Web\\Components\\Pages\\Home.razor",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
+ "WhenOpened": "2025-08-19T09:57:18.199Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 11,
+ "Title": "Counter.razor",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Components\\Pages\\Counter.razor",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\Components\\Pages\\Counter.razor",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\Components\\Pages\\Counter.razor",
+ "RelativeToolTip": "src\\Ayllu.Web\\Components\\Pages\\Counter.razor",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
+ "WhenOpened": "2025-08-19T09:57:04.77Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 12,
+ "Title": "index.html",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\wwwroot\\index.html",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\wwwroot\\index.html",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\wwwroot\\index.html",
+ "RelativeToolTip": "src\\Ayllu.Web\\wwwroot\\index.html",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAACEAAABDAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001512|",
+ "WhenOpened": "2025-08-19T09:45:08.633Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 8,
+ "Title": "_Imports.razor",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\_Imports.razor",
+ "RelativeDocumentMoniker": "src\\Ayllu.Web\\_Imports.razor",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Ayllu.Web\\_Imports.razor",
+ "RelativeToolTip": "src\\Ayllu.Web\\_Imports.razor",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAiAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
+ "WhenOpened": "2025-08-19T09:16:34.47Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{a80febb4-e7e0-4147-b476-21aaf2453969}"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 13,
+ "Title": "link-feature-to-parent.yml",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\.github\\workflows\\link-feature-to-parent.yml",
+ "RelativeDocumentMoniker": ".github\\workflows\\link-feature-to-parent.yml",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\.github\\workflows\\link-feature-to-parent.yml",
+ "RelativeToolTip": ".github\\workflows\\link-feature-to-parent.yml",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003775|",
+ "WhenOpened": "2025-08-19T09:12:14.112Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:40:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{e1b7d1f8-9b3c-49b1-8f4f-bfc63a88835d}"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 14,
+ "Title": "Home.razor",
+ "DocumentMoniker": "D:\\RemoteCodeHub\\Ayllu\\src\\Aullu\\Components\\Pages\\Home.razor",
+ "RelativeDocumentMoniker": "src\\Aullu\\Components\\Pages\\Home.razor",
+ "ToolTip": "D:\\RemoteCodeHub\\Ayllu\\src\\Aullu\\Components\\Pages\\Home.razor",
+ "RelativeToolTip": "src\\Aullu\\Components\\Pages\\Home.razor",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000759|",
+ "WhenOpened": "2025-08-19T02:50:20.859Z"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Ayllu.sln b/Ayllu.sln
new file mode 100644
index 0000000..bb343c2
--- /dev/null
+++ b/Ayllu.sln
@@ -0,0 +1,109 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu.Web", "src\Ayllu.Web\Ayllu.Web.csproj", "{29FF4418-8F0E-4496-9DA7-241D5E3683DE}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{8EC462FD-D22E-90A8-E5CE-7E832BA40C5D}"
+ ProjectSection(SolutionItems) = preProject
+ scripts\github-client-generator.cmd = scripts\github-client-generator.cmd
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu", "src\Ayllu\Ayllu.csproj", "{267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{F2EDFE53-22D8-4253-9061-C7A181AD1B3D}"
+ ProjectSection(SolutionItems) = preProject
+ .github\workflows\build.yaml = .github\workflows\build.yaml
+ .github\workflows\link-feature-to-parent.yml = .github\workflows\link-feature-to-parent.yml
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ISSUE_TEMPLATE", "ISSUE_TEMPLATE", "{9DD0D30B-2278-4B30-9EB3-E06ACB4140E5}"
+ ProjectSection(SolutionItems) = preProject
+ .github\ISSUE_TEMPLATE\feature.yml = .github\ISSUE_TEMPLATE\feature.yml
+ .github\ISSUE_TEMPLATE\featureset.yml = .github\ISSUE_TEMPLATE\featureset.yml
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu.Github.Client", "src\Ayllu.Github.Client\Ayllu.Github.Client.csproj", "{54ACB41B-134C-4C67-89C3-5692359CB228}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".config", ".config", "{10A5D6FF-A764-4702-B76A-30DAC09EB48E}"
+ ProjectSection(SolutionItems) = preProject
+ .config\dotnet-tools.json = .config\dotnet-tools.json
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{380A7511-A354-6D7A-0CC0-8FA1F1BA7B6C}"
+ ProjectSection(SolutionItems) = preProject
+ .gitignore = .gitignore
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|x64.Build.0 = Debug|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|x86.Build.0 = Debug|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|x64.ActiveCfg = Release|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|x64.Build.0 = Release|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|x86.ActiveCfg = Release|Any CPU
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|x86.Build.0 = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|x64.Build.0 = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|x64.Deploy.0 = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|x86.Build.0 = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Debug|x86.Deploy.0 = Debug|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|x64.ActiveCfg = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|x64.Build.0 = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|x64.Deploy.0 = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|x86.ActiveCfg = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|x86.Build.0 = Release|Any CPU
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC}.Release|x86.Deploy.0 = Release|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Debug|x64.Build.0 = Debug|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Debug|x86.Build.0 = Debug|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Release|Any CPU.Build.0 = Release|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Release|x64.ActiveCfg = Release|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Release|x64.Build.0 = Release|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Release|x86.ActiveCfg = Release|Any CPU
+ {54ACB41B-134C-4C67-89C3-5692359CB228}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {29FF4418-8F0E-4496-9DA7-241D5E3683DE} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {267EDB2A-5437-4EBF-94D9-AED7EA0EB2BC} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ {F2EDFE53-22D8-4253-9061-C7A181AD1B3D} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {9DD0D30B-2278-4B30-9EB3-E06ACB4140E5} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {54ACB41B-134C-4C67-89C3-5692359CB228} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {3BD3208E-3881-4936-BA85-8CD446F8E643}
+ EndGlobalSection
+EndGlobal
diff --git a/Ayluu.sln b/Ayluu.sln
deleted file mode 100644
index a277fbe..0000000
--- a/Ayluu.sln
+++ /dev/null
@@ -1,128 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu.Api", "src\Ayllu.Api\Ayllu.Api.csproj", "{776E4AEA-6B98-4917-824D-B95B40F070DB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu.Web", "src\Ayllu.Web\Ayllu.Web.csproj", "{29FF4418-8F0E-4496-9DA7-241D5E3683DE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu.Application", "src\Ayllu.Application\Ayllu.Application.csproj", "{40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu.Domain", "src\Ayllu.Domain\Ayllu.Domain.csproj", "{D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu.Composition", "src\Ayllu.Composition\Ayllu.Composition.csproj", "{EE396B31-5A18-40D8-92F6-3DB32987CA72}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ayllu.Infrastructure", "src\Ayllu.Infrastructure\Ayllu.Infrastructure.csproj", "{4C1BC75E-9D27-4474-B600-4A44F27B3F08}"
-EndProject
-Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{81DDED9D-158B-E303-5F62-77A2896D2A5A}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Debug|x64.ActiveCfg = Debug|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Debug|x64.Build.0 = Debug|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Debug|x86.ActiveCfg = Debug|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Debug|x86.Build.0 = Debug|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Release|Any CPU.Build.0 = Release|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Release|x64.ActiveCfg = Release|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Release|x64.Build.0 = Release|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Release|x86.ActiveCfg = Release|Any CPU
- {776E4AEA-6B98-4917-824D-B95B40F070DB}.Release|x86.Build.0 = Release|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|x64.ActiveCfg = Debug|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|x64.Build.0 = Debug|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|x86.ActiveCfg = Debug|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Debug|x86.Build.0 = Debug|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|Any CPU.Build.0 = Release|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|x64.ActiveCfg = Release|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|x64.Build.0 = Release|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|x86.ActiveCfg = Release|Any CPU
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE}.Release|x86.Build.0 = Release|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Debug|x64.ActiveCfg = Debug|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Debug|x64.Build.0 = Debug|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Debug|x86.ActiveCfg = Debug|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Debug|x86.Build.0 = Debug|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Release|Any CPU.Build.0 = Release|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Release|x64.ActiveCfg = Release|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Release|x64.Build.0 = Release|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Release|x86.ActiveCfg = Release|Any CPU
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A}.Release|x86.Build.0 = Release|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Debug|x64.Build.0 = Debug|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Debug|x86.Build.0 = Debug|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Release|Any CPU.Build.0 = Release|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Release|x64.ActiveCfg = Release|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Release|x64.Build.0 = Release|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Release|x86.ActiveCfg = Release|Any CPU
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C}.Release|x86.Build.0 = Release|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Debug|x64.ActiveCfg = Debug|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Debug|x64.Build.0 = Debug|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Debug|x86.ActiveCfg = Debug|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Debug|x86.Build.0 = Debug|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Release|Any CPU.Build.0 = Release|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Release|x64.ActiveCfg = Release|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Release|x64.Build.0 = Release|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Release|x86.ActiveCfg = Release|Any CPU
- {EE396B31-5A18-40D8-92F6-3DB32987CA72}.Release|x86.Build.0 = Release|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Debug|x64.ActiveCfg = Debug|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Debug|x64.Build.0 = Debug|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Debug|x86.ActiveCfg = Debug|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Debug|x86.Build.0 = Debug|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Release|Any CPU.Build.0 = Release|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Release|x64.ActiveCfg = Release|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Release|x64.Build.0 = Release|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Release|x86.ActiveCfg = Release|Any CPU
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08}.Release|x86.Build.0 = Release|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Debug|x64.ActiveCfg = Debug|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Debug|x64.Build.0 = Debug|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Debug|x86.ActiveCfg = Debug|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Debug|x86.Build.0 = Debug|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Release|Any CPU.Build.0 = Release|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Release|x64.ActiveCfg = Release|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Release|x64.Build.0 = Release|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Release|x86.ActiveCfg = Release|Any CPU
- {81DDED9D-158B-E303-5F62-77A2896D2A5A}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {776E4AEA-6B98-4917-824D-B95B40F070DB} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
- {29FF4418-8F0E-4496-9DA7-241D5E3683DE} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
- {40F8F3D6-EE5B-4FA8-AB4D-3682D42BBF6A} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
- {D7A75ADF-A9E1-41F0-9C06-A95473EAAE8C} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
- {EE396B31-5A18-40D8-92F6-3DB32987CA72} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
- {4C1BC75E-9D27-4474-B600-4A44F27B3F08} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
- EndGlobalSection
-EndGlobal
diff --git a/docker-compose.dcproj b/docker-compose.dcproj
deleted file mode 100644
index b828822..0000000
--- a/docker-compose.dcproj
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
- 2.1
- Linux
- False
- 81dded9d-158b-e303-5f62-77a2896d2a5a
-
-
-
-
- docker-compose.yml
-
-
-
-
-
\ No newline at end of file
diff --git a/docker-compose.override.yml b/docker-compose.override.yml
deleted file mode 100644
index 4b6a84d..0000000
--- a/docker-compose.override.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-services:
- ayllu.api:
- environment:
- - ASPNETCORE_ENVIRONMENT=Development
- - ASPNETCORE_HTTP_PORTS=80
- - ASPNETCORE_HTTPS_PORTS=81
- - ConnectionStrings__DefaultConnection=Server=db;Database=ayllu;User Id=sa;Password=${DBPASSWORD};TrustServerCertificate=True;
- - JwtSettings__SecretKey=${JWT_SECRET_KEY}
- - JwtSettings__Issuer="AylluIssuer"
- - JwtSettings__Audience="AylluAudience"
- ports:
- - "800:80"
- - "801:81"
- volumes:
- - ${APPDATA}/Microsoft/UserSecrets:/home/app/.microsoft/usersecrets:ro
- - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
- - ${APPDATA}/ASP.NET/Https:/home/app/.aspnet/https:ro
- - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 100644
index 2adb397..0000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-services:
- ayllu.api:
- image: ${DOCKER_REGISTRY-}aylluapi
- container_name: ayllu_api
- depends_on:
- - db
- build:
- context: .
- dockerfile: src/Ayllu.Api/Dockerfile
- networks:
- - ayllu-network
-
- db:
- image: mcr.microsoft.com/mssql/server:2022-latest
- container_name: ayllu_db
- environment:
- SA_PASSWORD: ${DBPASSWORD}
- ACCEPT_EULA: "Y"
- ports:
- - "1433:1433"
- networks:
- - ayllu-network
-
-networks:
- ayllu-network:
- driver: bridge
\ No newline at end of file
diff --git a/launchSettings.json b/launchSettings.json
deleted file mode 100644
index 610cf02..0000000
--- a/launchSettings.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "profiles": {
- "Docker Compose": {
- "commandName": "DockerCompose",
- "commandVersion": "1.0",
- "serviceActions": {
- "ayllu.api": "StartDebugging"
- }
- }
- }
-}
\ No newline at end of file
diff --git a/scripts/github-client-generator.cmd b/scripts/github-client-generator.cmd
new file mode 100644
index 0000000..139b625
--- /dev/null
+++ b/scripts/github-client-generator.cmd
@@ -0,0 +1,16 @@
+@echo off
+SETLOCAL ENABLEDELAYEDEXPANSION
+
+REM Caminho da solução
+SET ROOT_DIR=%~dp0\..
+SET CLIENT_OUTPUT=%ROOT_DIR%\src\Ayllu.Github.Client
+SET SPEC_URL=https://raw.githubusercontent.com/github/rest-api-description/refs/heads/main/descriptions/api.github.com/api.github.com.json
+
+REM Cria diretórios caso não existam
+IF NOT EXIST "%CLIENT_OUTPUT%" mkdir "%CLIENT_OUTPUT%"
+
+echo Gerando cliente C# do GitHub API...
+
+docker run --rm -v %CLIENT_OUTPUT%\Github\Client:/app/output mcr.microsoft.com/openapi/kiota generate --language csharp --output /app/output --openapi %SPEC_URL% --class-name AylluGithubClient --namespace-name Ayllu.Github.Client
+
+echo Cliente gerado em %CLIENT_OUTPUT%
diff --git a/src/Ayllu.Api/Ayllu.Api.csproj b/src/Ayllu.Api/Ayllu.Api.csproj
deleted file mode 100644
index f2cc241..0000000
--- a/src/Ayllu.Api/Ayllu.Api.csproj
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- net9.0
- enable
- enable
- a123ea63-1376-4138-97c9-6eb1fb64140e
- Linux
- ..\..
- ..\..\docker-compose.dcproj
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Ayllu.Api/Ayllu.Api.csproj.user b/src/Ayllu.Api/Ayllu.Api.csproj.user
deleted file mode 100644
index dd2d54c..0000000
--- a/src/Ayllu.Api/Ayllu.Api.csproj.user
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
- Container (Dockerfile)
-
-
\ No newline at end of file
diff --git a/src/Ayllu.Api/Ayllu.Api.http b/src/Ayllu.Api/Ayllu.Api.http
deleted file mode 100644
index 056f806..0000000
--- a/src/Ayllu.Api/Ayllu.Api.http
+++ /dev/null
@@ -1,6 +0,0 @@
-@Ayllu.Api_HostAddress = http://localhost:5268
-
-GET {{Ayllu.Api_HostAddress}}/weatherforecast/
-Accept: application/json
-
-###
diff --git a/src/Ayllu.Api/Controllers/AuthController.cs b/src/Ayllu.Api/Controllers/AuthController.cs
deleted file mode 100644
index c3f27cc..0000000
--- a/src/Ayllu.Api/Controllers/AuthController.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using Ayllu.Application.CQRS.Commands;
-using MediatR;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Identity.Data;
-using Microsoft.AspNetCore.Mvc;
-
-namespace Ayllu.Api.Controllers
-{
- [ApiController]
- [Route("api/[controller]")]
- public class AuthController : ControllerBase
- {
- private readonly IMediator _mediator;
-
- public AuthController(IMediator mediator)
- {
- _mediator = mediator;
- }
-
- ///
- /// Registra um novo usuário e realiza login automático
- ///
- [HttpPost("register")]
- public async Task Register([FromBody] RegisterCommand request)
- {
- var response = await _mediator.Send(request);
- return response.StatusCode switch
- {
- 201 => CreatedAtAction(nameof(Login), new { email = request.Email }, response),
- 400 => BadRequest(response),
- 409 => Conflict(response),
- 422 => UnprocessableEntity(response),
- _ => StatusCode(response.StatusCode, response)
- };
- }
-
- ///
- /// Login do usuário
- ///
- [HttpPost("login")]
- public async Task Login([FromHeader] string token)
- {
- var request = new LoginCommand(token);
- var response = await _mediator.Send(request);
- return response.StatusCode switch
- {
- 200 => Ok(response),
- 400 => BadRequest(response),
- 401 => Unauthorized(response),
- 404 => NotFound(response),
- _ => StatusCode(response.StatusCode, response)
- };
- }
-
- /////
- ///// Logout do usuário (invalida JWT)
- /////
- //[Authorize]
- //[HttpPost("logout")]
- //public async Task Logout()
- //{
- // // Obtém o JWT do header
- // var jwt = Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
-
- // var command = new LogoutCommand(jwt);
-
- // var response = await _mediator.Send(command);
-
- // if (!response.Success)
- // return BadRequest(response);
-
- // return Ok(response);
- //}
- }
-}
diff --git a/src/Ayllu.Api/Dockerfile b/src/Ayllu.Api/Dockerfile
deleted file mode 100644
index 19cd448..0000000
--- a/src/Ayllu.Api/Dockerfile
+++ /dev/null
@@ -1,34 +0,0 @@
-# Acesse https://aka.ms/customizecontainer para saber como personalizar seu contêiner de depuração e como o Visual Studio usa este Dockerfile para criar suas imagens para uma depuração mais rápida.
-
-# Esta fase é usada durante a execução no VS no modo rápido (Padrão para a configuração de Depuração)
-FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
-USER $APP_UID
-WORKDIR /app
-EXPOSE 80
-EXPOSE 81
-
-
-# Esta fase é usada para compilar o projeto de serviço
-FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
-ARG BUILD_CONFIGURATION=Release
-WORKDIR /src
-COPY ["src/Ayllu.Api/Ayllu.Api.csproj", "src/Ayllu.Api/"]
-COPY ["src/Ayllu.Application/Ayllu.Application.csproj", "src/Ayllu.Application/"]
-COPY ["src/Ayllu.Domain/Ayllu.Domain.csproj", "src/Ayllu.Domain/"]
-COPY ["src/Ayllu.Composition/Ayllu.Composition.csproj", "src/Ayllu.Composition/"]
-COPY ["src/Ayllu.Infrastructure/Ayllu.Infrastructure.csproj", "src/Ayllu.Infrastructure/"]
-RUN dotnet restore "./src/Ayllu.Api/Ayllu.Api.csproj"
-COPY . .
-WORKDIR "/src/src/Ayllu.Api"
-RUN dotnet build "./Ayllu.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build
-
-# Esta fase é usada para publicar o projeto de serviço a ser copiado para a fase final
-FROM build AS publish
-ARG BUILD_CONFIGURATION=Release
-RUN dotnet publish "./Ayllu.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
-
-# Esta fase é usada na produção ou quando executada no VS no modo normal (padrão quando não está usando a configuração de Depuração)
-FROM base AS final
-WORKDIR /app
-COPY --from=publish /app/publish .
-ENTRYPOINT ["dotnet", "Ayllu.Api.dll"]
\ No newline at end of file
diff --git a/src/Ayllu.Api/Program.cs b/src/Ayllu.Api/Program.cs
deleted file mode 100644
index 9c3eadb..0000000
--- a/src/Ayllu.Api/Program.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-using Ayllu.Composition;
-using Ayllu.Infrastructure.Common.Middlewares;
-using Microsoft.AspNetCore.Authentication.JwtBearer;
-using Microsoft.IdentityModel.Tokens;
-using System.Text;
-var builder = WebApplication.CreateBuilder(args);
-
-// ---------------------------
-// 1. Configura Ayllu (Application + Infrastructure)
-// ---------------------------
-builder.Services.AddAyllu(builder.Configuration);
-
-// ---------------------------
-// 2. CORS
-// ---------------------------
-builder.Services.AddCors(options =>
-{
- options.AddDefaultPolicy(policy =>
- {
- policy.AllowAnyOrigin()
- .AllowAnyHeader()
- .AllowAnyMethod();
- });
-});
-
-// ---------------------------
-// 3. Controllers
-// ---------------------------
-builder.Services.AddControllers();
-
-// ---------------------------
-// 4. Swagger / OpenAPI
-// ---------------------------
-builder.Services.AddEndpointsApiExplorer();
-builder.Services.AddOpenApi();
-
-// ---------------------------
-// 5. JWT Authentication
-// ---------------------------
-var jwtSettings = builder.Configuration.GetSection("JwtSettings");
-var secretKey = jwtSettings.GetValue("SecretKey");
-
-builder.Services.AddAuthentication(options =>
-{
- options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
- options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
-})
-.AddJwtBearer(options =>
-{
- options.TokenValidationParameters = new TokenValidationParameters
- {
- ValidateIssuer = true,
- ValidateAudience = true,
- ValidateLifetime = true,
- ValidateIssuerSigningKey = true,
- ValidIssuer = jwtSettings.GetValue("Issuer"),
- ValidAudience = jwtSettings.GetValue("Audience"),
- IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey!)),
- ClockSkew = TimeSpan.Zero
- };
-});
-var app = builder.Build();
-
-// ---------------------------
-// Aplica migrations antes do pipeline
-// ---------------------------
-app.Services.ApplyMigrationsSafely();
-
-if (app.Environment.IsDevelopment())
-{
- app.MapOpenApi();
-}
-
-app.UseHttpsRedirection();
-
-app.UseCors();
-
-app.UseAuthentication();
-
-// Middleware customizado para validar JWT invalidados
-app.UseMiddleware();
-
-app.UseAuthorization();
-
-app.MapControllers();
-
-await app.RunAsync();
diff --git a/src/Ayllu.Api/Properties/launchSettings.json b/src/Ayllu.Api/Properties/launchSettings.json
deleted file mode 100644
index ede1ea0..0000000
--- a/src/Ayllu.Api/Properties/launchSettings.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "profiles": {
- "http": {
- "commandName": "Project",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "dotnetRunMessages": true,
- "applicationUrl": "http://localhost:5268"
- },
- "https": {
- "commandName": "Project",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "dotnetRunMessages": true,
- "applicationUrl": "https://localhost:7140;http://localhost:5268"
- },
- "Container (Dockerfile)": {
- "commandName": "Docker",
- "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
- "environmentVariables": {
- "ASPNETCORE_HTTPS_PORTS": "8081",
- "ASPNETCORE_HTTP_PORTS": "8080"
- },
- "publishAllPorts": true,
- "useSSL": true
- }
- },
- "$schema": "https://json.schemastore.org/launchsettings.json"
-}
\ No newline at end of file
diff --git a/src/Ayllu.Api/appsettings.Development.json b/src/Ayllu.Api/appsettings.Development.json
deleted file mode 100644
index 0c208ae..0000000
--- a/src/Ayllu.Api/appsettings.Development.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- }
-}
diff --git a/src/Ayllu.Api/appsettings.json b/src/Ayllu.Api/appsettings.json
deleted file mode 100644
index 5d72985..0000000
--- a/src/Ayllu.Api/appsettings.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- },
- "AllowedHosts": "*",
- "JwtSettings": {
- "SecretKey": "",
- "Issuer": "",
- "Audience": "",
- "ExpiresInMinutes": "180"
- }
-}
diff --git a/src/Ayllu.Application/Ayllu.Application.csproj b/src/Ayllu.Application/Ayllu.Application.csproj
deleted file mode 100644
index 289ebca..0000000
--- a/src/Ayllu.Application/Ayllu.Application.csproj
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- net9.0
- enable
- enable
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Ayllu.Application/CQRS/Commands/LoginCommand.cs b/src/Ayllu.Application/CQRS/Commands/LoginCommand.cs
deleted file mode 100644
index b2c5a25..0000000
--- a/src/Ayllu.Application/CQRS/Commands/LoginCommand.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-using Ayllu.Application.DTO.Responses;
-using MediatR;
-
-namespace Ayllu.Application.CQRS.Commands;
-
-public record LoginCommand (string Token) : IRequest>;
diff --git a/src/Ayllu.Application/CQRS/Commands/RegisterCommand.cs b/src/Ayllu.Application/CQRS/Commands/RegisterCommand.cs
deleted file mode 100644
index b3fd4f5..0000000
--- a/src/Ayllu.Application/CQRS/Commands/RegisterCommand.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Ayllu.Application.DTO.Responses;
-using MediatR;
-
-namespace Ayllu.Application.CQRS.Commands;
-
-public record RegisterCommand(string UserName,
- string Email,
- string Password,
- string Name,
- string LastName,
- string PhoneNumber) : IRequest> ;
diff --git a/src/Ayllu.Application/CQRS/Handlers/LoginCommandHandler.cs b/src/Ayllu.Application/CQRS/Handlers/LoginCommandHandler.cs
deleted file mode 100644
index 0b32ab4..0000000
--- a/src/Ayllu.Application/CQRS/Handlers/LoginCommandHandler.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using Ayllu.Application.Common.Interfaces;
-using Ayllu.Application.CQRS.Commands;
-using Ayllu.Application.DTO.Responses;
-using MediatR;
-using Microsoft.AspNetCore.Http;
-using Microsoft.Extensions.Logging;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Ayllu.Application.CQRS.Handlers
-{
- public class LoginCommandHandler(IIdentityService identity, ILogger logger) : IRequestHandler>
- {
- public async Task> Handle(LoginCommand request, CancellationToken cancellationToken)
- {
- try
- {
- var token = request.Token;
- // Remove o prefixo "Basic " se estiver presente
- if (token.StartsWith("Basic ", StringComparison.OrdinalIgnoreCase))
- {
- token = request.Token["Basic ".Length..].Trim();
- }
-
- // Decodifica de Base64
- var decodedBytes = Convert.FromBase64String(token);
- var decodedString = Encoding.UTF8.GetString(decodedBytes);
-
- // Divide em usuário e senha
- var parts = decodedString.Split(':', 2);
- if (parts.Length != 2)
- {
- throw new FormatException("Token inválido. Esperado formato 'username:password'.");
- }
-
-
- var (Success, Jwt, Expiration, RefreshToken, Email, PhoneNumber, UserName, Roles, Errors) = await identity.LoginAsync(parts[0], parts[1]);
- return new Response()
- {
- Data = new LoginResponse
- {
- Jwt = Jwt,
- Expiration = Expiration,
- RefreshToken = RefreshToken,
- Email = Email!,
- PhoneNumber = PhoneNumber!,
- UserName = UserName!,
- Roles = Roles
-
- },
- Success = Success,
- StatusCode = Success ? StatusCodes.Status200OK : StatusCodes.Status401Unauthorized,
- Message = Success ? "Login bem-sucedido" : string.Join(", ", Errors!),
- };
- }
- catch (Exception e)
- {
- logger.LogError(e, "Erro ao processar LoginCommand: {Message}", e.Message);
- throw new InvalidOperationException("Erro ao processar LoginCommand", e);
- }
- }
- }
-}
diff --git a/src/Ayllu.Application/CQRS/Handlers/RegisterCommandHandler.cs b/src/Ayllu.Application/CQRS/Handlers/RegisterCommandHandler.cs
deleted file mode 100644
index ece0b80..0000000
--- a/src/Ayllu.Application/CQRS/Handlers/RegisterCommandHandler.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using Ayllu.Application.Common.Interfaces;
-using Ayllu.Application.CQRS.Commands;
-using Ayllu.Application.CQRS.Notifications;
-using Ayllu.Application.DTO.Responses;
-using Ayllu.Application.Services;
-using MediatR;
-using Microsoft.AspNetCore.Http;
-using System.Text;
-
-namespace Ayllu.Application.CQRS.Handlers;
-
-public class RegisterCommandHandler(IIdentityService identityService, IMediator mediator) : IRequestHandler>
-{
- public async Task> Handle(RegisterCommand request, CancellationToken cancellationToken)
- {
- try
- {
- var (Success, _, statusCode, Errors) = await identityService.RegisterAsync(request.UserName,
- request.Email,
- request.Password,
- request.Name,
- request.LastName,
- request.PhoneNumber
- );
-
- if (!Success)
- return new Response() { Data = null!, Message = string.Join(", ", Errors!), StatusCode = statusCode, Success = false };
-
- // 2. Prepara o TaskCompletionSource para capturar o retorno do login
- TaskCompletionSource> tcs = new();
- var credentials = $"{request.Email}:{request.Password}";
- var bytes = Encoding.UTF8.GetBytes(credentials);
- var base64 = Convert.ToBase64String(bytes);
-
-
- // 3. Publica a notification
- await mediator.Publish(new UserRegisteredNotification(
- $"Basic {base64}",
- tcs
- ), cancellationToken);
-
- // 4. Aguarda o resultado do handler de login
- var loginResponse = await tcs.Task;
- return loginResponse;
- }
- catch (Exception e)
- {
-
- throw;
- }
- }
-}
diff --git a/src/Ayllu.Application/CQRS/Handlers/UserRegisteredNotificationHandler.cs b/src/Ayllu.Application/CQRS/Handlers/UserRegisteredNotificationHandler.cs
deleted file mode 100644
index 3927a3d..0000000
--- a/src/Ayllu.Application/CQRS/Handlers/UserRegisteredNotificationHandler.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using Ayllu.Application.Common.Interfaces;
-using Ayllu.Application.CQRS.Notifications;
-using Ayllu.Application.DTO.Responses;
-using MediatR;
-using Microsoft.AspNetCore.Http;
-using System.Text;
-
-namespace Ayllu.Application.CQRS.Handlers;
-
-public class UserRegisteredNotificationHandler(IIdentityService identityService) : INotificationHandler
-{
- public async Task Handle(UserRegisteredNotification notification, CancellationToken cancellationToken)
- {
- var token = notification.Token;
- // Remove o prefixo "Basic " se estiver presente
- if (token.StartsWith("Basic ", StringComparison.OrdinalIgnoreCase))
- {
- token = notification.Token["Basic ".Length..].Trim();
- }
-
- // Decodifica de Base64
- var decodedBytes = Convert.FromBase64String(token);
- var decodedString = Encoding.UTF8.GetString(decodedBytes);
-
- // Divide em usuário e senha
- var parts = decodedString.Split(':', 2);
- if (parts.Length != 2)
- {
- throw new FormatException("Token inválido. Esperado formato 'username:password'.");
- }
-
- // Executa o login automático
- var (Success, Jwt, Expiration, RefreshToken, Email, PhoneNumber, UserName, Roles, Errors) = await identityService.LoginAsync(parts[0], parts[1]);
-
- // Seta o resultado no TaskCompletionSource
- notification.CompletionSource.SetResult(new Response()
- {
- Data = new LoginResponse
- {
- Jwt = Jwt,
- Expiration = Expiration,
- RefreshToken = RefreshToken,
- Email = Email!,
- PhoneNumber = PhoneNumber!,
- UserName = UserName!,
- Roles = Roles
-
- },
- Success = Success,
- StatusCode = Success ? StatusCodes.Status200OK : StatusCodes.Status401Unauthorized,
- Message = Success ? "Login successful" : string.Join(", ", Errors!)
- });
- }
-}
\ No newline at end of file
diff --git a/src/Ayllu.Application/CQRS/Notifications/UserRegisteredNotification.cs b/src/Ayllu.Application/CQRS/Notifications/UserRegisteredNotification.cs
deleted file mode 100644
index e4ff7e3..0000000
--- a/src/Ayllu.Application/CQRS/Notifications/UserRegisteredNotification.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using Ayllu.Application.DTO.Responses;
-using MediatR;
-
-namespace Ayllu.Application.CQRS.Notifications
-{
- public record UserRegisteredNotification (string Token, TaskCompletionSource> CompletionSource) : INotification;
-}
diff --git a/src/Ayllu.Application/Common/Interfaces/IIdentityService.cs b/src/Ayllu.Application/Common/Interfaces/IIdentityService.cs
deleted file mode 100644
index 706a325..0000000
--- a/src/Ayllu.Application/Common/Interfaces/IIdentityService.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Ayllu.Application.Common.Interfaces;
-
-public interface IIdentityService
-{
- Task<(bool Success, string? UserId, int StatusCode, IEnumerable? Errors)> RegisterAsync(string username, string email, string password, string name, string lastName, string phoneNumber);
- Task<(bool Success, string Jwt, DateTime Expiration, string RefreshToken, string? Email, string? PhoneNumber, string? UserName, IEnumerable Roles, IEnumerable? Errors)> LoginAsync(string key, string password);
- Task LogoutAsync(string jwt);
- Task<(bool Success, string? Token, IEnumerable? Errors)> ForgotPasswordAsync(string email);
- Task<(bool Success, IEnumerable? Errors)> ResetPasswordAsync(string email, string token, string newPassword);
-}
\ No newline at end of file
diff --git a/src/Ayllu.Application/Common/Interfaces/IOrganizationRolesRepository.cs b/src/Ayllu.Application/Common/Interfaces/IOrganizationRolesRepository.cs
deleted file mode 100644
index 40d59be..0000000
--- a/src/Ayllu.Application/Common/Interfaces/IOrganizationRolesRepository.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Ayllu.Application.Common.Interfaces;
-
-public interface IOrganizationRolesRepository
-{
- Task> GetUserOrganizationRolesAsync(string userId);
- Task IsUserInRoleInOrganizationAsync(string userId, string organizationId, string roleName);
-}
diff --git a/src/Ayllu.Application/Common/Interfaces/ITokenGenerator.cs b/src/Ayllu.Application/Common/Interfaces/ITokenGenerator.cs
deleted file mode 100644
index af52e09..0000000
--- a/src/Ayllu.Application/Common/Interfaces/ITokenGenerator.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace Ayllu.Application.Common.Interfaces;
-
-public interface ITokenGenerator
-{
- bool IsTokenInvalidated(string jwt);
- void Invalidate(string jwt);
- (string jwt, DateTime expirationDate, string refreshToken) GenerateToken(
- string username,
- string email,
- string organization,
- string phoneNumber,
- IList roles,
- IList organizationRoles);
-}
diff --git a/src/Ayllu.Application/DTO/Responses/LoginResponse.cs b/src/Ayllu.Application/DTO/Responses/LoginResponse.cs
deleted file mode 100644
index 6ad7d7d..0000000
--- a/src/Ayllu.Application/DTO/Responses/LoginResponse.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace Ayllu.Application.DTO.Responses;
-
-public class LoginResponse
-{
- public string Jwt { get; set; } = string.Empty;
- public DateTime Expiration { get; set; }
- public string RefreshToken { get; set; } = string.Empty;
- public string UserId { get; set; } = string.Empty;
- public string UserName { get; set; } = string.Empty;
- public string Email { get; set; } = string.Empty;
- public string PhoneNumber { get; set; } = string.Empty;
- public IEnumerable Roles { get; set; } = [];
-}
diff --git a/src/Ayllu.Application/DTO/Responses/Response.cs b/src/Ayllu.Application/DTO/Responses/Response.cs
deleted file mode 100644
index 7193db0..0000000
--- a/src/Ayllu.Application/DTO/Responses/Response.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Ayllu.Application.DTO.Responses;
-
-public class Response
-{
- public bool Success { get; set; }
- public string Message { get; set; } = string.Empty;
- public int StatusCode { get; set; }
-}
-public class Response : Response
-{
- public T Data { get; set; } = default!;
-}
diff --git a/src/Ayllu.Application/Services/IdentityService.cs b/src/Ayllu.Application/Services/IdentityService.cs
deleted file mode 100644
index be4b76a..0000000
--- a/src/Ayllu.Application/Services/IdentityService.cs
+++ /dev/null
@@ -1,147 +0,0 @@
-using Ayllu.Application.Common.Interfaces;
-using Ayllu.Domain.Entities;
-using Microsoft.AspNetCore.Identity;
-
-namespace Ayllu.Application.Services;
-
-public class IdentityService(
- UserManager userManager,
- SignInManager signInManager,
- ITokenGenerator tokenGenerator,
- IOrganizationRolesRepository context) : IIdentityService
-{
- public async Task<(bool Success, string? Token, IEnumerable? Errors)> ForgotPasswordAsync(string email)
- {
- try
- {
- var user = await userManager.FindByEmailAsync(email);
- if (user == null)
- return (false, null, new[] { "User not found" });
-
- var token = await userManager.GeneratePasswordResetTokenAsync(user);
-
- // Aqui você enviaria o email via IEmailSender (não implementado ainda)
- // await _emailSender.SendAsync(user.Email, "Password Reset", $"Token: {token}");
-
- return (true, token, null);
- }
- catch (Exception e)
- {
-
- throw;
- }
- }
-
- public async Task<(bool Success, string Jwt, DateTime Expiration, string RefreshToken, string? Email, string? PhoneNumber, string? UserName, IEnumerable Roles, IEnumerable? Errors)> LoginAsync(string key, string password)
- {
- try
- {
- var user = userManager.Users.FirstOrDefault(u => u.UserName == key || u.Email == key || u.PhoneNumber == key);
- if (user == null)
- return (false, string.Empty, DateTime.MinValue, string.Empty, string.Empty, string.Empty, string.Empty, [], new[] { "Invalid credentials" });
-
- var result = await signInManager.CheckPasswordSignInAsync(user, password, false);
- if (!result.Succeeded)
- return (false, string.Empty, DateTime.MinValue, string.Empty, string.Empty, string.Empty, string.Empty, [], new[] { "Invalid credentials" });
-
- var roles = await userManager.GetRolesAsync(user);
-
- // Pegar roles de organização (se houver, simplificado)
- var orgRoles = await context.GetUserOrganizationRolesAsync(user.Id);
-
- var (jwt, expiration, refreshToken) = tokenGenerator.GenerateToken(
- user.UserName!,
- user.Email!,
- orgRoles.Any() ? "MemberOfOrganization" : "Independent",
- user.PhoneNumber ?? string.Empty,
- roles,
- orgRoles
- );
-
- return (true, jwt, expiration, refreshToken, user.Email, user.PhoneNumber, user.UserName, roles, null);
- }
- catch (Exception e)
- {
-
- throw;
- }
- }
-
- public async Task LogoutAsync(string jwt)
- {
- try
- {
-
- tokenGenerator.Invalidate(jwt);
-
- await Task.CompletedTask;
- }
- catch (Exception e)
- {
-
- throw;
- }
- }
-
- public async Task<(bool Success, string? UserId, int StatusCode, IEnumerable? Errors)> RegisterAsync(string username, string email, string password, string name, string lastName, string phoneNumber)
- {
- try
- {
- var user = new AppUser
- {
- UserName = username,
- Email = email,
- Name = name,
- LastName = lastName,
- PhoneNumber = phoneNumber
- };
- var existingUser = await userManager.FindByEmailAsync(email);
-
- if (existingUser is not null)
- return (false, null, 409, new[] { "Email already in use" });
-
- existingUser = await userManager.FindByNameAsync(username);
-
- if (existingUser is not null)
- return (false, null, 409, new[] { "Username already in use" });
-
- existingUser = userManager.Users.Where(x => x.PhoneNumber == phoneNumber).FirstOrDefault();
-
- if (existingUser is not null)
- return (false, null, 409, new[] { "Phone number already in use" });
- var result = await userManager.CreateAsync(user, password);
-
- if (!result.Succeeded)
- return (false, null, 400, result.Errors.Select(e => e.Description));
-
- return (true, user.Id, 202, null);
- }
- catch (Exception e)
- {
-
- throw;
- }
- }
-
- public async Task<(bool Success, IEnumerable? Errors)> ResetPasswordAsync(string email, string token, string newPassword)
- {
- try
- {
- var user = await userManager.FindByEmailAsync(email);
- if (user == null)
- return (false, new[] { "User not found" });
-
- var result = await userManager.ResetPasswordAsync(user, token, newPassword);
-
- if (!result.Succeeded)
- return (false, result.Errors.Select(e => e.Description));
-
- return (true, null);
- }
- catch (Exception e)
- {
-
- throw;
- }
- }
-}
diff --git a/src/Ayllu.Composition/Ayllu.Composition.csproj b/src/Ayllu.Composition/Ayllu.Composition.csproj
deleted file mode 100644
index d9d575f..0000000
--- a/src/Ayllu.Composition/Ayllu.Composition.csproj
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- net9.0
- enable
- enable
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Ayllu.Composition/AylluComposition.cs b/src/Ayllu.Composition/AylluComposition.cs
deleted file mode 100644
index 80c7ef8..0000000
--- a/src/Ayllu.Composition/AylluComposition.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using Ayllu.Application.Common.Interfaces;
-using Ayllu.Application.CQRS.Commands;
-using Ayllu.Application.Services;
-using Ayllu.Domain.Entities;
-using Ayllu.Infrastructure.Data;
-using Ayllu.Infrastructure.Repositories;
-using Ayllu.Infrastructure.Services;
-using Microsoft.AspNetCore.Identity;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Ayllu.Composition
-{
- public static class AylluComposition
- {
- public static IServiceCollection AddAyllu(this IServiceCollection services, IConfiguration configuration)
- {
- // ---------------------------
- // 1. Configuração do DbContext
- // ---------------------------
- services.AddDbContext(options =>
- options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));
-
- // ---------------------------
- // 2. Configuração do Identity
- // ---------------------------
- services.AddIdentity(options =>
- {
- options.Password.RequireDigit = true;
- options.Password.RequireLowercase = true;
- options.Password.RequireUppercase = true;
- options.Password.RequireNonAlphanumeric = false;
- options.Password.RequiredLength = 8;
- options.User.RequireUniqueEmail = true;
- })
- .AddEntityFrameworkStores()
- .AddDefaultTokenProviders();
-
-
- // ---------------------------
- // 3. TokenGenerator
- // ---------------------------
- services.AddScoped();
-
- // ---------------------------
- // 4. Repositories / Interfaces
- // ---------------------------
- services.AddScoped();
-
- // ---------------------------
- // 5. IdentityService (Application)
- // ---------------------------
- services.AddScoped();
-
- // ---------------------------
- // 6. MediatR
- // ---------------------------
- services.AddMediatR(cfg =>
- {
- cfg.RegisterServicesFromAssemblies(
- typeof(RegisterCommand).Assembly // Application
- );
- });
-
- // ---------------------------
- // 7. Configurações adicionais, se houver
- // ---------------------------
- // ex: services.AddScoped();
-
- return services;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Ayllu.Composition/MigrationExtensions.cs b/src/Ayllu.Composition/MigrationExtensions.cs
deleted file mode 100644
index edd31ce..0000000
--- a/src/Ayllu.Composition/MigrationExtensions.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using Ayllu.Infrastructure.Data;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Ayllu.Composition;
-
-public static class MigrationExtensions
-{
- ///
- /// Aplica migrations pendentes e reverte migrations removidas do projeto.
- ///
- public static void ApplyMigrationsSafely(this IServiceProvider serviceProvider)
- {
- using var scope = serviceProvider.CreateScope();
- var context = scope.ServiceProvider.GetRequiredService();
- var migrator = context.Database.GetService();
-
- // 1. Migrations existentes no projeto
- var localMigrations = context.Database.GetMigrations().ToList();
-
- // 2. Migrations aplicadas no banco
- var appliedMigrations = context.Database.GetAppliedMigrations().ToList();
-
- // -------------------------------
- // 3. Reverte migrations removidas
- // -------------------------------
- var removedMigrations = appliedMigrations.Except(localMigrations).Reverse();
- foreach (var migration in removedMigrations)
- {
- Console.WriteLine($"Revertendo migration removida: {migration}");
- migrator.Migrate(GetPreviousMigration(localMigrations, migration));
- }
-
- // -------------------------------
- // 4. Aplica migrations pendentes
- // -------------------------------
- var pendingMigrations = localMigrations.Except(appliedMigrations);
- foreach (var migration in pendingMigrations)
- {
- Console.WriteLine($"Aplicando migration: {migration}");
- migrator.Migrate(migration);
- }
- }
-
- ///
- /// Retorna a migration imediatamente anterior no projeto para rollback.
- ///
- private static string GetPreviousMigration(List localMigrations, string removedMigration)
- {
- var index = localMigrations.IndexOf(removedMigration);
- if (index <= 0)
- return "0"; // nenhuma migration aplicada
- return localMigrations[index - 1];
- }
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Ayllu.Domain.csproj b/src/Ayllu.Domain/Ayllu.Domain.csproj
deleted file mode 100644
index 973645a..0000000
--- a/src/Ayllu.Domain/Ayllu.Domain.csproj
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- net9.0
- enable
- enable
-
-
-
-
-
-
-
diff --git a/src/Ayllu.Domain/Entities/AppRole.cs b/src/Ayllu.Domain/Entities/AppRole.cs
deleted file mode 100644
index 494eb16..0000000
--- a/src/Ayllu.Domain/Entities/AppRole.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using Microsoft.AspNetCore.Identity;
-
-namespace Ayllu.Domain.Entities;
-
-public class AppRole : IdentityRole
-{
-}
diff --git a/src/Ayllu.Domain/Entities/AppUser.cs b/src/Ayllu.Domain/Entities/AppUser.cs
deleted file mode 100644
index 842757c..0000000
--- a/src/Ayllu.Domain/Entities/AppUser.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Microsoft.AspNetCore.Identity;
-
-namespace Ayllu.Domain.Entities;
-
-public class AppUser : IdentityUser
-{
- public string Name { get; set; } = string.Empty;
- public string LastName { get; set; } = string.Empty;
- public string? ProfilePictureUrl { get; set; } = string.Empty;
-
- public ICollection OrganizationMemberships { get; } = new List();
- public ICollection MovementsCreated { get; } = new List();
- public ICollection DialecticsCreated { get; } = new List();
- public ICollection DialecticStagesAuthored { get; } = new List();
- public ICollection ConnectionsRequested { get; } = new List();
- public ICollection ConnectionsReceived { get; } = new List();
-}
diff --git a/src/Ayllu.Domain/Entities/AppUserOrganization.cs b/src/Ayllu.Domain/Entities/AppUserOrganization.cs
deleted file mode 100644
index 7672b1e..0000000
--- a/src/Ayllu.Domain/Entities/AppUserOrganization.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace Ayllu.Domain.Entities
-{
-
- public class AppUserOrganization
- {
- public string UserId { get; set; } = string.Empty;
- public AppUser User { get; set; } = null!;
-
- public string OrganizationId { get; set; } = string.Empty;
- public Organization Organization { get; set; } = null!;
-
- public string Role { get; set; } = OrganizationRole.Member.ToString();
- }
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Entities/ConnectionStatus.cs b/src/Ayllu.Domain/Entities/ConnectionStatus.cs
deleted file mode 100644
index 6439fc1..0000000
--- a/src/Ayllu.Domain/Entities/ConnectionStatus.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Ayllu.Domain.Entities;
-
-public enum ConnectionStatus
-{
- Pending = 0,
- Accepted = 1,
- Rejected = 2
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Entities/Dialectic.cs b/src/Ayllu.Domain/Entities/Dialectic.cs
deleted file mode 100644
index 0617d3a..0000000
--- a/src/Ayllu.Domain/Entities/Dialectic.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace Ayllu.Domain.Entities
-{
- public class Dialectic
- {
- public string Id { get; set; } = Guid.NewGuid().ToString();
- public string Title { get; set; } = string.Empty;
- public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
-
- // Relacionamentos
- public string OrganizationId { get; set; } = string.Empty;
- public Organization Organization { get; set; } = null!;
-
- public string CreatedById { get; set; } = string.Empty;
- public AppUser CreatedBy { get; set; } = null!;
-
- public ICollection Stages { get; set; } = new List();
- }
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Entities/DialecticStage.cs b/src/Ayllu.Domain/Entities/DialecticStage.cs
deleted file mode 100644
index e9cd970..0000000
--- a/src/Ayllu.Domain/Entities/DialecticStage.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-namespace Ayllu.Domain.Entities
-{
- ///
- /// Representa uma etapa na discussão dialética (Tese, AntÃtese, SÃntese, etc.)
- ///
- public class DialecticStage
- {
- public string Id { get; set; } = Guid.NewGuid().ToString();
- public DialecticStageType StageType { get; set; }
- public string Content { get; set; } = string.Empty;
- public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
-
- // Relacionamentos
- public string DialecticId { get; set; } = string.Empty;
- public Dialectic Dialectic { get; set; } = null!;
-
- public string AuthorId { get; set; } = string.Empty;
- public AppUser Author { get; set; } = null!;
- }
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Entities/DialecticStageType.cs b/src/Ayllu.Domain/Entities/DialecticStageType.cs
deleted file mode 100644
index 5365b63..0000000
--- a/src/Ayllu.Domain/Entities/DialecticStageType.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Ayllu.Domain.Entities
-{
- public enum DialecticStageType
- {
- Thesis = 0,
- Antithesis = 1,
- Synthesis = 2,
- Other = 3
- }
-
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Entities/InvalidatedToken.cs b/src/Ayllu.Domain/Entities/InvalidatedToken.cs
deleted file mode 100644
index 5b30a2a..0000000
--- a/src/Ayllu.Domain/Entities/InvalidatedToken.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Ayllu.Domain.Entities;
-
-public class InvalidatedToken
-{
- public string Id { get; set; } = Guid.NewGuid().ToString();
- public string Jwt { get; set; } = string.Empty;
- public DateTime ExpirationDate { get; set; }
- public DateTime InvalidatedAt { get; set; } = DateTime.UtcNow;
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Entities/Movement.cs b/src/Ayllu.Domain/Entities/Movement.cs
deleted file mode 100644
index 768902a..0000000
--- a/src/Ayllu.Domain/Entities/Movement.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace Ayllu.Domain.Entities
-{
- public class Movement
- {
- public string Id { get; set; } = Guid.NewGuid().ToString();
- public string Title { get; set; } = string.Empty;
- public string? Description { get; set; }
- public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
-
- // Relacionamentos
- public string OrganizationId { get; set; } = string.Empty;
- public Organization Organization { get; set; } = null!;
-
- public string CreatedById { get; set; } = string.Empty;
- public AppUser CreatedBy { get; set; } = null!;
- }
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Entities/Organization.cs b/src/Ayllu.Domain/Entities/Organization.cs
deleted file mode 100644
index 6abb4ff..0000000
--- a/src/Ayllu.Domain/Entities/Organization.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace Ayllu.Domain.Entities;
-
-public class Organization
-{
- public string Id { get; set; } = Guid.NewGuid().ToString();
- public string Name { get; set; } = string.Empty;
- public string? Description { get; set; }
- public string? LogoUrl { get; set; }
-
- // Relacionamentos
- public ICollection Members { get; set; } = new List();
- public ICollection Movements { get; set; } = new List();
- public ICollection Dialectics { get; set; } = new List();
-}
diff --git a/src/Ayllu.Domain/Entities/OrganizationRole.cs b/src/Ayllu.Domain/Entities/OrganizationRole.cs
deleted file mode 100644
index 63c0d94..0000000
--- a/src/Ayllu.Domain/Entities/OrganizationRole.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Ayllu.Domain.Entities
-{
- public enum OrganizationRole
- {
- Owner = 0,
- Admin = 1,
- Member = 2
- }
-}
\ No newline at end of file
diff --git a/src/Ayllu.Domain/Entities/UserConnection.cs b/src/Ayllu.Domain/Entities/UserConnection.cs
deleted file mode 100644
index ef2993c..0000000
--- a/src/Ayllu.Domain/Entities/UserConnection.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System.Data;
-
-namespace Ayllu.Domain.Entities;
-
-public class UserConnection
-{
- public string User1Id { get; set; } = string.Empty;
- public AppUser User1 { get; set; } = null!;
-
- public string User2Id { get; set; } = string.Empty;
- public AppUser User2 { get; set; } = null!;
-
- public ConnectionStatus Status { get; set; } = ConnectionStatus.Pending;
- public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
-}
\ No newline at end of file
diff --git a/src/Ayllu.Github.Client/Ayllu.Github.Client.csproj b/src/Ayllu.Github.Client/Ayllu.Github.Client.csproj
new file mode 100644
index 0000000..67a0594
--- /dev/null
+++ b/src/Ayllu.Github.Client/Ayllu.Github.Client.csproj
@@ -0,0 +1,22 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ayllu.Github.Client/Github/Client/Advisories/AdvisoriesRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/Advisories/AdvisoriesRequestBuilder.cs
new file mode 100644
index 0000000..baf8a51
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/Advisories/AdvisoriesRequestBuilder.cs
@@ -0,0 +1,307 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Advisories.Item;
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.Advisories
+{
+ ///
+ /// Builds and executes requests for operations under \advisories
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class AdvisoriesRequestBuilder : BaseRequestBuilder
+ {
+ /// Gets an item from the Ayllu.Github.Client.advisories.item collection
+ /// The GHSA (GitHub Security Advisory) identifier of the advisory.
+ /// A
+ public global::Ayllu.Github.Client.Advisories.Item.WithGhsa_ItemRequestBuilder this[string position]
+ {
+ get
+ {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("ghsa_id", position);
+ return new global::Ayllu.Github.Client.Advisories.Item.WithGhsa_ItemRequestBuilder(urlTplParams, RequestAdapter);
+ }
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AdvisoriesRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/advisories{?affects*,after*,before*,cve_id*,cwes*,direction*,ecosystem*,epss_percentage*,epss_percentile*,ghsa_id*,is_withdrawn*,modified*,per_page*,published*,severity*,sort*,type*,updated*}", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AdvisoriesRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/advisories{?affects*,after*,before*,cve_id*,cwes*,direction*,ecosystem*,epss_percentage*,epss_percentile*,ghsa_id*,is_withdrawn*,modified*,per_page*,published*,severity*,sort*,type*,updated*}", rawUrl)
+ {
+ }
+ ///
+ /// Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware.By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)."
+ /// API method documentation
+ ///
+ /// A List<global::Ayllu.Github.Client.Models.GlobalAdvisory>
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 422 status code
+ /// When receiving a 429 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task?> GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task> GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "422", global::Ayllu.Github.Client.Models.ValidationErrorSimple.CreateFromDiscriminatorValue },
+ { "429", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ };
+ var collectionResult = await RequestAdapter.SendCollectionAsync(requestInfo, global::Ayllu.Github.Client.Models.GlobalAdvisory.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return collectionResult?.AsList();
+ }
+ ///
+ /// Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware.By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)."
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.Advisories.AdvisoriesRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.Advisories.AdvisoriesRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Lists all global security advisories that match the specified parameters. If no other parameters are defined, the request will return only GitHub-reviewed advisories that are not malware.By default, all responses will exclude advisories for malware, because malware are not standard vulnerabilities. To list advisories for malware, you must include the `type` parameter in your request, with the value `malware`. For more information about the different types of security advisories, see "[About the GitHub Advisory database](https://docs.github.com/code-security/security-advisories/global-security-advisories/about-the-github-advisory-database#about-types-of-security-advisories)."
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class AdvisoriesRequestBuilderGetQueryParameters
+ {
+ /// If specified, only return advisories that affect any of `package` or `package@version`. A maximum of 1000 packages can be specified.If the query parameter causes the URL to exceed the maximum URL length supported by your client, you must specify fewer packages.Example: `affects=package1,package2@1.0.0,package3@^2.0.0` or `affects[]=package1&affects[]=package2@1.0.0`
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("affects")]
+ public string? Affects { get; set; }
+#nullable restore
+#else
+ [QueryParameter("affects")]
+ public string Affects { get; set; }
+#endif
+ /// A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results after this cursor. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("after")]
+ public string? After { get; set; }
+#nullable restore
+#else
+ [QueryParameter("after")]
+ public string After { get; set; }
+#endif
+ /// A cursor, as given in the [Link header](https://docs.github.com/rest/guides/using-pagination-in-the-rest-api#using-link-headers). If specified, the query only searches for results before this cursor. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("before")]
+ public string? Before { get; set; }
+#nullable restore
+#else
+ [QueryParameter("before")]
+ public string Before { get; set; }
+#endif
+ /// If specified, only advisories with this CVE (Common Vulnerabilities and Exposures) identifier will be returned.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("cve_id")]
+ public string? CveId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("cve_id")]
+ public string CveId { get; set; }
+#endif
+ /// If specified, only advisories with these Common Weakness Enumerations (CWEs) will be returned.Example: `cwes=79,284,22` or `cwes[]=79&cwes[]=284&cwes[]=22`
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("cwes")]
+ public string? Cwes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("cwes")]
+ public string Cwes { get; set; }
+#endif
+ /// The direction to sort the results by.
+ [Obsolete("This property is deprecated, use DirectionAsGetDirectionQueryParameterType instead")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("direction")]
+ public string? Direction { get; set; }
+#nullable restore
+#else
+ [QueryParameter("direction")]
+ public string Direction { get; set; }
+#endif
+ /// The direction to sort the results by.
+ [QueryParameter("direction")]
+ public global::Ayllu.Github.Client.Advisories.GetDirectionQueryParameterType? DirectionAsGetDirectionQueryParameterType { get; set; }
+ /// If specified, only advisories for these ecosystems will be returned.
+ [Obsolete("This property is deprecated, use EcosystemAsSecurityAdvisoryEcosystems instead")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("ecosystem")]
+ public string? Ecosystem { get; set; }
+#nullable restore
+#else
+ [QueryParameter("ecosystem")]
+ public string Ecosystem { get; set; }
+#endif
+ /// If specified, only advisories for these ecosystems will be returned.
+ [QueryParameter("ecosystem")]
+ public global::Ayllu.Github.Client.Models.SecurityAdvisoryEcosystems? EcosystemAsSecurityAdvisoryEcosystems { get; set; }
+ /// If specified, only return advisories that have an EPSS percentage score that matches the provided value.The EPSS percentage represents the likelihood of a CVE being exploited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("epss_percentage")]
+ public string? EpssPercentage { get; set; }
+#nullable restore
+#else
+ [QueryParameter("epss_percentage")]
+ public string EpssPercentage { get; set; }
+#endif
+ /// If specified, only return advisories that have an EPSS percentile score that matches the provided value.The EPSS percentile represents the relative rank of the CVE's likelihood of being exploited compared to other CVEs.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("epss_percentile")]
+ public string? EpssPercentile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("epss_percentile")]
+ public string EpssPercentile { get; set; }
+#endif
+ /// If specified, only advisories with this GHSA (GitHub Security Advisory) identifier will be returned.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("ghsa_id")]
+ public string? GhsaId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("ghsa_id")]
+ public string GhsaId { get; set; }
+#endif
+ /// Whether to only return advisories that have been withdrawn.
+ [QueryParameter("is_withdrawn")]
+ public bool? IsWithdrawn { get; set; }
+ /// If specified, only show advisories that were updated or published on a date or date range.For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)."
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("modified")]
+ public string? Modified { get; set; }
+#nullable restore
+#else
+ [QueryParameter("modified")]
+ public string Modified { get; set; }
+#endif
+ /// The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
+ [QueryParameter("per_page")]
+ public int? PerPage { get; set; }
+ /// If specified, only return advisories that were published on a date or date range.For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)."
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("published")]
+ public string? Published { get; set; }
+#nullable restore
+#else
+ [QueryParameter("published")]
+ public string Published { get; set; }
+#endif
+ /// If specified, only advisories with these severities will be returned.
+ [Obsolete("This property is deprecated, use SeverityAsGetSeverityQueryParameterType instead")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("severity")]
+ public string? Severity { get; set; }
+#nullable restore
+#else
+ [QueryParameter("severity")]
+ public string Severity { get; set; }
+#endif
+ /// If specified, only advisories with these severities will be returned.
+ [QueryParameter("severity")]
+ public global::Ayllu.Github.Client.Advisories.GetSeverityQueryParameterType? SeverityAsGetSeverityQueryParameterType { get; set; }
+ /// The property to sort the results by.
+ [Obsolete("This property is deprecated, use SortAsGetSortQueryParameterType instead")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("sort")]
+ public string? Sort { get; set; }
+#nullable restore
+#else
+ [QueryParameter("sort")]
+ public string Sort { get; set; }
+#endif
+ /// The property to sort the results by.
+ [QueryParameter("sort")]
+ public global::Ayllu.Github.Client.Advisories.GetSortQueryParameterType? SortAsGetSortQueryParameterType { get; set; }
+ /// If specified, only advisories of this type will be returned. By default, a request with no other parameters defined will only return reviewed advisories that are not malware.
+ [Obsolete("This property is deprecated, use TypeAsGetTypeQueryParameterType instead")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("type")]
+ public string? Type { get; set; }
+#nullable restore
+#else
+ [QueryParameter("type")]
+ public string Type { get; set; }
+#endif
+ /// If specified, only advisories of this type will be returned. By default, a request with no other parameters defined will only return reviewed advisories that are not malware.
+ [QueryParameter("type")]
+ public global::Ayllu.Github.Client.Advisories.GetTypeQueryParameterType? TypeAsGetTypeQueryParameterType { get; set; }
+ /// If specified, only return advisories that were updated on a date or date range.For more information on the syntax of the date range, see "[Understanding the search syntax](https://docs.github.com/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#query-for-dates)."
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("updated")]
+ public string? Updated { get; set; }
+#nullable restore
+#else
+ [QueryParameter("updated")]
+ public string Updated { get; set; }
+#endif
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class AdvisoriesRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/Advisories/GetDirectionQueryParameterType.cs b/src/Ayllu.Github.Client/Github/Client/Advisories/GetDirectionQueryParameterType.cs
new file mode 100644
index 0000000..07c6b51
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/Advisories/GetDirectionQueryParameterType.cs
@@ -0,0 +1,20 @@
+//
+using System.Runtime.Serialization;
+using System;
+namespace Ayllu.Github.Client.Advisories
+{
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public enum GetDirectionQueryParameterType
+ #pragma warning restore CS1591
+ {
+ [EnumMember(Value = "asc")]
+ #pragma warning disable CS1591
+ Asc,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "desc")]
+ #pragma warning disable CS1591
+ Desc,
+ #pragma warning restore CS1591
+ }
+}
diff --git a/src/Ayllu.Github.Client/Github/Client/Advisories/GetSeverityQueryParameterType.cs b/src/Ayllu.Github.Client/Github/Client/Advisories/GetSeverityQueryParameterType.cs
new file mode 100644
index 0000000..6409fa9
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/Advisories/GetSeverityQueryParameterType.cs
@@ -0,0 +1,32 @@
+//
+using System.Runtime.Serialization;
+using System;
+namespace Ayllu.Github.Client.Advisories
+{
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public enum GetSeverityQueryParameterType
+ #pragma warning restore CS1591
+ {
+ [EnumMember(Value = "unknown")]
+ #pragma warning disable CS1591
+ Unknown,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "low")]
+ #pragma warning disable CS1591
+ Low,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "medium")]
+ #pragma warning disable CS1591
+ Medium,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "high")]
+ #pragma warning disable CS1591
+ High,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "critical")]
+ #pragma warning disable CS1591
+ Critical,
+ #pragma warning restore CS1591
+ }
+}
diff --git a/src/Ayllu.Github.Client/Github/Client/Advisories/GetSortQueryParameterType.cs b/src/Ayllu.Github.Client/Github/Client/Advisories/GetSortQueryParameterType.cs
new file mode 100644
index 0000000..996f627
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/Advisories/GetSortQueryParameterType.cs
@@ -0,0 +1,28 @@
+//
+using System.Runtime.Serialization;
+using System;
+namespace Ayllu.Github.Client.Advisories
+{
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public enum GetSortQueryParameterType
+ #pragma warning restore CS1591
+ {
+ [EnumMember(Value = "updated")]
+ #pragma warning disable CS1591
+ Updated,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "published")]
+ #pragma warning disable CS1591
+ Published,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "epss_percentage")]
+ #pragma warning disable CS1591
+ Epss_percentage,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "epss_percentile")]
+ #pragma warning disable CS1591
+ Epss_percentile,
+ #pragma warning restore CS1591
+ }
+}
diff --git a/src/Ayllu.Github.Client/Github/Client/Advisories/GetTypeQueryParameterType.cs b/src/Ayllu.Github.Client/Github/Client/Advisories/GetTypeQueryParameterType.cs
new file mode 100644
index 0000000..5e5fdc3
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/Advisories/GetTypeQueryParameterType.cs
@@ -0,0 +1,24 @@
+//
+using System.Runtime.Serialization;
+using System;
+namespace Ayllu.Github.Client.Advisories
+{
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public enum GetTypeQueryParameterType
+ #pragma warning restore CS1591
+ {
+ [EnumMember(Value = "reviewed")]
+ #pragma warning disable CS1591
+ Reviewed,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "malware")]
+ #pragma warning disable CS1591
+ Malware,
+ #pragma warning restore CS1591
+ [EnumMember(Value = "unreviewed")]
+ #pragma warning disable CS1591
+ Unreviewed,
+ #pragma warning restore CS1591
+ }
+}
diff --git a/src/Ayllu.Github.Client/Github/Client/Advisories/Item/WithGhsa_ItemRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/Advisories/Item/WithGhsa_ItemRequestBuilder.cs
new file mode 100644
index 0000000..47b5289
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/Advisories/Item/WithGhsa_ItemRequestBuilder.cs
@@ -0,0 +1,98 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.Advisories.Item
+{
+ ///
+ /// Builds and executes requests for operations under \advisories\{ghsa_id}
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class WithGhsa_ItemRequestBuilder : BaseRequestBuilder
+ {
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithGhsa_ItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/advisories/{ghsa_id}", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithGhsa_ItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/advisories/{ghsa_id}", rawUrl)
+ {
+ }
+ ///
+ /// Gets a global security advisory using its GitHub Security Advisory (GHSA) identifier.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 404 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "404", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ };
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.Models.GlobalAdvisory.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets a global security advisory using its GitHub Security Advisory (GHSA) identifier.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.Advisories.Item.WithGhsa_ItemRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.Advisories.Item.WithGhsa_ItemRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class WithGhsa_ItemRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/AppRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/AppRequestBuilder.cs
new file mode 100644
index 0000000..11d39fd
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/AppRequestBuilder.cs
@@ -0,0 +1,111 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.App.Hook;
+using Ayllu.Github.Client.App.InstallationRequests;
+using Ayllu.Github.Client.App.Installations;
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App
+{
+ ///
+ /// Builds and executes requests for operations under \app
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class AppRequestBuilder : BaseRequestBuilder
+ {
+ /// The hook property
+ public global::Ayllu.Github.Client.App.Hook.HookRequestBuilder Hook
+ {
+ get => new global::Ayllu.Github.Client.App.Hook.HookRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The installationRequests property
+ public global::Ayllu.Github.Client.App.InstallationRequests.InstallationRequestsRequestBuilder InstallationRequests
+ {
+ get => new global::Ayllu.Github.Client.App.InstallationRequests.InstallationRequestsRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The installations property
+ public global::Ayllu.Github.Client.App.Installations.InstallationsRequestBuilder Installations
+ {
+ get => new global::Ayllu.Github.Client.App.Installations.InstallationsRequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AppRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AppRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app", rawUrl)
+ {
+ }
+ ///
+ /// Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app)" endpoint.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.Models.Integration.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations for the authenticated app](https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app)" endpoint.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.AppRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.AppRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class AppRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Hook/Config/ConfigPatchRequestBody.cs b/src/Ayllu.Github.Client/Github/Client/App/Hook/Config/ConfigPatchRequestBody.cs
new file mode 100644
index 0000000..372c342
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Hook/Config/ConfigPatchRequestBody.cs
@@ -0,0 +1,96 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using System.Collections.Generic;
+using System.IO;
+using System;
+namespace Ayllu.Github.Client.App.Hook.Config
+{
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public partial class ConfigPatchRequestBody : IAdditionalDataHolder, IParsable
+ #pragma warning restore CS1591
+ {
+ /// Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
+ public IDictionary AdditionalData { get; set; }
+ /// The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public string? ContentType { get; set; }
+#nullable restore
+#else
+ public string ContentType { get; set; }
+#endif
+ /// The insecure_ssl property
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public global::Ayllu.Github.Client.Models.WebhookConfigInsecureSsl? InsecureSsl { get; set; }
+#nullable restore
+#else
+ public global::Ayllu.Github.Client.Models.WebhookConfigInsecureSsl InsecureSsl { get; set; }
+#endif
+ /// If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value for [delivery signature headers](https://docs.github.com/webhooks/event-payloads/#delivery-headers).
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public string? Secret { get; set; }
+#nullable restore
+#else
+ public string Secret { get; set; }
+#endif
+ /// The URL to which the payloads will be delivered.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public string? Url { get; set; }
+#nullable restore
+#else
+ public string Url { get; set; }
+#endif
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ public ConfigPatchRequestBody()
+ {
+ AdditionalData = new Dictionary();
+ }
+ ///
+ /// Creates a new instance of the appropriate class based on discriminator value
+ ///
+ /// A
+ /// The parse node to use to read the discriminator value and create the object
+ public static global::Ayllu.Github.Client.App.Hook.Config.ConfigPatchRequestBody CreateFromDiscriminatorValue(IParseNode parseNode)
+ {
+ _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode));
+ return new global::Ayllu.Github.Client.App.Hook.Config.ConfigPatchRequestBody();
+ }
+ ///
+ /// The deserialization information for the current model
+ ///
+ /// A IDictionary<string, Action<IParseNode>>
+ public virtual IDictionary> GetFieldDeserializers()
+ {
+ return new Dictionary>
+ {
+ { "content_type", n => { ContentType = n.GetStringValue(); } },
+ { "insecure_ssl", n => { InsecureSsl = n.GetObjectValue(global::Ayllu.Github.Client.Models.WebhookConfigInsecureSsl.CreateFromDiscriminatorValue); } },
+ { "secret", n => { Secret = n.GetStringValue(); } },
+ { "url", n => { Url = n.GetStringValue(); } },
+ };
+ }
+ ///
+ /// Serializes information the current object
+ ///
+ /// Serialization writer to use to serialize this model
+ public virtual void Serialize(ISerializationWriter writer)
+ {
+ _ = writer ?? throw new ArgumentNullException(nameof(writer));
+ writer.WriteStringValue("content_type", ContentType);
+ writer.WriteObjectValue("insecure_ssl", InsecureSsl);
+ writer.WriteStringValue("secret", Secret);
+ writer.WriteStringValue("url", Url);
+ writer.WriteAdditionalData(AdditionalData);
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Hook/Config/ConfigRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Hook/Config/ConfigRequestBuilder.cs
new file mode 100644
index 0000000..6cd3c33
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Hook/Config/ConfigRequestBuilder.cs
@@ -0,0 +1,144 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.Hook.Config
+{
+ ///
+ /// Builds and executes requests for operations under \app\hook\config
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class ConfigRequestBuilder : BaseRequestBuilder
+ {
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public ConfigRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook/config", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public ConfigRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook/config", rawUrl)
+ {
+ }
+ ///
+ /// Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.Models.WebhookConfig.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A
+ /// The request body
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task PatchAsync(global::Ayllu.Github.Client.App.Hook.Config.ConfigPatchRequestBody body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task PatchAsync(global::Ayllu.Github.Client.App.Hook.Config.ConfigPatchRequestBody body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ _ = body ?? throw new ArgumentNullException(nameof(body));
+ var requestInfo = ToPatchRequestInformation(body, requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.Models.WebhookConfig.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Returns the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Updates the webhook configuration for a GitHub App. For more information about configuring a webhook for your app, see "[Creating a GitHub App](/developers/apps/creating-a-github-app)."You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// The request body
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToPatchRequestInformation(global::Ayllu.Github.Client.App.Hook.Config.ConfigPatchRequestBody body, Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToPatchRequestInformation(global::Ayllu.Github.Client.App.Hook.Config.ConfigPatchRequestBody body, Action> requestConfiguration = default)
+ {
+#endif
+ _ = body ?? throw new ArgumentNullException(nameof(body));
+ var requestInfo = new RequestInformation(Method.PATCH, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body);
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.Hook.Config.ConfigRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.Hook.Config.ConfigRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class ConfigRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class ConfigRequestBuilderPatchRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/DeliveriesRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/DeliveriesRequestBuilder.cs
new file mode 100644
index 0000000..e4f4166
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/DeliveriesRequestBuilder.cs
@@ -0,0 +1,147 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.App.Hook.Deliveries.Item;
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.Hook.Deliveries
+{
+ ///
+ /// Builds and executes requests for operations under \app\hook\deliveries
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class DeliveriesRequestBuilder : BaseRequestBuilder
+ {
+ /// Gets an item from the Ayllu.Github.Client.app.hook.deliveries.item collection
+ /// Unique identifier of the item
+ /// A
+ public global::Ayllu.Github.Client.App.Hook.Deliveries.Item.WithDelivery_ItemRequestBuilder this[int position]
+ {
+ get
+ {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("delivery_id", position);
+ return new global::Ayllu.Github.Client.App.Hook.Deliveries.Item.WithDelivery_ItemRequestBuilder(urlTplParams, RequestAdapter);
+ }
+ }
+ /// Gets an item from the Ayllu.Github.Client.app.hook.deliveries.item collection
+ /// Unique identifier of the item
+ /// A
+ [Obsolete("This indexer is deprecated and will be removed in the next major version. Use the one with the typed parameter instead.")]
+ public global::Ayllu.Github.Client.App.Hook.Deliveries.Item.WithDelivery_ItemRequestBuilder this[string position]
+ {
+ get
+ {
+ var urlTplParams = new Dictionary(PathParameters);
+ if (!string.IsNullOrWhiteSpace(position)) urlTplParams.Add("delivery_id", position);
+ return new global::Ayllu.Github.Client.App.Hook.Deliveries.Item.WithDelivery_ItemRequestBuilder(urlTplParams, RequestAdapter);
+ }
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public DeliveriesRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook/deliveries{?cursor*,per_page*}", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public DeliveriesRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook/deliveries{?cursor*,per_page*}", rawUrl)
+ {
+ }
+ ///
+ /// Returns a list of webhook deliveries for the webhook configured for a GitHub App.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A List<global::Ayllu.Github.Client.Models.HookDeliveryItem>
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 400 status code
+ /// When receiving a 422 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task?> GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task> GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "400", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ { "422", global::Ayllu.Github.Client.Models.ValidationError.CreateFromDiscriminatorValue },
+ };
+ var collectionResult = await RequestAdapter.SendCollectionAsync(requestInfo, global::Ayllu.Github.Client.Models.HookDeliveryItem.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return collectionResult?.AsList();
+ }
+ ///
+ /// Returns a list of webhook deliveries for the webhook configured for a GitHub App.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.Hook.Deliveries.DeliveriesRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.Hook.Deliveries.DeliveriesRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Returns a list of webhook deliveries for the webhook configured for a GitHub App.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class DeliveriesRequestBuilderGetQueryParameters
+ {
+ /// Used for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the `link` header for the next and previous page cursors.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("cursor")]
+ public string? Cursor { get; set; }
+#nullable restore
+#else
+ [QueryParameter("cursor")]
+ public string Cursor { get; set; }
+#endif
+ /// The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
+ [QueryParameter("per_page")]
+ public int? PerPage { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class DeliveriesRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsPostResponse.cs b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsPostResponse.cs
new file mode 100644
index 0000000..fd2dab6
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsPostResponse.cs
@@ -0,0 +1,55 @@
+//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using System.Collections.Generic;
+using System.IO;
+using System;
+namespace Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts
+{
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public partial class AttemptsPostResponse : IAdditionalDataHolder, IParsable
+ #pragma warning restore CS1591
+ {
+ /// Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
+ public IDictionary AdditionalData { get; set; }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ public AttemptsPostResponse()
+ {
+ AdditionalData = new Dictionary();
+ }
+ ///
+ /// Creates a new instance of the appropriate class based on discriminator value
+ ///
+ /// A
+ /// The parse node to use to read the discriminator value and create the object
+ public static global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsPostResponse CreateFromDiscriminatorValue(IParseNode parseNode)
+ {
+ _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode));
+ return new global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsPostResponse();
+ }
+ ///
+ /// The deserialization information for the current model
+ ///
+ /// A IDictionary<string, Action<IParseNode>>
+ public virtual IDictionary> GetFieldDeserializers()
+ {
+ return new Dictionary>
+ {
+ };
+ }
+ ///
+ /// Serializes information the current object
+ ///
+ /// Serialization writer to use to serialize this model
+ public virtual void Serialize(ISerializationWriter writer)
+ {
+ _ = writer ?? throw new ArgumentNullException(nameof(writer));
+ writer.WriteAdditionalData(AdditionalData);
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsRequestBuilder.cs
new file mode 100644
index 0000000..62f6e9f
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsRequestBuilder.cs
@@ -0,0 +1,127 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts
+{
+ ///
+ /// Builds and executes requests for operations under \app\hook\deliveries\{delivery_id}\attempts
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class AttemptsRequestBuilder : BaseRequestBuilder
+ {
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AttemptsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook/deliveries/{delivery_id}/attempts", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AttemptsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook/deliveries/{delivery_id}/attempts", rawUrl)
+ {
+ }
+ ///
+ /// Redeliver a delivery for the webhook configured for a GitHub App.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 400 status code
+ /// When receiving a 422 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task PostAsAttemptsPostResponseAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task PostAsAttemptsPostResponseAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToPostRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "400", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ { "422", global::Ayllu.Github.Client.Models.ValidationError.CreateFromDiscriminatorValue },
+ };
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsPostResponse.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Redeliver a delivery for the webhook configured for a GitHub App.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 400 status code
+ /// When receiving a 422 status code
+ [Obsolete("This method is obsolete. Use PostAsAttemptsPostResponseAsync instead.")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task PostAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task PostAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToPostRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "400", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ { "422", global::Ayllu.Github.Client.Models.ValidationError.CreateFromDiscriminatorValue },
+ };
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsResponse.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Redeliver a delivery for the webhook configured for a GitHub App.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToPostRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToPostRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.POST, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class AttemptsRequestBuilderPostRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsResponse.cs b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsResponse.cs
new file mode 100644
index 0000000..6c1760b
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/Attempts/AttemptsResponse.cs
@@ -0,0 +1,28 @@
+//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using System.Collections.Generic;
+using System.IO;
+using System;
+namespace Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts
+{
+ [Obsolete("This class is obsolete. Use AttemptsPostResponse instead.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public partial class AttemptsResponse : global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsPostResponse, IParsable
+ #pragma warning restore CS1591
+ {
+ ///
+ /// Creates a new instance of the appropriate class based on discriminator value
+ ///
+ /// A
+ /// The parse node to use to read the discriminator value and create the object
+ public static new global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsResponse CreateFromDiscriminatorValue(IParseNode parseNode)
+ {
+ _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode));
+ return new global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsResponse();
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/WithDelivery_ItemRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/WithDelivery_ItemRequestBuilder.cs
new file mode 100644
index 0000000..a87bc8b
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Hook/Deliveries/Item/WithDelivery_ItemRequestBuilder.cs
@@ -0,0 +1,106 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts;
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.Hook.Deliveries.Item
+{
+ ///
+ /// Builds and executes requests for operations under \app\hook\deliveries\{delivery_id}
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class WithDelivery_ItemRequestBuilder : BaseRequestBuilder
+ {
+ /// The attempts property
+ public global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsRequestBuilder Attempts
+ {
+ get => new global::Ayllu.Github.Client.App.Hook.Deliveries.Item.Attempts.AttemptsRequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithDelivery_ItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook/deliveries/{delivery_id}", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithDelivery_ItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook/deliveries/{delivery_id}", rawUrl)
+ {
+ }
+ ///
+ /// Returns a delivery for the webhook configured for a GitHub App.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 400 status code
+ /// When receiving a 422 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "400", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ { "422", global::Ayllu.Github.Client.Models.ValidationError.CreateFromDiscriminatorValue },
+ };
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.Models.HookDelivery.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Returns a delivery for the webhook configured for a GitHub App.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.Hook.Deliveries.Item.WithDelivery_ItemRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.Hook.Deliveries.Item.WithDelivery_ItemRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class WithDelivery_ItemRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Hook/HookRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Hook/HookRequestBuilder.cs
new file mode 100644
index 0000000..3d46b7f
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Hook/HookRequestBuilder.cs
@@ -0,0 +1,47 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.App.Hook.Config;
+using Ayllu.Github.Client.App.Hook.Deliveries;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System;
+namespace Ayllu.Github.Client.App.Hook
+{
+ ///
+ /// Builds and executes requests for operations under \app\hook
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class HookRequestBuilder : BaseRequestBuilder
+ {
+ /// The config property
+ public global::Ayllu.Github.Client.App.Hook.Config.ConfigRequestBuilder Config
+ {
+ get => new global::Ayllu.Github.Client.App.Hook.Config.ConfigRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The deliveries property
+ public global::Ayllu.Github.Client.App.Hook.Deliveries.DeliveriesRequestBuilder Deliveries
+ {
+ get => new global::Ayllu.Github.Client.App.Hook.Deliveries.DeliveriesRequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public HookRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public HookRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/hook", rawUrl)
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/InstallationRequests/InstallationRequestsRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/InstallationRequests/InstallationRequestsRequestBuilder.cs
new file mode 100644
index 0000000..f76adb9
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/InstallationRequests/InstallationRequestsRequestBuilder.cs
@@ -0,0 +1,112 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.InstallationRequests
+{
+ ///
+ /// Builds and executes requests for operations under \app\installation-requests
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class InstallationRequestsRequestBuilder : BaseRequestBuilder
+ {
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public InstallationRequestsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installation-requests{?page*,per_page*}", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public InstallationRequestsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installation-requests{?page*,per_page*}", rawUrl)
+ {
+ }
+ ///
+ /// Lists all the pending installation requests for the authenticated GitHub App.
+ /// API method documentation
+ ///
+ /// A List<global::Ayllu.Github.Client.Models.IntegrationInstallationRequest>
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 401 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task?> GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task> GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "401", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ };
+ var collectionResult = await RequestAdapter.SendCollectionAsync(requestInfo, global::Ayllu.Github.Client.Models.IntegrationInstallationRequest.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return collectionResult?.AsList();
+ }
+ ///
+ /// Lists all the pending installation requests for the authenticated GitHub App.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.InstallationRequests.InstallationRequestsRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.InstallationRequests.InstallationRequestsRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Lists all the pending installation requests for the authenticated GitHub App.
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class InstallationRequestsRequestBuilderGetQueryParameters
+ {
+ /// The page number of the results to fetch. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
+ [QueryParameter("page")]
+ public int? Page { get; set; }
+ /// The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
+ [QueryParameter("per_page")]
+ public int? PerPage { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class InstallationRequestsRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Installations/InstallationsRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Installations/InstallationsRequestBuilder.cs
new file mode 100644
index 0000000..c95aad7
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Installations/InstallationsRequestBuilder.cs
@@ -0,0 +1,145 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.App.Installations.Item;
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.Installations
+{
+ ///
+ /// Builds and executes requests for operations under \app\installations
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class InstallationsRequestBuilder : BaseRequestBuilder
+ {
+ /// Gets an item from the Ayllu.Github.Client.app.installations.item collection
+ /// The unique identifier of the installation.
+ /// A
+ public global::Ayllu.Github.Client.App.Installations.Item.WithInstallation_ItemRequestBuilder this[int position]
+ {
+ get
+ {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("installation_id", position);
+ return new global::Ayllu.Github.Client.App.Installations.Item.WithInstallation_ItemRequestBuilder(urlTplParams, RequestAdapter);
+ }
+ }
+ /// Gets an item from the Ayllu.Github.Client.app.installations.item collection
+ /// The unique identifier of the installation.
+ /// A
+ [Obsolete("This indexer is deprecated and will be removed in the next major version. Use the one with the typed parameter instead.")]
+ public global::Ayllu.Github.Client.App.Installations.Item.WithInstallation_ItemRequestBuilder this[string position]
+ {
+ get
+ {
+ var urlTplParams = new Dictionary(PathParameters);
+ if (!string.IsNullOrWhiteSpace(position)) urlTplParams.Add("installation_id", position);
+ return new global::Ayllu.Github.Client.App.Installations.Item.WithInstallation_ItemRequestBuilder(urlTplParams, RequestAdapter);
+ }
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public InstallationsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installations{?outdated*,page*,per_page*,since*}", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public InstallationsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installations{?outdated*,page*,per_page*,since*}", rawUrl)
+ {
+ }
+ ///
+ /// The permissions the installation has are included under the `permissions` key.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A List<global::Ayllu.Github.Client.Models.Installation>
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task?> GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task> GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ var collectionResult = await RequestAdapter.SendCollectionAsync(requestInfo, global::Ayllu.Github.Client.Models.Installation.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ return collectionResult?.AsList();
+ }
+ ///
+ /// The permissions the installation has are included under the `permissions` key.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.Installations.InstallationsRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.Installations.InstallationsRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// The permissions the installation has are included under the `permissions` key.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class InstallationsRequestBuilderGetQueryParameters
+ {
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("outdated")]
+ public string? Outdated { get; set; }
+#nullable restore
+#else
+ [QueryParameter("outdated")]
+ public string Outdated { get; set; }
+#endif
+ /// The page number of the results to fetch. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
+ [QueryParameter("page")]
+ public int? Page { get; set; }
+ /// The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
+ [QueryParameter("per_page")]
+ public int? PerPage { get; set; }
+ /// Only show results that were last updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+ [QueryParameter("since")]
+ public DateTimeOffset? Since { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class InstallationsRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Access_tokens/Access_tokensPostRequestBody.cs b/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Access_tokens/Access_tokensPostRequestBody.cs
new file mode 100644
index 0000000..2de6487
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Access_tokens/Access_tokensPostRequestBody.cs
@@ -0,0 +1,86 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using System.Collections.Generic;
+using System.IO;
+using System;
+namespace Ayllu.Github.Client.App.Installations.Item.Access_tokens
+{
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public partial class Access_tokensPostRequestBody : IAdditionalDataHolder, IParsable
+ #pragma warning restore CS1591
+ {
+ /// Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
+ public IDictionary AdditionalData { get; set; }
+ /// The permissions granted to the user access token.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public global::Ayllu.Github.Client.Models.AppPermissions? Permissions { get; set; }
+#nullable restore
+#else
+ public global::Ayllu.Github.Client.Models.AppPermissions Permissions { get; set; }
+#endif
+ /// List of repository names that the token should have access to
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public List? Repositories { get; set; }
+#nullable restore
+#else
+ public List Repositories { get; set; }
+#endif
+ /// List of repository IDs that the token should have access to
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public List? RepositoryIds { get; set; }
+#nullable restore
+#else
+ public List RepositoryIds { get; set; }
+#endif
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ public Access_tokensPostRequestBody()
+ {
+ AdditionalData = new Dictionary();
+ }
+ ///
+ /// Creates a new instance of the appropriate class based on discriminator value
+ ///
+ /// A
+ /// The parse node to use to read the discriminator value and create the object
+ public static global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensPostRequestBody CreateFromDiscriminatorValue(IParseNode parseNode)
+ {
+ _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode));
+ return new global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensPostRequestBody();
+ }
+ ///
+ /// The deserialization information for the current model
+ ///
+ /// A IDictionary<string, Action<IParseNode>>
+ public virtual IDictionary> GetFieldDeserializers()
+ {
+ return new Dictionary>
+ {
+ { "permissions", n => { Permissions = n.GetObjectValue(global::Ayllu.Github.Client.Models.AppPermissions.CreateFromDiscriminatorValue); } },
+ { "repositories", n => { Repositories = n.GetCollectionOfPrimitiveValues()?.AsList(); } },
+ { "repository_ids", n => { RepositoryIds = n.GetCollectionOfPrimitiveValues()?.AsList(); } },
+ };
+ }
+ ///
+ /// Serializes information the current object
+ ///
+ /// Serialization writer to use to serialize this model
+ public virtual void Serialize(ISerializationWriter writer)
+ {
+ _ = writer ?? throw new ArgumentNullException(nameof(writer));
+ writer.WriteObjectValue("permissions", Permissions);
+ writer.WriteCollectionOfPrimitiveValues("repositories", Repositories);
+ writer.WriteCollectionOfPrimitiveValues("repository_ids", RepositoryIds);
+ writer.WriteAdditionalData(AdditionalData);
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Access_tokens/Access_tokensRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Access_tokens/Access_tokensRequestBuilder.cs
new file mode 100644
index 0000000..2e1f57d
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Access_tokens/Access_tokensRequestBuilder.cs
@@ -0,0 +1,109 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.Installations.Item.Access_tokens
+{
+ ///
+ /// Builds and executes requests for operations under \app\installations\{installation_id}\access_tokens
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class Access_tokensRequestBuilder : BaseRequestBuilder
+ {
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public Access_tokensRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installations/{installation_id}/access_tokens", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public Access_tokensRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installations/{installation_id}/access_tokens", rawUrl)
+ {
+ }
+ ///
+ /// Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access.Optionally, you can use the `repositories` or `repository_ids` body parameters to specify individual repositories that the installation access token can access. If you don't use `repositories` or `repository_ids` to grant access to specific repositories, the installation access token will have access to all repositories that the installation was granted access to. The installation access token cannot be granted access to repositories that the installation was not granted access to. Up to 500 repositories can be listed in this manner.Optionally, use the `permissions` body parameter to specify the permissions that the installation access token should have. If `permissions` is not specified, the installation access token will have all of the permissions that were granted to the app. The installation access token cannot be granted permissions that the app was not granted.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A
+ /// The request body
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 401 status code
+ /// When receiving a 403 status code
+ /// When receiving a 404 status code
+ /// When receiving a 422 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task PostAsync(global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensPostRequestBody body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task PostAsync(global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensPostRequestBody body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ _ = body ?? throw new ArgumentNullException(nameof(body));
+ var requestInfo = ToPostRequestInformation(body, requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "401", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ { "403", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ { "404", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ { "422", global::Ayllu.Github.Client.Models.ValidationError.CreateFromDiscriminatorValue },
+ };
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.Models.InstallationToken.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token. By default the installation token has access to all repositories that the installation can access.Optionally, you can use the `repositories` or `repository_ids` body parameters to specify individual repositories that the installation access token can access. If you don't use `repositories` or `repository_ids` to grant access to specific repositories, the installation access token will have access to all repositories that the installation was granted access to. The installation access token cannot be granted access to repositories that the installation was not granted access to. Up to 500 repositories can be listed in this manner.Optionally, use the `permissions` body parameter to specify the permissions that the installation access token should have. If `permissions` is not specified, the installation access token will have all of the permissions that were granted to the app. The installation access token cannot be granted permissions that the app was not granted.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// The request body
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToPostRequestInformation(global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensPostRequestBody body, Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToPostRequestInformation(global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensPostRequestBody body, Action> requestConfiguration = default)
+ {
+#endif
+ _ = body ?? throw new ArgumentNullException(nameof(body));
+ var requestInfo = new RequestInformation(Method.POST, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body);
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class Access_tokensRequestBuilderPostRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Suspended/SuspendedRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Suspended/SuspendedRequestBuilder.cs
new file mode 100644
index 0000000..c8ba9d1
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/Suspended/SuspendedRequestBuilder.cs
@@ -0,0 +1,147 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.Installations.Item.Suspended
+{
+ ///
+ /// Builds and executes requests for operations under \app\installations\{installation_id}\suspended
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class SuspendedRequestBuilder : BaseRequestBuilder
+ {
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public SuspendedRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installations/{installation_id}/suspended", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public SuspendedRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installations/{installation_id}/suspended", rawUrl)
+ {
+ }
+ ///
+ /// Removes a GitHub App installation suspension.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 404 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task DeleteAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task DeleteAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToDeleteRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "404", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ };
+ await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Suspends a GitHub App on a user, organization, or enterprise account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 404 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task PutAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task PutAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToPutRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "404", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ };
+ await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Removes a GitHub App installation suspension.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToDeleteRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToDeleteRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.DELETE, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Suspends a GitHub App on a user, organization, or enterprise account, which blocks the app from accessing the account's resources. When a GitHub App is suspended, the app's access to the GitHub API or webhook events is blocked for that account.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToPutRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToPutRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.PUT, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.Installations.Item.Suspended.SuspendedRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.Installations.Item.Suspended.SuspendedRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class SuspendedRequestBuilderDeleteRequestConfiguration : RequestConfiguration
+ {
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class SuspendedRequestBuilderPutRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/WithInstallation_ItemRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/WithInstallation_ItemRequestBuilder.cs
new file mode 100644
index 0000000..d0426d7
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/App/Installations/Item/WithInstallation_ItemRequestBuilder.cs
@@ -0,0 +1,160 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.App.Installations.Item.Access_tokens;
+using Ayllu.Github.Client.App.Installations.Item.Suspended;
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.App.Installations.Item
+{
+ ///
+ /// Builds and executes requests for operations under \app\installations\{installation_id}
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class WithInstallation_ItemRequestBuilder : BaseRequestBuilder
+ {
+ /// The access_tokens property
+ public global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensRequestBuilder Access_tokens
+ {
+ get => new global::Ayllu.Github.Client.App.Installations.Item.Access_tokens.Access_tokensRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The suspended property
+ public global::Ayllu.Github.Client.App.Installations.Item.Suspended.SuspendedRequestBuilder Suspended
+ {
+ get => new global::Ayllu.Github.Client.App.Installations.Item.Suspended.SuspendedRequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithInstallation_ItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installations/{installation_id}", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithInstallation_ItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app/installations/{installation_id}", rawUrl)
+ {
+ }
+ ///
+ /// Uninstalls a GitHub App on a user, organization, or enterprise account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/apps/apps#suspend-an-app-installation)" endpoint.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 404 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task DeleteAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task DeleteAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToDeleteRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "404", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ };
+ await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Enables an authenticated GitHub App to find an installation's information using the installation id.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 404 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "404", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ };
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.Models.Installation.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Uninstalls a GitHub App on a user, organization, or enterprise account. If you prefer to temporarily suspend an app's access to your account's resources, then we recommend the "[Suspend an app installation](https://docs.github.com/rest/apps/apps#suspend-an-app-installation)" endpoint.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToDeleteRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToDeleteRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.DELETE, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Enables an authenticated GitHub App to find an installation's information using the installation id.You must use a [JWT](https://docs.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+ ///
+ /// A
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// A
+ /// The raw URL to use for the request builder.
+ public global::Ayllu.Github.Client.App.Installations.Item.WithInstallation_ItemRequestBuilder WithUrl(string rawUrl)
+ {
+ return new global::Ayllu.Github.Client.App.Installations.Item.WithInstallation_ItemRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class WithInstallation_ItemRequestBuilderDeleteRequestConfiguration : RequestConfiguration
+ {
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class WithInstallation_ItemRequestBuilderGetRequestConfiguration : RequestConfiguration
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/AppManifests/AppManifestsRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/AppManifests/AppManifestsRequestBuilder.cs
new file mode 100644
index 0000000..3fa7bf0
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/AppManifests/AppManifestsRequestBuilder.cs
@@ -0,0 +1,48 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.AppManifests.Item;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System;
+namespace Ayllu.Github.Client.AppManifests
+{
+ ///
+ /// Builds and executes requests for operations under \app-manifests
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class AppManifestsRequestBuilder : BaseRequestBuilder
+ {
+ /// Gets an item from the Ayllu.Github.Client.appManifests.item collection
+ /// Unique identifier of the item
+ /// A
+ public global::Ayllu.Github.Client.AppManifests.Item.WithCodeItemRequestBuilder this[string position]
+ {
+ get
+ {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("code", position);
+ return new global::Ayllu.Github.Client.AppManifests.Item.WithCodeItemRequestBuilder(urlTplParams, RequestAdapter);
+ }
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AppManifestsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app-manifests", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AppManifestsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app-manifests", rawUrl)
+ {
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/AppManifests/Item/Conversions/ConversionsPostResponse.cs b/src/Ayllu.Github.Client/Github/Client/AppManifests/Item/Conversions/ConversionsPostResponse.cs
new file mode 100644
index 0000000..3e27fa6
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/AppManifests/Item/Conversions/ConversionsPostResponse.cs
@@ -0,0 +1,77 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using System.Collections.Generic;
+using System.IO;
+using System;
+namespace Ayllu.Github.Client.AppManifests.Item.Conversions
+{
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ #pragma warning disable CS1591
+ public partial class ConversionsPostResponse : global::Ayllu.Github.Client.Models.Integration, IParsable
+ #pragma warning restore CS1591
+ {
+ /// The client_secret property
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public string? ClientSecret { get; set; }
+#nullable restore
+#else
+ public string ClientSecret { get; set; }
+#endif
+ /// The pem property
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public string? Pem { get; set; }
+#nullable restore
+#else
+ public string Pem { get; set; }
+#endif
+ /// The webhook_secret property
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public string? WebhookSecret { get; set; }
+#nullable restore
+#else
+ public string WebhookSecret { get; set; }
+#endif
+ ///
+ /// Creates a new instance of the appropriate class based on discriminator value
+ ///
+ /// A
+ /// The parse node to use to read the discriminator value and create the object
+ public static new global::Ayllu.Github.Client.AppManifests.Item.Conversions.ConversionsPostResponse CreateFromDiscriminatorValue(IParseNode parseNode)
+ {
+ _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode));
+ return new global::Ayllu.Github.Client.AppManifests.Item.Conversions.ConversionsPostResponse();
+ }
+ ///
+ /// The deserialization information for the current model
+ ///
+ /// A IDictionary<string, Action<IParseNode>>
+ public override IDictionary> GetFieldDeserializers()
+ {
+ return new Dictionary>(base.GetFieldDeserializers())
+ {
+ { "client_secret", n => { ClientSecret = n.GetStringValue(); } },
+ { "pem", n => { Pem = n.GetStringValue(); } },
+ { "webhook_secret", n => { WebhookSecret = n.GetStringValue(); } },
+ };
+ }
+ ///
+ /// Serializes information the current object
+ ///
+ /// Serialization writer to use to serialize this model
+ public override void Serialize(ISerializationWriter writer)
+ {
+ _ = writer ?? throw new ArgumentNullException(nameof(writer));
+ base.Serialize(writer);
+ writer.WriteStringValue("client_secret", ClientSecret);
+ writer.WriteStringValue("pem", Pem);
+ writer.WriteStringValue("webhook_secret", WebhookSecret);
+ }
+ }
+}
+#pragma warning restore CS0618
diff --git a/src/Ayllu.Github.Client/Github/Client/AppManifests/Item/Conversions/ConversionsRequestBuilder.cs b/src/Ayllu.Github.Client/Github/Client/AppManifests/Item/Conversions/ConversionsRequestBuilder.cs
new file mode 100644
index 0000000..4e2f28b
--- /dev/null
+++ b/src/Ayllu.Github.Client/Github/Client/AppManifests/Item/Conversions/ConversionsRequestBuilder.cs
@@ -0,0 +1,127 @@
+//
+#pragma warning disable CS0618
+using Ayllu.Github.Client.Models;
+using Microsoft.Kiota.Abstractions.Extensions;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Ayllu.Github.Client.AppManifests.Item.Conversions
+{
+ ///
+ /// Builds and executes requests for operations under \app-manifests\{code}\conversions
+ ///
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
+ public partial class ConversionsRequestBuilder : BaseRequestBuilder
+ {
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public ConversionsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app-manifests/{code}/conversions", pathParameters)
+ {
+ }
+ ///
+ /// Instantiates a new and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public ConversionsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/app-manifests/{code}/conversions", rawUrl)
+ {
+ }
+ ///
+ /// Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 404 status code
+ /// When receiving a 422 status code
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task PostAsConversionsPostResponseAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task PostAsConversionsPostResponseAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#endif
+ var requestInfo = ToPostRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary>
+ {
+ { "404", global::Ayllu.Github.Client.Models.BasicError.CreateFromDiscriminatorValue },
+ { "422", global::Ayllu.Github.Client.Models.ValidationErrorSimple.CreateFromDiscriminatorValue },
+ };
+ return await RequestAdapter.SendAsync(requestInfo, global::Ayllu.Github.Client.AppManifests.Item.Conversions.ConversionsPostResponse.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://docs.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`.
+ /// API method documentation
+ ///
+ /// A
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ /// When receiving a 404 status code
+ /// When receiving a 422 status code
+ [Obsolete("This method is obsolete. Use PostAsConversionsPostResponseAsync instead.")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task PostAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ {
+#nullable restore
+#else
+ public async Task PostAsync(Action