{"owner":"Kareadita","repo":"Kavita","hasSpec":true,"specFile":".github/workflows/openapi-gen.yml","branch":"HEAD","format":"yaml","version":"3.x (YAML)","title":"Kavita","description":"","endpoints":[],"spec":"name: Generate OpenAPI Documentation\n\non:\n  push:\n    branches: [ 'develop', '!release/**' ]\n    paths:\n      - '**/*.cs'\n      - '**/*.csproj'\n  pull_request:\n    branches: [ 'develop', '!release/**' ]\n  workflow_dispatch:\n\n\njobs:\n  generate-openapi:\n    runs-on: ubuntu-latest\n    # Only run on direct pushes to develop, not PRs\n    if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.repository_owner == 'Kareadita'\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v5\n\n      - name: Setup .NET\n        uses: actions/setup-dotnet@v5\n        with:\n          dotnet-version: 10.0.x\n\n      - name: Install dependencies\n        run: dotnet restore\n\n      - name: Build project\n        run: dotnet build Kavita.Server/Kavita.Server.csproj --configuration Debug --output ./build-output\n\n\n      - name: Get Swashbuckle version\n        id: swashbuckle-version\n        run: |\n          VERSION=$(grep -o '<PackageReference Include=\"Swashbuckle.AspNetCore\" Version=\"[^\"]*\"' Kavita.Services/Kavita.Services.csproj | grep -o 'Version=\"[^\"]*\"' | cut -d'\"' -f2)\n          echo \"VERSION=$VERSION\" >> $GITHUB_OUTPUT\n          echo \"Found Swashbuckle.AspNetCore version: $VERSION\"\n\n      - name: Install matching Swashbuckle CLI tool\n        run: |\n          dotnet new tool-manifest --force\n          dotnet tool install Swashbuckle.AspNetCore.Cli --version ${{ steps.swashbuckle-version.outputs.VERSION }}\n\n      - name: Generate OpenAPI file\n        run: dotnet swagger tofile --output openapi.json ./build-output/Kavita.Server.dll v1\n\n      - name: Check for changes\n        id: git-check\n        run: |\n          git add openapi.json\n          git diff --staged --quiet openapi.json || echo \"has_changes=true\" >> $GITHUB_OUTPUT\n\n      - name: Commit and push if changed\n        if: steps.git-check.outputs.has_changes == 'true'\n        run: |\n          git config --local user.email \"action@github.com\"\n          git config --local user.name \"GitHub Action\"\n\n          git commit -m \"Update OpenAPI documentation\" openapi.json\n\n          # Pull latest changes with rebase to avoid merge commits\n          git pull --rebase origin develop\n\n          git push\n        env:\n          GITHUB_TOKEN: ${{ secrets.REPO_GHA_PAT }}\n"}