{"owner":"polarsource","repo":"polar","hasSpec":true,"specFile":".github/workflows/openapi-diff.yml","branch":"HEAD","format":"yaml","version":"Unknown","title":"polar","description":"","endpoints":[],"spec":"name: OpenAPI Diff\n\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n    paths:\n      - \"server/polar/**\"\n\nconcurrency:\n  group: openapi-diff-${{ github.event.pull_request.number }}\n  cancel-in-progress: true\n\njobs:\n  openapi-diff:\n    name: \"OpenAPI Diff\"\n    runs-on: blacksmith-4vcpu-ubuntu-2404\n    permissions:\n      contents: read\n      pull-requests: write\n\n    env:\n      POLAR_EMAIL_RENDERER_BINARY_PATH: \"/tmp/email-renderer\"\n      POLAR_PYDANTIC_AI_GATEWAY_API_KEY: \"POLAR_PYDANTIC_AI_GATEWAY_API_KEY\"\n\n    steps:\n      - name: Checkout PR (head)\n        uses: actions/checkout@v7.0.1\n        with:\n          path: head\n\n      - name: Checkout base branch\n        uses: actions/checkout@v7.0.1\n        with:\n          ref: ${{ github.base_ref }}\n          path: base\n\n      - name: Install uv\n        uses: astral-sh/setup-uv@v9.0.0\n        with:\n          enable-cache: true\n\n      - name: Set up Python\n        uses: actions/setup-python@v7.0.0\n        with:\n          python-version-file: \"head/server/pyproject.toml\"\n\n      - name: Create mock email renderer binary\n        run: |\n          touch /tmp/email-renderer\n\n      - name: Install head dependencies\n        working-directory: ./head/server\n        run: |\n          uv sync --frozen\n          uv run task generate_dev_jwks\n\n      - name: Install base dependencies\n        working-directory: ./base/server\n        run: |\n          uv sync --frozen\n          uv run task generate_dev_jwks\n\n      - name: Generate OpenAPI schema from head\n        working-directory: ./head/server\n        run: uv run -m scripts.generate_openapi > ${{ github.workspace }}/head.json\n\n      - name: Generate OpenAPI schema from base\n        working-directory: ./base/server\n        run: uv run -m scripts.generate_openapi > ${{ github.workspace }}/base.json\n\n      - name: Generate OpenAPI diff\n        id: diff\n        run: |\n          if uvx openapi-kit diff ${{ github.workspace }}/base.json ${{ github.workspace }}/head.json --markdown-heading-level 3 > /tmp/diff.md; then\n            echo \"has_changes=false\" >> $GITHUB_OUTPUT\n          else\n            echo \"has_changes=true\" >> $GITHUB_OUTPUT\n          fi\n          echo \"content<<EOF\" >> $GITHUB_OUTPUT\n          cat /tmp/diff.md >> $GITHUB_OUTPUT\n          echo \"EOF\" >> $GITHUB_OUTPUT\n\n      - name: Find existing comment\n        uses: peter-evans/find-comment@v4\n        id: fc\n        with:\n          issue-number: ${{ github.event.pull_request.number }}\n          body-includes: \"<!-- __OPENAPI_DIFF -->\"\n\n      - name: Create or update PR comment\n        uses: peter-evans/create-or-update-comment@v5\n        with:\n          comment-id: ${{ steps.fc.outputs.comment-id }}\n          issue-number: ${{ github.event.pull_request.number }}\n          edit-mode: replace\n          body: |\n            <!-- __OPENAPI_DIFF -->\n            ## OpenAPI Changes\n\n            ${{ steps.diff.outputs.has_changes == 'true' && steps.diff.outputs.content || '_No changes detected in the OpenAPI schema._' }}\n"}