http-api-tool 1.0.6__tar.gz → 1.0.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/dependabot.yml +4 -0
  2. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/build-test-release.yaml +30 -30
  3. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/build-test.yaml +41 -41
  4. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/codeql.yml +1 -1
  5. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/openssf-scorecard.yaml +1 -1
  6. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/release-drafter.yaml +2 -2
  7. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/security-scans.yaml +2 -2
  8. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/verify-gha-versions.yaml +1 -1
  9. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.pre-commit-config.yaml +5 -5
  10. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/PKG-INFO +1 -1
  11. http_api_tool-1.0.7/SECURITY.md +77 -0
  12. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/action.yaml +46 -9
  13. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/docker/Containerfile +4 -4
  14. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/pyproject.toml +7 -1
  15. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/_version.py +2 -2
  16. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/verifier.py +2 -1
  17. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/uv.lock +13 -9
  18. http_api_tool-1.0.6/.github/workflows/autolabeler.yaml +0 -59
  19. http_api_tool-1.0.6/.github/workflows/semantic-pull-request.yaml +0 -55
  20. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.actrc +0 -0
  21. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.codespell +0 -0
  22. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.dockerignore +0 -0
  23. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.editorconfig +0 -0
  24. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/cache-config.yaml +0 -0
  25. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.gitignore +0 -0
  26. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.gitlint +0 -0
  27. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.readthedocs.yml +0 -0
  28. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.yamllint +0 -0
  29. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/CHANGELOG-v0.2.0.md +0 -0
  30. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/LICENSE +0 -0
  31. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/LICENSES/Apache-2.0.txt +0 -0
  32. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/README.md +0 -0
  33. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/REUSE.toml +0 -0
  34. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/UV-QUICK-REFERENCE.md +0 -0
  35. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/scripts/check-pip-security.py +0 -0
  36. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/scripts/generate_requirements.py +0 -0
  37. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/sonar-project.properties +0 -0
  38. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/__init__.py +0 -0
  39. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/__main__.py +0 -0
  40. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/cli.py +0 -0
  41. {http_api_tool-1.0.6 → http_api_tool-1.0.7}/tests/test_http_api_tool.py +0 -0
@@ -11,6 +11,8 @@ updates:
11
11
  open-pull-requests-limit: 15
12
12
  commit-message:
13
13
  prefix: "Chore"
14
+ cooldown:
15
+ default-days: 7
14
16
  - package-ecosystem: "pip"
15
17
  directory: "/"
16
18
  schedule:
@@ -18,3 +20,5 @@ updates:
18
20
  open-pull-requests-limit: 10
19
21
  commit-message:
20
22
  prefix: "Chore"
23
+ cooldown:
24
+ default-days: 7
@@ -32,12 +32,12 @@ jobs:
32
32
  timeout-minutes: 5
33
33
  steps:
34
34
  # yamllint disable-line rule:line-length
35
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
35
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
36
36
  with:
37
37
  egress-policy: audit
38
38
 
39
39
  # yamllint disable-line rule:line-length
40
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
40
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
41
41
  with:
42
42
  fetch-depth: 0
43
43
 
@@ -63,13 +63,13 @@ jobs:
63
63
  steps:
64
64
  # Harden the runner used by this workflow
65
65
  # yamllint disable-line rule:line-length
66
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
66
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
67
67
  with:
68
68
  egress-policy: 'audit'
69
69
 
70
70
  - name: 'Checkout repository'
71
71
  # yamllint disable-line rule:line-length
72
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
72
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
73
73
  with:
74
74
  fetch-depth: 0
75
75
  fetch-tags: true
@@ -77,7 +77,7 @@ jobs:
77
77
  - name: 'Verify pushed tag'
78
78
  id: 'tag-validate'
79
79
  # yamllint disable-line rule:line-length
80
- uses: lfreleng-actions/tag-validate-action@67695fa3d045917ca7ecc0f1d5f0cad03e231104 # v1.0.1
80
+ uses: lfreleng-actions/tag-validate-action@461d187a53b5de27b068c2cea5af972c085a4a6a # v1.0.2
81
81
  with:
82
82
  token: "${{ secrets.GITHUB_TOKEN }}"
83
83
  require_type: 'semver'
@@ -129,17 +129,17 @@ jobs:
129
129
  steps:
130
130
  # Harden the runner used by this workflow
131
131
  # yamllint disable-line rule:line-length
132
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
132
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
133
133
  with:
134
134
  egress-policy: 'audit'
135
135
 
136
136
  # yamllint disable-line rule:line-length
137
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
137
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
138
138
 
139
139
  - name: 'Build Python project'
140
140
  id: 'python-build'
141
141
  # yamllint disable-line rule:line-length
142
- uses: lfreleng-actions/python-build-action@38b9a4e7ee34e56d178f5bd248df52e41f7d496e # v1.0.6
142
+ uses: lfreleng-actions/python-build-action@5f570d5d17a7315074a824a91c6a705b6fc5c7dd # v1.1.2
143
143
  with:
144
144
  sigstore_sign: true
145
145
  attestations: true
@@ -158,16 +158,16 @@ jobs:
158
158
  steps:
159
159
  # Harden the runner used by this workflow
160
160
  # yamllint disable-line rule:line-length
161
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
161
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
162
162
  with:
163
163
  egress-policy: 'audit'
164
164
 
165
165
  # yamllint disable-line rule:line-length
166
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
166
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
167
167
 
168
168
  - name: 'Test Python project [PYTEST]'
169
169
  # yamllint disable-line rule:line-length
170
- uses: lfreleng-actions/python-test-action@92d4110d44ebc18fa4575c6b00203ff67d01a1cb # v1.0.1
170
+ uses: lfreleng-actions/python-test-action@aa753462f090101dcb0c4708e9499f55e276e373 # v1.1.2
171
171
  with:
172
172
  python_version: "${{ matrix.python-version }}"
173
173
 
@@ -185,16 +185,16 @@ jobs:
185
185
  steps:
186
186
  # Harden the runner used by this workflow
187
187
  # yamllint disable-line rule:line-length
188
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
188
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
189
189
  with:
190
190
  egress-policy: 'audit'
191
191
 
192
192
  # yamllint disable-line rule:line-length
193
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
193
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
194
194
 
195
195
  - name: 'Audit Python project'
196
196
  # yamllint disable-line rule:line-length
197
- uses: lfreleng-actions/python-audit-action@1776538e768c52c55c3c96495f6e25f0762ad28f # v0.2.6
197
+ uses: lfreleng-actions/python-audit-action@78b00a589ced3e8f70d0cd03fd592b8c92298dfd # v0.3.0
198
198
  with:
199
199
  python_version: "${{ matrix.python-version }}"
200
200
  permit_fail: "${{ vars.NO_BLOCK_AUDIT_FAIL == 'true' }}"
@@ -209,12 +209,12 @@ jobs:
209
209
  steps:
210
210
  # Harden the runner used by this workflow
211
211
  # yamllint disable-line rule:line-length
212
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
212
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
213
213
  with:
214
214
  egress-policy: 'audit'
215
215
 
216
216
  # yamllint disable-line rule:line-length
217
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
217
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
218
218
 
219
219
  - name: "Generate SBOM"
220
220
  id: sbom
@@ -226,7 +226,7 @@ jobs:
226
226
 
227
227
  - name: "Upload SBOM artifacts"
228
228
  # yamllint disable-line rule:line-length
229
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
229
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
230
230
  with:
231
231
  name: sbom-files
232
232
  path: |
@@ -264,7 +264,7 @@ jobs:
264
264
 
265
265
  - name: "Upload Grype scan results"
266
266
  # yamllint disable-line rule:line-length
267
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
267
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
268
268
  if: always()
269
269
  with:
270
270
  name: grype-scan-results
@@ -331,7 +331,7 @@ jobs:
331
331
  steps:
332
332
  # Harden the runner used by this workflow
333
333
  # yamllint disable-line rule:line-length
334
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
334
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
335
335
  with:
336
336
  egress-policy: 'audit'
337
337
 
@@ -356,22 +356,22 @@ jobs:
356
356
  steps:
357
357
  # Harden the runner used by this workflow
358
358
  # yamllint disable-line rule:line-length
359
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
359
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
360
360
  with:
361
361
  egress-policy: 'audit'
362
362
 
363
363
  # yamllint disable-line rule:line-length
364
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
364
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
365
365
 
366
366
  # Set up Docker Buildx
367
367
  - name: Set up Docker Buildx
368
368
  # yamllint disable-line rule:line-length
369
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
369
+ uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
370
370
 
371
371
  # Login to GitHub Container Registry
372
372
  - name: Login to Container Registry
373
373
  # yamllint disable-line rule:line-length
374
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
374
+ uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
375
375
  with:
376
376
  registry: ${{ env.REGISTRY }}
377
377
  username: ${{ github.actor }}
@@ -381,7 +381,7 @@ jobs:
381
381
  - name: Extract metadata
382
382
  id: meta
383
383
  # yamllint disable-line rule:line-length
384
- uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
384
+ uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
385
385
  with:
386
386
  images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
387
387
  tags: |
@@ -398,7 +398,7 @@ jobs:
398
398
  # Build and push image with comprehensive caching
399
399
  - name: Build and push Docker image
400
400
  # yamllint disable-line rule:line-length
401
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
401
+ uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
402
402
  with:
403
403
  context: .
404
404
  file: ./docker/Containerfile
@@ -438,7 +438,7 @@ jobs:
438
438
  steps:
439
439
  # Harden the runner used by this workflow
440
440
  # yamllint disable-line rule:line-length
441
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
441
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
442
442
  with:
443
443
  egress-policy: 'audit'
444
444
 
@@ -476,12 +476,12 @@ jobs:
476
476
  steps:
477
477
  # Harden the runner used by this workflow
478
478
  # yamllint disable-line rule:line-length
479
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
479
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
480
480
  with:
481
481
  egress-policy: 'audit'
482
482
 
483
483
  # yamllint disable-line rule:line-length
484
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
484
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
485
485
 
486
486
  - name: 'Download build artefacts'
487
487
  # yamllint disable-line rule:line-length
@@ -514,12 +514,12 @@ jobs:
514
514
  steps:
515
515
  # Harden the runner used by this workflow
516
516
  # yamllint disable-line rule:line-length
517
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
517
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
518
518
  with:
519
519
  egress-policy: 'audit'
520
520
 
521
521
  # yamllint disable-line rule:line-length
522
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
522
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
523
523
 
524
524
  - name: 'Check if release is already promoted'
525
525
  id: 'check-promoted'
@@ -75,21 +75,21 @@ jobs:
75
75
  steps:
76
76
  # Harden the runner
77
77
  - name: Harden Runner
78
- uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
78
+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
79
79
  with:
80
80
  egress-policy: audit
81
81
 
82
82
  - name: Checkout repository
83
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
83
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
84
84
 
85
85
  # Set up Docker Buildx with caching
86
86
  - name: Set up Docker Buildx
87
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
87
+ uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
88
88
 
89
89
  # Build Docker image with registry cache
90
90
  - name: Build Docker image
91
91
  id: build
92
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
92
+ uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
93
93
  with:
94
94
  context: .
95
95
  file: ./docker/Containerfile
@@ -127,7 +127,7 @@ jobs:
127
127
 
128
128
  steps:
129
129
  - name: Checkout repository
130
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
130
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
131
131
 
132
132
  # Set up go-httpbin for testing
133
133
  - name: Setup go-httpbin HTTPS service
@@ -202,20 +202,20 @@ jobs:
202
202
  steps:
203
203
  # Harden the runner
204
204
  - name: Harden Runner
205
- uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
205
+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
206
206
  with:
207
207
  egress-policy: audit
208
208
 
209
209
  - name: Checkout repository
210
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
210
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
211
211
 
212
212
  # Set up Docker Buildx
213
213
  - name: Set up Docker Buildx
214
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
214
+ uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
215
215
 
216
216
  # Login to GitHub Container Registry
217
217
  - name: Login to Container Registry
218
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
218
+ uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
219
219
  with:
220
220
  registry: ${{ env.REGISTRY }}
221
221
  username: ${{ github.actor }}
@@ -224,7 +224,7 @@ jobs:
224
224
  # Extract metadata for tags and labels
225
225
  - name: Extract metadata
226
226
  id: meta
227
- uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
227
+ uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
228
228
  with:
229
229
  images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
230
230
  tags: |
@@ -238,7 +238,7 @@ jobs:
238
238
 
239
239
  # Build and push image with comprehensive caching
240
240
  - name: Build and push Docker image
241
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
241
+ uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
242
242
  with:
243
243
  context: .
244
244
  file: ./docker/Containerfile
@@ -279,11 +279,11 @@ jobs:
279
279
  GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
280
280
  steps:
281
281
  # Harden the runner used by this workflow
282
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
282
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
283
283
  with:
284
284
  egress-policy: 'audit'
285
285
 
286
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
286
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
287
287
 
288
288
  # Setup Python with enhanced caching
289
289
  - name: Set up Python
@@ -297,7 +297,7 @@ jobs:
297
297
 
298
298
  # Cache UV dependencies
299
299
  - name: Cache UV dependencies
300
- uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
300
+ uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
301
301
  with:
302
302
  path: |
303
303
  ~/.cache/uv
@@ -310,7 +310,7 @@ jobs:
310
310
  - name: 'Build Python project'
311
311
  id: python-build
312
312
  # yamllint disable-line rule:line-length
313
- uses: lfreleng-actions/python-build-action@38b9a4e7ee34e56d178f5bd248df52e41f7d496e # v1.0.6
313
+ uses: lfreleng-actions/python-build-action@5f570d5d17a7315074a824a91c6a705b6fc5c7dd # v1.1.2
314
314
 
315
315
  # Python tests with matrix strategy (after container pipeline)
316
316
  python-tests:
@@ -326,11 +326,11 @@ jobs:
326
326
  timeout-minutes: 12
327
327
  steps:
328
328
  # Harden the runner used by this workflow
329
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
329
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
330
330
  with:
331
331
  egress-policy: audit
332
332
 
333
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
333
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
334
334
 
335
335
  # Setup Python with comprehensive caching
336
336
  - name: Set up Python
@@ -344,7 +344,7 @@ jobs:
344
344
 
345
345
  # Cache UV test dependencies
346
346
  - name: Cache UV test dependencies
347
- uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
347
+ uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
348
348
  with:
349
349
  path: |
350
350
  ~/.cache/uv
@@ -357,7 +357,7 @@ jobs:
357
357
 
358
358
  - name: "Python tests [pytest] ${{ matrix.python-version }}"
359
359
  # yamllint disable-line rule:line-length
360
- uses: lfreleng-actions/python-test-action@92d4110d44ebc18fa4575c6b00203ff67d01a1cb # v1.0.1
360
+ uses: lfreleng-actions/python-test-action@aa753462f090101dcb0c4708e9499f55e276e373 # v1.1.2
361
361
  with:
362
362
  python_version: ${{ matrix.python-version }}
363
363
 
@@ -375,11 +375,11 @@ jobs:
375
375
  timeout-minutes: 10
376
376
  steps:
377
377
  # Harden the runner used by this workflow
378
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
378
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
379
379
  with:
380
380
  egress-policy: 'audit'
381
381
 
382
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
382
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
383
383
 
384
384
  # Setup Python with comprehensive caching
385
385
  - name: Set up Python
@@ -393,7 +393,7 @@ jobs:
393
393
 
394
394
  # Cache UV audit dependencies
395
395
  - name: Cache UV audit dependencies
396
- uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
396
+ uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
397
397
  with:
398
398
  path: |
399
399
  ~/.cache/uv
@@ -406,7 +406,7 @@ jobs:
406
406
 
407
407
  - name: "Audit dependencies ${{ matrix.python-version }}"
408
408
  # yamllint disable-line rule:line-length
409
- uses: lfreleng-actions/python-audit-action@1776538e768c52c55c3c96495f6e25f0762ad28f # v0.2.6
409
+ uses: lfreleng-actions/python-audit-action@78b00a589ced3e8f70d0cd03fd592b8c92298dfd # v0.3.0
410
410
  with:
411
411
  python_version: "${{ matrix.python-version }}"
412
412
 
@@ -422,11 +422,11 @@ jobs:
422
422
  timeout-minutes: 15
423
423
  steps:
424
424
  # Harden the runner used by this workflow
425
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
425
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
426
426
  with:
427
427
  egress-policy: 'audit'
428
428
 
429
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
429
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
430
430
 
431
431
  # Setup Python with comprehensive caching
432
432
  - name: Set up Python
@@ -440,7 +440,7 @@ jobs:
440
440
 
441
441
  # Cache UV CLI dependencies
442
442
  - name: Cache UV CLI dependencies
443
- uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
443
+ uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
444
444
  with:
445
445
  path: |
446
446
  ~/.cache/uv
@@ -451,7 +451,7 @@ jobs:
451
451
  uv-cli-${{ runner.os }}-
452
452
 
453
453
  - name: Install UV
454
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
454
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
455
455
 
456
456
  - name: Install project dependencies
457
457
  run: |
@@ -543,11 +543,11 @@ jobs:
543
543
  timeout-minutes: 10
544
544
  steps:
545
545
  # Harden the runner used by this workflow
546
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
546
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
547
547
  with:
548
548
  egress-policy: 'audit'
549
549
 
550
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
550
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
551
551
 
552
552
  # Start go-httpbin service for testing
553
553
  - name: Setup go-httpbin service
@@ -602,11 +602,11 @@ jobs:
602
602
  timeout-minutes: 10
603
603
  steps:
604
604
  # Harden the runner used by this workflow
605
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
605
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
606
606
  with:
607
607
  egress-policy: 'audit'
608
608
 
609
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
609
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
610
610
 
611
611
  # Start go-httpbin service for testing
612
612
  - name: Setup go-httpbin service
@@ -715,11 +715,11 @@ jobs:
715
715
  steps:
716
716
  # Harden the runner used by this workflow
717
717
  - name: Harden Runner
718
- uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
718
+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
719
719
  with:
720
720
  egress-policy: audit
721
721
 
722
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
722
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
723
723
 
724
724
  # Start go-httpbin service for testing
725
725
  - name: Setup go-httpbin service
@@ -784,19 +784,19 @@ jobs:
784
784
  steps:
785
785
  # Harden the runner used by this workflow
786
786
  - name: Harden Runner
787
- uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
787
+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
788
788
  with:
789
789
  egress-policy: audit
790
790
 
791
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
791
+ - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
792
792
 
793
793
  # Set up Docker Buildx
794
794
  - name: Set up Docker Buildx
795
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
795
+ uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
796
796
 
797
797
  # Login to Container Registry
798
798
  - name: Login to Container Registry
799
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
799
+ uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
800
800
  with:
801
801
  registry: ${{ env.REGISTRY }}
802
802
  username: ${{ github.actor }}
@@ -854,12 +854,12 @@ jobs:
854
854
  steps:
855
855
  # Harden the runner
856
856
  - name: Harden Runner
857
- uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
857
+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
858
858
  with:
859
859
  egress-policy: audit
860
860
 
861
861
  - name: Checkout repository
862
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
862
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
863
863
 
864
864
  # Setup Python with caching
865
865
  - name: Set up Python
@@ -872,7 +872,7 @@ jobs:
872
872
 
873
873
  # Cache UV dependencies
874
874
  - name: Cache UV dependencies
875
- uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
875
+ uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
876
876
  with:
877
877
  path: |
878
878
  ./.venv
@@ -885,7 +885,7 @@ jobs:
885
885
 
886
886
  # Install UV
887
887
  - name: Install UV
888
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
888
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
889
889
 
890
890
  # Install project dependencies with dev extras (includes bandit)
891
891
  - name: Install project dependencies
@@ -25,7 +25,7 @@ jobs:
25
25
  scan:
26
26
  name: 'Audit Repository'
27
27
  # yamllint disable-line rule:line-length
28
- uses: lfit/releng-reusable-workflows/.github/workflows/reuse-python-codeql.yaml@37bbdea5cca2f21e502f7ff580306c78307d1d41 # v0.3.1
28
+ uses: lfit/releng-reusable-workflows/.github/workflows/reuse-python-codeql.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
29
29
  permissions:
30
30
  security-events: write
31
31
  # required to fetch internal or private CodeQL packs
@@ -32,7 +32,7 @@ jobs:
32
32
  openssf-scorecard:
33
33
  name: "OpenSSF Scorecard"
34
34
  # yamllint disable-line rule:line-length
35
- uses: lfit/releng-reusable-workflows/.github/workflows/reuse-openssf-scorecard.yaml@37bbdea5cca2f21e502f7ff580306c78307d1d41 # v0.3.1
35
+ uses: lfit/releng-reusable-workflows/.github/workflows/reuse-openssf-scorecard.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
36
36
  permissions:
37
37
  # Needed to upload the results to code-scanning dashboard.
38
38
  security-events: write
@@ -27,9 +27,9 @@ jobs:
27
27
  steps:
28
28
  # Harden the runner used by this workflow
29
29
  # yamllint disable-line rule:line-length
30
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
30
+ - uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
31
31
  with:
32
32
  egress-policy: 'audit'
33
33
 
34
34
  # yamllint disable-line rule:line-length
35
- - uses: release-drafter/release-drafter@5de93583980a40bd78603b6dfdcda5b4df377b32 # v7.2.0
35
+ - uses: release-drafter/release-drafter@693d20e7c1ce1a81d3a41962f85914253b518449 # v7.3.1
@@ -32,7 +32,7 @@ jobs:
32
32
  sonatype-lifecycle:
33
33
  name: "Sonatype Lifecycle"
34
34
  # yamllint disable-line rule:line-length
35
- uses: lfit/releng-reusable-workflows/.github/workflows/reuse-sonatype-lifecycle.yaml@37bbdea5cca2f21e502f7ff580306c78307d1d41 # v0.3.1
35
+ uses: lfit/releng-reusable-workflows/.github/workflows/reuse-sonatype-lifecycle.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
36
36
  secrets:
37
37
  NEXUS_IQ_PASSWORD: ${{ secrets.NEXUS_IQ_PASSWORD }}
38
38
 
@@ -40,7 +40,7 @@ jobs:
40
40
  sonarqube-cloud:
41
41
  name: "SonarQube Cloud"
42
42
  # yamllint disable-line rule:line-length
43
- uses: lfit/releng-reusable-workflows/.github/workflows/reuse-sonarqube-cloud.yaml@37bbdea5cca2f21e502f7ff580306c78307d1d41 # v0.3.1
43
+ uses: lfit/releng-reusable-workflows/.github/workflows/reuse-sonarqube-cloud.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
44
44
  permissions:
45
45
  # Needed to upload the results to code-scanning dashboard.
46
46
  security-events: write
@@ -24,6 +24,6 @@ jobs:
24
24
  verify:
25
25
  name: Check GitHub Actions
26
26
  # yamllint disable-line rule:line-length
27
- uses: lfit/releng-reusable-workflows/.github/workflows/reuse-verify-github-actions.yaml@37bbdea5cca2f21e502f7ff580306c78307d1d41 # v0.3.1
27
+ uses: lfit/releng-reusable-workflows/.github/workflows/reuse-verify-github-actions.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
28
28
  permissions:
29
29
  contents: read
@@ -52,7 +52,7 @@ repos:
52
52
  args: [--config-file=.yamllint]
53
53
 
54
54
  - repo: https://github.com/astral-sh/ruff-pre-commit
55
- rev: c60c980e561ed3e73101667fe8365c609d19a438 # frozen: v0.15.9
55
+ rev: 3b3f7c3f57fe9925356faf5fe6230835138be230 # frozen: v0.15.17
56
56
  hooks:
57
57
  - id: ruff
58
58
  # Currently only src and tests contain Python files
@@ -65,7 +65,7 @@ repos:
65
65
  files: ^(src|tests)/.+\.py$
66
66
 
67
67
  - repo: https://github.com/pre-commit/mirrors-mypy
68
- rev: 8e5c80792e2ec0c87804d8ef915bf35e2caea6da # frozen: v1.20.0
68
+ rev: d2823d321df3af8f878f7ee3414dc94d037145b9 # frozen: v2.1.0
69
69
  hooks:
70
70
  - id: mypy
71
71
  additional_dependencies: [types-pycurl]
@@ -116,18 +116,18 @@ repos:
116
116
  args: ["--ignore-words=.codespell"]
117
117
 
118
118
  - repo: https://github.com/DetachHead/basedpyright-prek-mirror
119
- rev: d58fe7fc44458fa7e41e2d38c04598a3c87833f2 # frozen: 1.38.3
119
+ rev: 5f6f2cb9fa8aec15105f77fd21e8dfe29838b16d # frozen: 1.39.8
120
120
  hooks:
121
121
  - id: basedpyright
122
122
 
123
123
  - repo: https://github.com/modeseven-lfit/gha-workflow-linter
124
- rev: a7caf8f3a1a05688d1cee46615ff94def617e5a3 # frozen: v1.0.2
124
+ rev: 1a307fd9eed98268b11300ab86b1a107e1d3d1ae # frozen: v1.1.1
125
125
  hooks:
126
126
  - id: gha-workflow-linter
127
127
  args: [lint, .]
128
128
 
129
129
  - repo: https://github.com/python-jsonschema/check-jsonschema.git
130
- rev: ed81924a8b1cecdaa570b072528fa80c9c4d6ccd # frozen: 0.37.1
130
+ rev: 8ef330cbb7204d388aa7a620f9549bcea8009663 # frozen: 0.37.3
131
131
  hooks:
132
132
  # - id: check-github-actions
133
133
  - id: check-github-workflows
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: http-api-tool
3
- Version: 1.0.6
3
+ Version: 1.0.7
4
4
  Summary: A Python HTTP/HTTPS API testing tool for GitHub Actions and CLI usage
5
5
  Project-URL: Homepage, https://github.com/lfreleng-actions/http-api-tool-docker
6
6
  Project-URL: Repository, https://github.com/lfreleng-actions/http-api-tool-docker
@@ -0,0 +1,77 @@
1
+ <!--
2
+ SPDX-License-Identifier: Apache-2.0
3
+ SPDX-FileCopyrightText: 2026 The Linux Foundation
4
+ -->
5
+
6
+ # Security Policy
7
+
8
+ This document describes the security policy for this repository, including
9
+ which versions receive security updates and how to report vulnerabilities.
10
+
11
+ ## Supported Versions
12
+
13
+ Maintainers develop and merge security fixes on the default branch
14
+ (`main`) and publish those fixes in the latest tagged release. Older
15
+ releases and tags do not receive security updates. Users should track
16
+ the latest tagged release for security patches.
17
+
18
+ | Version | Supported |
19
+ | --------------------- | ------------------ |
20
+ | Latest tagged release | :white_check_mark: |
21
+ | Older releases/tags | :x: |
22
+
23
+ ## Reporting a Vulnerability
24
+
25
+ If you discover a security vulnerability in this project, please report it
26
+ **privately** so that maintainers can investigate and release a fix before
27
+ the issue becomes publicly known.
28
+
29
+ ### Preferred: GitHub Private Vulnerability Reporting
30
+
31
+ Use GitHub's private vulnerability reporting feature:
32
+
33
+ 1. Navigate to the **Security** tab of this repository.
34
+ 2. Click **Report a vulnerability**.
35
+ 3. Provide as much detail as possible (see below).
36
+
37
+ This creates a private advisory visible to maintainers.
38
+
39
+ ### Alternative: Email
40
+
41
+ If you cannot use GitHub's private reporting, send an email to the Linux
42
+ Foundation Release Engineering team at:
43
+
44
+ - **<releng@linuxfoundation.org>**
45
+
46
+ Please do **not** report security vulnerabilities through public GitHub
47
+ issues, discussions, or pull requests.
48
+
49
+ ### What to Include
50
+
51
+ To help maintainers triage and resolve the report, please include:
52
+
53
+ - A clear description of the vulnerability and its potential impact.
54
+ - Steps to reproduce the issue (proof-of-concept code or commands).
55
+ - The affected version(s), commit SHA, or release tag.
56
+ - Any known mitigations or workarounds.
57
+ - Your name and contact details for follow-up (optional).
58
+
59
+ ## Response Process
60
+
61
+ Maintainers will acknowledge receipt of vulnerability reports within
62
+ **5 business days**. We aim to:
63
+
64
+ 1. Confirm the vulnerability and determine its severity.
65
+ 2. Develop and test a fix in a private branch or advisory.
66
+ 3. Coordinate a disclosure timeline with the reporter.
67
+ 4. Release a patched version and publish a security advisory.
68
+
69
+ We follow a responsible disclosure process and credit reporters in the
70
+ published advisory unless they request to remain anonymous.
71
+
72
+ ## Scope
73
+
74
+ This policy covers the source code, configuration, and documentation
75
+ in this repository. Please report vulnerabilities in upstream
76
+ dependencies to their respective maintainers; this project will update
77
+ affected dependencies once fixes become available.
@@ -151,16 +151,22 @@ runs:
151
151
  # Validate deploy input
152
152
  - name: Validate deploy input
153
153
  shell: bash
154
+ env:
155
+ INPUT_DEPLOY: ${{ inputs.deploy }}
154
156
  run: |
155
- if [[ "${{ inputs.deploy }}" != "uvx" && "${{ inputs.deploy }}" != "docker" ]]; then
156
- echo "::error::Invalid deploy input: '${{ inputs.deploy }}'. Must be 'uvx' or 'docker'."
157
+ if [[ "$INPUT_DEPLOY" != "uvx" && "$INPUT_DEPLOY" != "docker" ]]; then
158
+ # Strip CR/LF from the user value so it cannot inject additional
159
+ # workflow commands/annotations into the log command stream.
160
+ deploy_safe="${INPUT_DEPLOY//$'\n'/}"
161
+ deploy_safe="${deploy_safe//$'\r'/}"
162
+ echo "::error::Invalid deploy input: '$deploy_safe'. Must be 'uvx' or 'docker'."
157
163
  exit 1
158
164
  fi
159
165
 
160
166
  # UVX deployment path (default)
161
167
  - name: Install uv for uvx deployment
162
168
  if: inputs.deploy == 'uvx'
163
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
169
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
164
170
  with:
165
171
  enable-cache: false
166
172
  ignore-empty-workdir: true
@@ -193,11 +199,12 @@ runs:
193
199
  INPUT_CONNECTION_REUSE: ${{ inputs.connection_reuse }}
194
200
  INPUT_DEBUG: ${{ inputs.debug }}
195
201
  INPUT_FAIL_ON_TIMEOUT: ${{ inputs.fail_on_timeout }}
202
+ INPUT_USE_LOCAL_CODE: ${{ inputs.use_local_code }}
196
203
  GITHUB_ACTIONS: 'true'
197
204
  GITHUB_OUTPUT: ${{ env.GITHUB_OUTPUT }}
198
205
  GITHUB_STEP_SUMMARY: ${{ env.GITHUB_STEP_SUMMARY }}
199
206
  run: |
200
- if [[ "${{ inputs.use_local_code }}" == "true" ]]; then
207
+ if [[ "$INPUT_USE_LOCAL_CODE" == "true" ]]; then
201
208
  if ! command -v http-api-tool &> /dev/null; then
202
209
  echo "::error::http-api-tool is not installed." \
203
210
  "Please install it first by running 'uv pip install --system -e .'" \
@@ -257,12 +264,42 @@ runs:
257
264
  INPUT_FAIL_ON_TIMEOUT: ${{ inputs.fail_on_timeout }}
258
265
  GITHUB_ACTIONS: 'true'
259
266
  run: |
260
- # Build volume mounts for Docker
261
- VOLUME_MOUNTS="-v $GITHUB_OUTPUT:$GITHUB_OUTPUT"
267
+ # Build volume mounts as an array so each '-v' entry is passed as a
268
+ # single quoted argument and cannot inject extra docker flags/mounts.
269
+ VOLUME_MOUNTS=(-v "$GITHUB_OUTPUT:$GITHUB_OUTPUT")
262
270
 
263
271
  # Mount CA bundle if specified
264
- if [ -n "${{ inputs.ca_bundle_path }}" ] && [ -f "${{ inputs.ca_bundle_path }}" ]; then
265
- VOLUME_MOUNTS="$VOLUME_MOUNTS -v ${{ inputs.ca_bundle_path }}:${{ inputs.ca_bundle_path }}:ro"
272
+ if [ -n "$INPUT_CA_BUNDLE_PATH" ] && [ -f "$INPUT_CA_BUNDLE_PATH" ]; then
273
+ # Reject traversal, shell metacharacters, whitespace, and ':'.
274
+ # ':' is the docker volume field separator, so allowing it would let
275
+ # a caller append extra mount options (e.g. ':rw') or fields;
276
+ # whitespace would break argument boundaries.
277
+ if printf '%s' "$INPUT_CA_BUNDLE_PATH" \
278
+ | grep -qE '\.\.(/|$)|[;|&$`:[:space:]]'; then
279
+ echo "::error::ca_bundle_path contains invalid characters"
280
+ exit 1
281
+ fi
282
+ # Constrain to an allowlist of safe roots: the workspace, the runner
283
+ # temp dir, or standard system CA-certificate locations. This blocks
284
+ # mounting arbitrary sensitive host files (e.g. /etc/shadow) while
285
+ # still supporting genuine CA bundles.
286
+ ca_real="$(readlink -f -- "$INPUT_CA_BUNDLE_PATH")"
287
+ ca_allowed=false
288
+ for root in "$GITHUB_WORKSPACE" "$RUNNER_TEMP" \
289
+ /etc/ssl /etc/pki /etc/ca-certificates \
290
+ /usr/share/ca-certificates /usr/local/share/ca-certificates; do
291
+ [ -n "$root" ] || continue
292
+ root_real="$(readlink -f -- "$root" 2>/dev/null)" || continue
293
+ case "$ca_real/" in
294
+ "$root_real"/*) ca_allowed=true; break ;;
295
+ esac
296
+ done
297
+ if [ "$ca_allowed" != true ]; then
298
+ echo "::error::ca_bundle_path must be within the workspace, the" \
299
+ "runner temp dir, or a standard CA-certificate location"
300
+ exit 1
301
+ fi
302
+ VOLUME_MOUNTS+=(-v "${ca_real}:${ca_real}:ro")
266
303
  fi
267
304
 
268
305
  docker run --rm \
@@ -292,7 +329,7 @@ runs:
292
329
  -e INPUT_FAIL_ON_TIMEOUT \
293
330
  -e GITHUB_ACTIONS \
294
331
  -e GITHUB_OUTPUT \
295
- $VOLUME_MOUNTS \
332
+ "${VOLUME_MOUNTS[@]}" \
296
333
  http-api-tool:${{ github.run_id }}
297
334
 
298
335
  - name: Cleanup Docker image
@@ -2,7 +2,7 @@
2
2
  # SPDX-FileCopyrightText: 2025 The Linux Foundation
3
3
 
4
4
  # UV version and checksums for secure installation with architecture-aware download
5
- # uv 0.8.4 - https://github.com/astral-sh/uv/releases/tag/0.8.4
5
+ # uv 0.11.20 - https://github.com/astral-sh/uv/releases/tag/0.11.20
6
6
  #
7
7
  # This Containerfile automatically detects the target architecture (amd64/arm64) and
8
8
  # downloads the appropriate uv binary with checksum validation to prevent MITM
@@ -11,9 +11,9 @@
11
11
  # To override the version: docker build --build-arg UV_VERSION=0.8.3 .
12
12
  # Supports: linux/amd64 (Intel/AMD x86_64) and linux/arm64 (Apple Silicon/ARM64)
13
13
  ARG VERSION=0.0.0
14
- ARG UV_VERSION=0.8.4
15
- ARG UV_CHECKSUM_AMD64=eb61d39fdc6ea21a6d00a24b50376102168240849c5022d3eba331f972ba3934
16
- ARG UV_CHECKSUM_ARM64=d42742a28ce161e72cce45c8c5621ee23317e30d461f595c382acf0f9b331f20
14
+ ARG UV_VERSION=0.11.20
15
+ ARG UV_CHECKSUM_AMD64=5de211d9278af365497d387e25316907b3b4a9f25b4476dd6dbf238d6f85cff3
16
+ ARG UV_CHECKSUM_ARM64=c8b5b7f9c804b640da0bb66cddddf0a00ce971f64d8076622d70bd141bc80857
17
17
 
18
18
  # Cache bust: Migrated from PDM to UV - change this value to force rebuild
19
19
  ARG CACHE_BUST=2025-12-11-uv-migration
@@ -113,7 +113,7 @@ markers = [
113
113
  ]
114
114
 
115
115
  [tool.coverage.run]
116
- source = ["src/http_api_tool"]
116
+ source = ["http_api_tool"]
117
117
  omit = [
118
118
  "*/tests/*",
119
119
  "*/test_*",
@@ -191,3 +191,9 @@ pythonVersion = "3.10"
191
191
  typeCheckingMode = "standard"
192
192
  reportMissingImports = "warning"
193
193
  reportUninitializedInstanceVariable = "warning"
194
+
195
+ [tool.uv]
196
+ # Supply-chain cooldown: do not resolve anything published in the last
197
+ # 7 days (rolling window; uv records it as a relative span in uv.lock).
198
+ # Requires uv >= 0.9.17 for the relative-duration ("7 days") form.
199
+ exclude-newer = "7 days"
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.0.6'
22
- __version_tuple__ = version_tuple = (1, 0, 6)
21
+ __version__ = version = '1.0.7'
22
+ __version_tuple__ = version_tuple = (1, 0, 7)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -509,7 +509,8 @@ class HTTPAPITester:
509
509
  }
510
510
 
511
511
  except pycurl.error as e:
512
- error_code, error_msg = e.args
512
+ error_code = e.args[0] if len(e.args) > 0 else 0
513
+ error_msg = e.args[1] if len(e.args) > 1 else str(e)
513
514
  return {
514
515
  "success": False,
515
516
  "http_code": 0,
@@ -2,6 +2,10 @@ version = 1
2
2
  revision = 3
3
3
  requires-python = ">=3.10"
4
4
 
5
+ [options]
6
+ exclude-newer = "0001-01-01T00:00:00Z" # This has no effect and is included for backwards compatibility when using relative exclude-newer values.
7
+ exclude-newer-span = "P7D"
8
+
5
9
  [[package]]
6
10
  name = "attrs"
7
11
  version = "25.4.0"
@@ -412,11 +416,11 @@ wheels = [
412
416
 
413
417
  [[package]]
414
418
  name = "idna"
415
- version = "3.11"
419
+ version = "3.15"
416
420
  source = { registry = "https://pypi.org/simple" }
417
- sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" }
421
+ sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" }
418
422
  wheels = [
419
- { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
423
+ { url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" },
420
424
  ]
421
425
 
422
426
  [[package]]
@@ -681,7 +685,7 @@ wheels = [
681
685
 
682
686
  [[package]]
683
687
  name = "pytest"
684
- version = "8.4.2"
688
+ version = "9.0.3"
685
689
  source = { registry = "https://pypi.org/simple" }
686
690
  dependencies = [
687
691
  { name = "colorama", marker = "sys_platform == 'win32'" },
@@ -692,9 +696,9 @@ dependencies = [
692
696
  { name = "pygments" },
693
697
  { name = "tomli", marker = "python_full_version < '3.11'" },
694
698
  ]
695
- sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" }
699
+ sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" }
696
700
  wheels = [
697
- { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" },
701
+ { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" },
698
702
  ]
699
703
 
700
704
  [[package]]
@@ -958,11 +962,11 @@ wheels = [
958
962
 
959
963
  [[package]]
960
964
  name = "urllib3"
961
- version = "2.6.3"
965
+ version = "2.7.0"
962
966
  source = { registry = "https://pypi.org/simple" }
963
- sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" }
967
+ sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" }
964
968
  wheels = [
965
- { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },
969
+ { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" },
966
970
  ]
967
971
 
968
972
  [[package]]
@@ -1,59 +0,0 @@
1
- ---
2
- # SPDX-FileCopyrightText: 2025 The Linux Foundation
3
- # SPDX-License-Identifier: Apache-2.0
4
-
5
- name: 'Autolabeler'
6
-
7
- # yamllint disable-line rule:truthy
8
- on:
9
- # pull_request is required for autolabeler
10
- pull_request:
11
- types:
12
- - opened
13
- - synchronize
14
- - reopened
15
- # pull_request_target is required for autolabeler on PRs from forks
16
- pull_request_target:
17
- types:
18
- - opened
19
- - synchronize
20
- - reopened
21
-
22
- permissions: {}
23
-
24
- concurrency:
25
- # yamllint disable-line rule:line-length
26
- group: ${{ format('al-{0}-pr-{1}', github.event_name, github.event.pull_request.number) }}
27
- cancel-in-progress: true
28
-
29
- jobs:
30
- autolabel:
31
- name: 'Autolabel PR'
32
- # Run on pull_request_target for forks, or pull_request for same-repo PRs
33
- # This prevents duplicate runs for same-repo PRs
34
- # yamllint disable rule:line-length
35
- if: >
36
- (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.fork) ||
37
- (github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork)
38
- # yamllint enable rule:line-length
39
- # SECURITY: pull_request_target with write permissions is safe here because:
40
- # 1. This workflow does NOT checkout any code from the PR
41
- # 2. The workflow code itself runs from the base branch (not the fork)
42
- # 3. release-drafter only makes GitHub API calls (no code execution)
43
- # 4. pull_request_target is needed ONLY for autolabeling fork PRs
44
- permissions:
45
- # write permission is required for autolabeler
46
- pull-requests: write
47
- # read is sufficient; autolabeler does not create releases
48
- contents: read
49
- runs-on: 'ubuntu-latest'
50
- timeout-minutes: 3
51
- steps:
52
- # Harden the runner used by this workflow
53
- # yamllint disable-line rule:line-length
54
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
55
- with:
56
- egress-policy: 'audit'
57
-
58
- # yamllint disable-line rule:line-length
59
- - uses: release-drafter/release-drafter/autolabeler@5de93583980a40bd78603b6dfdcda5b4df377b32 # v7.2.0
@@ -1,55 +0,0 @@
1
- ---
2
- # SPDX-License-Identifier: Apache-2.0
3
- # SPDX-FileCopyrightText: 2025 The Linux Foundation
4
-
5
- name: '🛠️ Semantic Pull Request'
6
-
7
- # yamllint disable-line rule:truthy
8
- on:
9
- # Not supported when workflow contains: amannn/action-semantic-pull-request
10
- # workflow_dispatch:
11
- pull_request:
12
- types: [opened, reopened, edited, synchronize]
13
-
14
- permissions: {}
15
-
16
- concurrency:
17
- group: ${{ github.workflow }}-${{ github.ref }}
18
- cancel-in-progress: true
19
-
20
- jobs:
21
- semantic-pull-request:
22
- name: "Semantic Pull Request"
23
- permissions:
24
- contents: read
25
- runs-on: ubuntu-24.04
26
- timeout-minutes: 3
27
- steps:
28
- # Harden the runner used by this workflow
29
- # yamllint disable-line rule:line-length
30
- - uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
31
- with:
32
- egress-policy: audit
33
-
34
- - name: "Validate pull request title"
35
- # yamllint disable-line rule:line-length
36
- uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
37
- env:
38
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39
- with:
40
- # Requires the type to be capitalised,
41
- # but accept any of the standard types
42
- types: |
43
- Fix
44
- Feat
45
- Chore
46
- Docs
47
- Style
48
- Refactor
49
- Perf
50
- Test
51
- Revert
52
- CI
53
- Build
54
- validateSingleCommit: true
55
- validateSingleCommitMatchesPrTitle: true
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes