Skip to content

release: 4.4.0 #2664

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 305 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
305 commits
Select commit Hold shift + click to select a range
e6f4984
codegen metadata
stainless-app[bot] Jun 23, 2025
b77ac30
codegen metadata
stainless-app[bot] Jun 23, 2025
3743d11
codegen metadata
stainless-app[bot] Jun 23, 2025
a8296be
codegen metadata
stainless-app[bot] Jun 23, 2025
752214a
codegen metadata
stainless-app[bot] Jun 24, 2025
79324cb
codegen metadata
stainless-app[bot] Jun 24, 2025
138db78
codegen metadata
stainless-app[bot] Jun 24, 2025
bc47aad
codegen metadata
stainless-app[bot] Jun 24, 2025
a3a9ea6
codegen metadata
stainless-app[bot] Jun 24, 2025
8274221
codegen metadata
stainless-app[bot] Jun 24, 2025
9b1a0da
codegen metadata
stainless-app[bot] Jun 24, 2025
5e53e66
codegen metadata
stainless-app[bot] Jun 24, 2025
8619b77
codegen metadata
stainless-app[bot] Jun 24, 2025
2bf9737
feat(api): api update
stainless-app[bot] Jun 24, 2025
b69ea15
codegen metadata
stainless-app[bot] Jun 24, 2025
35bd023
codegen metadata
stainless-app[bot] Jun 24, 2025
d78e2ac
codegen metadata
stainless-app[bot] Jun 24, 2025
ba49769
codegen metadata
stainless-app[bot] Jun 24, 2025
29baf9d
codegen metadata
stainless-app[bot] Jun 24, 2025
835ee91
codegen metadata
stainless-app[bot] Jun 24, 2025
fd9a98d
codegen metadata
stainless-app[bot] Jun 24, 2025
b299ce2
codegen metadata
stainless-app[bot] Jun 24, 2025
601cb97
codegen metadata
stainless-app[bot] Jun 24, 2025
639265a
codegen metadata
stainless-app[bot] Jun 24, 2025
2db1372
codegen metadata
stainless-app[bot] Jun 24, 2025
3a5e37a
codegen metadata
stainless-app[bot] Jun 24, 2025
a8d5fa1
codegen metadata
stainless-app[bot] Jun 24, 2025
a916b7e
codegen metadata
stainless-app[bot] Jun 25, 2025
94cdb65
codegen metadata
stainless-app[bot] Jun 25, 2025
695cb14
codegen metadata
stainless-app[bot] Jun 25, 2025
4d31720
codegen metadata
stainless-app[bot] Jun 25, 2025
4a6b563
codegen metadata
stainless-app[bot] Jun 25, 2025
002726f
codegen metadata
stainless-app[bot] Jun 25, 2025
204472a
codegen metadata
stainless-app[bot] Jun 25, 2025
8894476
codegen metadata
stainless-app[bot] Jun 25, 2025
4a5401e
codegen metadata
stainless-app[bot] Jun 25, 2025
d4a0f2b
codegen metadata
stainless-app[bot] Jun 25, 2025
211ddfc
feat(api): api update
stainless-app[bot] Jun 25, 2025
23fcd79
codegen metadata
stainless-app[bot] Jun 25, 2025
cca2c32
codegen metadata
stainless-app[bot] Jun 25, 2025
a437f58
codegen metadata
stainless-app[bot] Jun 25, 2025
40f82c0
codegen metadata
stainless-app[bot] Jun 25, 2025
e5e4e72
codegen metadata
stainless-app[bot] Jun 25, 2025
93b79eb
codegen metadata
stainless-app[bot] Jun 25, 2025
540dac3
codegen metadata
stainless-app[bot] Jun 25, 2025
7a5bc7f
codegen metadata
stainless-app[bot] Jun 25, 2025
685df2c
codegen metadata
stainless-app[bot] Jun 25, 2025
4a75ab8
codegen metadata
stainless-app[bot] Jun 25, 2025
50a5c7e
codegen metadata
stainless-app[bot] Jun 25, 2025
8d5c342
codegen metadata
stainless-app[bot] Jun 25, 2025
dab268e
codegen metadata
stainless-app[bot] Jun 25, 2025
0eb468d
codegen metadata
stainless-app[bot] Jun 25, 2025
c880ed2
codegen metadata
stainless-app[bot] Jun 25, 2025
63c4b80
codegen metadata
stainless-app[bot] Jun 25, 2025
f5209e5
codegen metadata
stainless-app[bot] Jun 25, 2025
9dfc3d6
codegen metadata
stainless-app[bot] Jun 25, 2025
cb30380
codegen metadata
stainless-app[bot] Jun 25, 2025
9853cfc
codegen metadata
stainless-app[bot] Jun 25, 2025
fdf7bfd
codegen metadata
stainless-app[bot] Jun 25, 2025
ec3e4ec
codegen metadata
stainless-app[bot] Jun 25, 2025
9003e00
codegen metadata
stainless-app[bot] Jun 26, 2025
7d514d3
codegen metadata
stainless-app[bot] Jun 26, 2025
3b7e153
codegen metadata
stainless-app[bot] Jun 26, 2025
2f03fae
codegen metadata
stainless-app[bot] Jun 26, 2025
f2f1f4b
codegen metadata
stainless-app[bot] Jun 26, 2025
c8116e8
codegen metadata
stainless-app[bot] Jun 26, 2025
736bc3f
fix(ci): release-doctor — report correct token name
stainless-app[bot] Jun 26, 2025
c0e9b0c
codegen metadata
stainless-app[bot] Jun 26, 2025
4b1c8b1
codegen metadata
stainless-app[bot] Jun 26, 2025
9fe28c5
codegen metadata
stainless-app[bot] Jun 26, 2025
de00cde
codegen metadata
stainless-app[bot] Jun 26, 2025
a364dc7
codegen metadata
stainless-app[bot] Jun 26, 2025
0d32330
codegen metadata
stainless-app[bot] Jun 26, 2025
23499df
feat(api): api update
stainless-app[bot] Jun 26, 2025
0662d7d
codegen metadata
stainless-app[bot] Jun 26, 2025
7972e6f
codegen metadata
stainless-app[bot] Jun 27, 2025
18a6fde
feat(api): api update
stainless-app[bot] Jun 27, 2025
e63b1a9
codegen metadata
stainless-app[bot] Jun 27, 2025
5ea2ece
codegen metadata
stainless-app[bot] Jun 27, 2025
91a68b2
codegen metadata
stainless-app[bot] Jun 27, 2025
ced1c92
codegen metadata
stainless-app[bot] Jun 27, 2025
a371c83
codegen metadata
stainless-app[bot] Jun 27, 2025
5162f21
codegen metadata
stainless-app[bot] Jun 27, 2025
156da36
codegen metadata
stainless-app[bot] Jun 27, 2025
a73d1bc
codegen metadata
stainless-app[bot] Jun 27, 2025
b021842
codegen metadata
stainless-app[bot] Jun 27, 2025
620f99b
codegen metadata
stainless-app[bot] Jun 27, 2025
4db27f6
codegen metadata
stainless-app[bot] Jun 27, 2025
fc20862
feat(api): api update
stainless-app[bot] Jun 27, 2025
8c1950e
codegen metadata
stainless-app[bot] Jun 27, 2025
be65ec7
codegen metadata
stainless-app[bot] Jun 27, 2025
037d783
codegen metadata
stainless-app[bot] Jun 27, 2025
84aff5c
codegen metadata
stainless-app[bot] Jun 27, 2025
a195d99
codegen metadata
stainless-app[bot] Jun 27, 2025
16cdf47
feat(api): api update
stainless-app[bot] Jun 27, 2025
1190250
codegen metadata
stainless-app[bot] Jun 27, 2025
9900f90
chore(ci): only run for pushes and fork pull requests
stainless-app[bot] Jun 27, 2025
9cd6ad8
codegen metadata
stainless-app[bot] Jun 27, 2025
ec2e81c
feat(api): api update
stainless-app[bot] Jun 27, 2025
427f8f1
feat(api): api update
stainless-app[bot] Jun 28, 2025
138f1f0
codegen metadata
stainless-app[bot] Jun 28, 2025
dbab062
codegen metadata
stainless-app[bot] Jun 28, 2025
4089586
codegen metadata
stainless-app[bot] Jun 29, 2025
a071a9a
fix(ci): correct conditional
stainless-app[bot] Jun 29, 2025
0f9df9c
codegen metadata
stainless-app[bot] Jun 30, 2025
c78996b
feat(api): api update
stainless-app[bot] Jun 30, 2025
6249040
codegen metadata
stainless-app[bot] Jun 30, 2025
f96551d
feat(api): api update
stainless-app[bot] Jun 30, 2025
2d31877
feat(api): api update
stainless-app[bot] Jun 30, 2025
566e8fe
codegen metadata
stainless-app[bot] Jun 30, 2025
5c9a632
codegen metadata
stainless-app[bot] Jun 30, 2025
79d9994
codegen metadata
stainless-app[bot] Jun 30, 2025
23a0a7c
codegen metadata
stainless-app[bot] Jun 30, 2025
d711a03
codegen metadata
stainless-app[bot] Jun 30, 2025
daee173
codegen metadata
stainless-app[bot] Jun 30, 2025
1e141f2
codegen metadata
stainless-app[bot] Jun 30, 2025
c8e76fe
codegen metadata
stainless-app[bot] Jun 30, 2025
4d80c55
feat(api): Add Radar Bots and Web Crawlers
stainless-app[bot] Jun 30, 2025
4d9b003
codegen metadata
stainless-app[bot] Jul 1, 2025
ee955f5
codegen metadata
stainless-app[bot] Jul 1, 2025
3a32563
codegen metadata
stainless-app[bot] Jul 1, 2025
3f94ddf
feat(api): api update
stainless-app[bot] Jul 1, 2025
c432058
codegen metadata
stainless-app[bot] Jul 1, 2025
da58d5e
codegen metadata
stainless-app[bot] Jul 1, 2025
d90839b
codegen metadata
stainless-app[bot] Jul 1, 2025
b4de192
feat(api): api update
stainless-app[bot] Jul 1, 2025
3697fa3
codegen metadata
stainless-app[bot] Jul 1, 2025
f116592
feat(api): api update
stainless-app[bot] Jul 1, 2025
493c628
feat(api): api update
stainless-app[bot] Jul 1, 2025
5c7fff8
codegen metadata
stainless-app[bot] Jul 1, 2025
3aa4552
codegen metadata
stainless-app[bot] Jul 1, 2025
2537147
codegen metadata
stainless-app[bot] Jul 1, 2025
d982424
feat(api): api update
stainless-app[bot] Jul 1, 2025
0508466
codegen metadata
stainless-app[bot] Jul 1, 2025
fa43249
codegen metadata
stainless-app[bot] Jul 1, 2025
dcf06c8
feat(api): api update
stainless-app[bot] Jul 1, 2025
87e1a8a
codegen metadata
stainless-app[bot] Jul 1, 2025
bb1987d
codegen metadata
stainless-app[bot] Jul 1, 2025
a876e99
codegen metadata
stainless-app[bot] Jul 1, 2025
9a96496
codegen metadata
stainless-app[bot] Jul 1, 2025
42705d7
feat(api): Add DELETE and POST routes for Magic Connector
stainless-app[bot] Jul 1, 2025
af37d2f
codegen metadata
stainless-app[bot] Jul 1, 2025
5d9961c
feat(brand_protection): Add new routes
stainless-app[bot] Jul 1, 2025
12fa4c6
codegen metadata
stainless-app[bot] Jul 1, 2025
6a77477
codegen metadata
stainless-app[bot] Jul 1, 2025
88a9958
chore(ci): change upload type
stainless-app[bot] Jul 1, 2025
0fe0c96
codegen metadata
stainless-app[bot] Jul 2, 2025
1a0fb4d
codegen metadata
stainless-app[bot] Jul 2, 2025
fdc3ce0
codegen metadata
stainless-app[bot] Jul 2, 2025
9d6bd88
codegen metadata
stainless-app[bot] Jul 2, 2025
9364179
codegen metadata
stainless-app[bot] Jul 2, 2025
2432b16
codegen metadata
stainless-app[bot] Jul 2, 2025
0ddeaf4
feat(api): api update
stainless-app[bot] Jul 2, 2025
d41a1ec
codegen metadata
stainless-app[bot] Jul 2, 2025
430e57e
codegen metadata
stainless-app[bot] Jul 2, 2025
82e0746
codegen metadata
stainless-app[bot] Jul 2, 2025
d220489
codegen metadata
stainless-app[bot] Jul 2, 2025
c651496
codegen metadata
stainless-app[bot] Jul 2, 2025
b1c4cb1
codegen metadata
stainless-app[bot] Jul 2, 2025
2902ef7
codegen metadata
stainless-app[bot] Jul 2, 2025
a41f917
codegen metadata
stainless-app[bot] Jul 2, 2025
ad30a1b
codegen metadata
stainless-app[bot] Jul 2, 2025
578424f
codegen metadata
stainless-app[bot] Jul 2, 2025
96581bc
feat(zero_trust_dlp): Added individual resources and new routes
stainless-app[bot] Jul 2, 2025
1f93055
chore(internal): add breaking change detection
stainless-app[bot] Jul 3, 2025
f9365f8
feat(api): api update
stainless-app[bot] Jul 7, 2025
ee58942
codegen metadata
stainless-app[bot] Jul 7, 2025
df4f8a7
codegen metadata
stainless-app[bot] Jul 7, 2025
d2f4a44
codegen metadata
stainless-app[bot] Jul 7, 2025
b3fe225
codegen metadata
stainless-app[bot] Jul 7, 2025
2c4373c
codegen metadata
stainless-app[bot] Jul 7, 2025
62ff705
codegen metadata
stainless-app[bot] Jul 7, 2025
3dbbe9c
feat(api): api update
stainless-app[bot] Jul 7, 2025
f25c8ce
codegen metadata
stainless-app[bot] Jul 7, 2025
278a799
feat(api): api update
stainless-app[bot] Jul 7, 2025
49cb3e3
codegen metadata
stainless-app[bot] Jul 7, 2025
f636ca6
codegen metadata
stainless-app[bot] Jul 7, 2025
ac33445
codegen metadata
stainless-app[bot] Jul 7, 2025
f1eb29f
codegen metadata
stainless-app[bot] Jul 7, 2025
0497d11
codegen metadata
stainless-app[bot] Jul 7, 2025
b7b2ddf
codegen metadata
stainless-app[bot] Jul 7, 2025
ff426dd
codegen metadata
stainless-app[bot] Jul 7, 2025
9fd5b05
codegen metadata
stainless-app[bot] Jul 8, 2025
2b643f5
codegen metadata
stainless-app[bot] Jul 8, 2025
a71948e
codegen metadata
stainless-app[bot] Jul 8, 2025
c6096ae
feat(api): api update
stainless-app[bot] Jul 8, 2025
b1c5063
codegen metadata
stainless-app[bot] Jul 8, 2025
076b2ed
codegen metadata
stainless-app[bot] Jul 8, 2025
ce2f65f
codegen metadata
stainless-app[bot] Jul 8, 2025
0e41683
codegen metadata
stainless-app[bot] Jul 8, 2025
a46cf0d
feat(api): api update
stainless-app[bot] Jul 8, 2025
a151be0
chore(internal): bump pinned h11 dep
stainless-app[bot] Jul 8, 2025
0028874
codegen metadata
stainless-app[bot] Jul 8, 2025
c7d7dc1
codegen metadata
stainless-app[bot] Jul 8, 2025
9e18f39
chore(package): mark python 3.13 as supported
stainless-app[bot] Jul 8, 2025
9e6eb88
fix(parsing): correctly handle nested discriminated unions
stainless-app[bot] Jul 9, 2025
c87b536
chore(api): skip broken prism tests
stainless-app[bot] Jul 10, 2025
371845c
chore(internal): codegen related update
stainless-app[bot] Jul 10, 2025
063c76c
codegen metadata
stainless-app[bot] Jul 10, 2025
d3d7dd6
chore(readme): fix version rendering on pypi
stainless-app[bot] Jul 10, 2025
f1eda00
fix(api): add missing `items` param
stainless-app[bot] Jul 10, 2025
43041fb
fix(client): don't send Content-Type header on GET requests
stainless-app[bot] Jul 11, 2025
0cce581
codegen metadata
stainless-app[bot] Jul 11, 2025
087d706
codegen metadata
stainless-app[bot] Jul 11, 2025
f24f43d
feat: clean up environment call outs
stainless-app[bot] Jul 14, 2025
b99a5f3
codegen metadata
stainless-app[bot] Jul 15, 2025
c553c74
codegen metadata
stainless-app[bot] Jul 15, 2025
71baeb0
chore(api): Skip broken prism test for updating custom DLP entries
stainless-app[bot] Jul 16, 2025
234b609
fix: radar types
nlsandler Jul 16, 2025
42c2209
fix: radar types
nlsandler Jul 16, 2025
9085347
fix: dns record example
nlsandler Jul 16, 2025
8f2f7a4
fix: dns record example
nlsandler Jul 16, 2025
4ec7e83
feat(api): api update
stainless-app[bot] Jul 18, 2025
8a99cf5
feat(api): api update
stainless-app[bot] Jul 17, 2025
c85696e
codegen metadata
stainless-app[bot] Jul 17, 2025
1da41c3
codegen metadata
stainless-app[bot] Jul 17, 2025
dad119b
codegen metadata
stainless-app[bot] Jul 17, 2025
4f38766
codegen metadata
stainless-app[bot] Jul 17, 2025
5c1c281
codegen metadata
stainless-app[bot] Jul 17, 2025
0d26a36
feat(api): api update
stainless-app[bot] Jul 18, 2025
e36d876
codegen metadata
stainless-app[bot] Jul 18, 2025
a4ac65b
codegen metadata
stainless-app[bot] Jul 18, 2025
0d4a823
codegen metadata
stainless-app[bot] Jul 18, 2025
215f90a
codegen metadata
stainless-app[bot] Jul 18, 2025
f4164e2
codegen metadata
stainless-app[bot] Jul 18, 2025
60999f2
codegen metadata
stainless-app[bot] Jul 18, 2025
79b213a
codegen metadata
stainless-app[bot] Jul 18, 2025
ddff81c
codegen metadata
stainless-app[bot] Jul 18, 2025
1e6e173
codegen metadata
stainless-app[bot] Jul 18, 2025
2d5f030
codegen metadata
stainless-app[bot] Jul 18, 2025
0b74e94
codegen metadata
stainless-app[bot] Jul 18, 2025
4f9a53b
codegen metadata
stainless-app[bot] Jul 18, 2025
e577fd3
codegen metadata
stainless-app[bot] Jul 18, 2025
f2974f8
codegen metadata
stainless-app[bot] Jul 18, 2025
8b2e69b
codegen metadata
stainless-app[bot] Jul 18, 2025
99f85fd
codegen metadata
stainless-app[bot] Jul 18, 2025
6e3fa7d
codegen metadata
stainless-app[bot] Jul 18, 2025
e236b25
codegen metadata
stainless-app[bot] Jul 18, 2025
f56c2b4
codegen metadata
stainless-app[bot] Jul 18, 2025
1b8950c
codegen metadata
stainless-app[bot] Jul 18, 2025
9650869
codegen metadata
stainless-app[bot] Jul 18, 2025
288cf47
codegen metadata
stainless-app[bot] Jul 18, 2025
75df94a
codegen metadata
stainless-app[bot] Jul 18, 2025
ba78336
codegen metadata
stainless-app[bot] Jul 18, 2025
5364bb7
feat(api): api update
stainless-app[bot] Jul 18, 2025
f8e1ced
codegen metadata
stainless-app[bot] Jul 18, 2025
c2b1d7c
codegen metadata
stainless-app[bot] Jul 18, 2025
3057014
codegen metadata
stainless-app[bot] Jul 19, 2025
ef87eb4
codegen metadata
stainless-app[bot] Jul 20, 2025
dd64a4a
release: 4.4.0
stainless-app[bot] Jul 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 24 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ on:
- 'integrated/**'
- 'stl-preview-head/**'
- 'stl-preview-base/**'
pull_request:
branches-ignore:
- 'stl-preview-head/**'
- 'stl-preview-base/**'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -18,6 +22,7 @@ jobs:
timeout-minutes: 10
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/cloudflare-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4

Expand All @@ -35,17 +40,31 @@ jobs:
- name: Run lints
run: ./scripts/lint

upload:
if: github.repository == 'stainless-sdks/cloudflare-python'
build:
if: github.repository == 'stainless-sdks/cloudflare-python' && (github.event_name == 'push' || github.event.pull_request.head.repo.fork)
timeout-minutes: 10
name: upload
name: build
permissions:
contents: read
id-token: write
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v4

- name: Install Rye
run: |
curl -sSf https://rye.astral.sh/get | bash
echo "$HOME/.rye/shims" >> $GITHUB_PATH
env:
RYE_VERSION: '0.44.0'
RYE_INSTALL_OPTION: '--yes'

- name: Install dependencies
run: rye sync --all-features

- name: Run build
run: rye build

- name: Get GitHub OIDC Token
id: github-oidc
uses: actions/github-script@v6
Expand All @@ -63,6 +82,7 @@ jobs:
timeout-minutes: 30
name: test
runs-on: ${{ github.repository == 'stainless-sdks/cloudflare-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4

Expand All @@ -84,7 +104,7 @@ jobs:
timeout-minutes: 10
name: examples
runs-on: ${{ github.repository == 'stainless-sdks/cloudflare-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.repository == 'cloudflare/cloudflare-python'
if: github.repository == 'cloudflare/cloudflare-python' && (github.event_name == 'push' || github.event.pull_request.head.repo.fork)

steps:
- uses: actions/checkout@v4
Expand Down
35 changes: 35 additions & 0 deletions .github/workflows/detect-breaking-changes.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: CI
on:
pull_request:
branches:
- main
- next

jobs:
detect_breaking_changes:
runs-on: 'ubuntu-latest'
name: detect-breaking-changes
if: github.repository == 'cloudflare/cloudflare-python'
steps:
- name: Calculate fetch-depth
run: |
echo "FETCH_DEPTH=$(expr ${{ github.event.pull_request.commits }} + 1)" >> $GITHUB_ENV

- uses: actions/checkout@v4
with:
# Ensure we can check out the pull request base in the script below.
fetch-depth: ${{ env.FETCH_DEPTH }}

- name: Install Rye
run: |
curl -sSf https://rye.astral.sh/get | bash
echo "$HOME/.rye/shims" >> $GITHUB_PATH
env:
RYE_VERSION: '0.44.0'
RYE_INSTALL_OPTION: '--yes'
- name: Install dependencies
run: |
rye sync --all-features

- name: Detect breaking changes
run: ./scripts/detect-breaking-changes ${{ github.event.pull_request.base.sha }}
Comment on lines +10 to +35

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 18 days ago

To fix the issue, we will add a permissions block at the root of the workflow file. This block will define the minimal permissions required for the workflow to function. Based on the tasks in the workflow, it only needs read access to repository contents (contents: read). No write permissions are necessary.

The permissions block will be added immediately after the name field at the top of the file. This ensures that the permissions apply to all jobs in the workflow unless overridden by a job-specific permissions block.


Suggested changeset 1
.github/workflows/detect-breaking-changes.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/detect-breaking-changes.yml b/.github/workflows/detect-breaking-changes.yml
--- a/.github/workflows/detect-breaking-changes.yml
+++ b/.github/workflows/detect-breaking-changes.yml
@@ -1,2 +1,4 @@
 name: CI
+permissions:
+  contents: read
 on:
EOF
@@ -1,2 +1,4 @@
name: CI
permissions:
contents: read
on:
Copilot is powered by AI and may make mistakes. Always verify output.
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "4.3.1"
".": "4.4.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 1752
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-b15b44e0efd207de48e7e74e742b0b4b190c74f12a941a1a0ef59a51656a5224.yml
openapi_spec_hash: 83243c9ee06f88d0fa91e9b185d8a42e
config_hash: 8601d43fd5ccaf9e3d08f26748a5a63a
configured_endpoints: 1777
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-c493698a1cde78df7b38557058847107dcc8041a33b8367b7416cd3dc08324e9.yml
openapi_spec_hash: 3202b0c046cd2617b0f8839c941ff334
config_hash: bafeb7666d2b7868c9d4ab8f0cc686e1
75 changes: 75 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,80 @@
# Changelog

## 4.4.0 (2025-07-20)

Full Changelog: [v4.3.1...v4.4.0](https://github.com/cloudflare/cloudflare-python/compare/v4.3.1...v4.4.0)

### Features

* **api:** Add DELETE and POST routes for Magic Connector ([42705d7](https://github.com/cloudflare/cloudflare-python/commit/42705d7ab89a26af0a185b8753aa009509780c76))
* **api:** Add Radar Bots and Web Crawlers ([4d80c55](https://github.com/cloudflare/cloudflare-python/commit/4d80c5529a4680d0cb58e63073d90edc65b289a6))
* **api:** api update ([5364bb7](https://github.com/cloudflare/cloudflare-python/commit/5364bb7fafdd4d85525232ee90c4e7b4dbae4488))
* **api:** api update ([0d26a36](https://github.com/cloudflare/cloudflare-python/commit/0d26a36fbcd6c82968489f22c2db349aeb020878))
* **api:** api update ([8a99cf5](https://github.com/cloudflare/cloudflare-python/commit/8a99cf5e25f69079acbef07f32f2b728a0f10849))
* **api:** api update ([4ec7e83](https://github.com/cloudflare/cloudflare-python/commit/4ec7e833fd5ee4250b96231366343131d0008b72))
* **api:** api update ([a46cf0d](https://github.com/cloudflare/cloudflare-python/commit/a46cf0d8fdfc88a45ce131656a0a7c3cb9c53fcc))
* **api:** api update ([c6096ae](https://github.com/cloudflare/cloudflare-python/commit/c6096aeb9836a7d19c358d0a0217649d9e5455dd))
* **api:** api update ([278a799](https://github.com/cloudflare/cloudflare-python/commit/278a7997b8107d50031886fe09b0039faed7d46c))
* **api:** api update ([3dbbe9c](https://github.com/cloudflare/cloudflare-python/commit/3dbbe9c6d42f498d303173fc5bab1c4efba3a8a6))
* **api:** api update ([f9365f8](https://github.com/cloudflare/cloudflare-python/commit/f9365f8e7f743cf24a80049662e1fa58233e6dc5))
* **api:** api update ([0ddeaf4](https://github.com/cloudflare/cloudflare-python/commit/0ddeaf4caf2f93c2219496bf516c68709c44f2b5))
* **api:** api update ([dcf06c8](https://github.com/cloudflare/cloudflare-python/commit/dcf06c8b08df6d6210dd58eb968b46ec56c02077))
* **api:** api update ([d982424](https://github.com/cloudflare/cloudflare-python/commit/d982424f3f04cb7f6d13a1d12738cafb514be1bb))
* **api:** api update ([493c628](https://github.com/cloudflare/cloudflare-python/commit/493c6287801e269227c5a6ce58748ed30040f16d))
* **api:** api update ([f116592](https://github.com/cloudflare/cloudflare-python/commit/f1165925dbdd92232cfce87647c568c373a6c46f))
* **api:** api update ([b4de192](https://github.com/cloudflare/cloudflare-python/commit/b4de1922aee64c681f492c3fac24fec414d5fb84))
* **api:** api update ([3f94ddf](https://github.com/cloudflare/cloudflare-python/commit/3f94ddfeded1cd708596ffec9c7b63a3f78951b2))
* **api:** api update ([2d31877](https://github.com/cloudflare/cloudflare-python/commit/2d3187794d5cc12d39dacfb58b51626b03495c12))
* **api:** api update ([f96551d](https://github.com/cloudflare/cloudflare-python/commit/f96551d3275d2c8117705c84614f924eb62da98b))
* **api:** api update ([c78996b](https://github.com/cloudflare/cloudflare-python/commit/c78996bbe8f0e33bedf4d928d9b8878b18ec81e6))
* **api:** api update ([427f8f1](https://github.com/cloudflare/cloudflare-python/commit/427f8f1c4f8e6431e8593718658a954b9503d41d))
* **api:** api update ([ec2e81c](https://github.com/cloudflare/cloudflare-python/commit/ec2e81ceae5ebb21bfedb8f5706a8ce51094340a))
* **api:** api update ([16cdf47](https://github.com/cloudflare/cloudflare-python/commit/16cdf47bdb7be097bb7a83e9ccfbdc4b61e8405b))
* **api:** api update ([fc20862](https://github.com/cloudflare/cloudflare-python/commit/fc20862274dcf03e7e90a90b37a5b812f3c63235))
* **api:** api update ([18a6fde](https://github.com/cloudflare/cloudflare-python/commit/18a6fdeab07b6753252135f21304dcfc2fa1faf2))
* **api:** api update ([23499df](https://github.com/cloudflare/cloudflare-python/commit/23499df3b54944c84a552a0e20ce09b075e4bc44))
* **api:** api update ([211ddfc](https://github.com/cloudflare/cloudflare-python/commit/211ddfcf9176cf778d6de310817ee01194f6844e))
* **api:** api update ([2bf9737](https://github.com/cloudflare/cloudflare-python/commit/2bf9737af8db398d3e00c9ddb3f67d0c9527491f))
* **api:** api update ([764b4ea](https://github.com/cloudflare/cloudflare-python/commit/764b4ea4333e86e8c1c76c7625887c077c435f8a))
* **api:** api update ([4c6cda0](https://github.com/cloudflare/cloudflare-python/commit/4c6cda072e94640d2ea181dd1de2e4ef3f943e76))
* **brand_protection:** Add new routes ([5d9961c](https://github.com/cloudflare/cloudflare-python/commit/5d9961ce4aba38d828f3279e7081b30b76db74ad))
* clean up environment call outs ([f24f43d](https://github.com/cloudflare/cloudflare-python/commit/f24f43d8132d0efc31d49954209549932bba6f75))
* **client:** add support for aiohttp ([80d9fef](https://github.com/cloudflare/cloudflare-python/commit/80d9fefc3aabba6ee9d6addea001a7108b9684cd))
* **zero_trust_dlp:** Added individual resources and new routes ([96581bc](https://github.com/cloudflare/cloudflare-python/commit/96581bc4d785392715269ca32b09dfa8fce0ac51))


### Bug Fixes

* **api:** add missing `items` param ([f1eda00](https://github.com/cloudflare/cloudflare-python/commit/f1eda003cec7a593680d7e58106fad0e029cf5ee))
* **ci:** correct conditional ([a071a9a](https://github.com/cloudflare/cloudflare-python/commit/a071a9ac7b25de7454f6ad37ee39af0f5dbcd2b0))
* **ci:** release-doctor — report correct token name ([736bc3f](https://github.com/cloudflare/cloudflare-python/commit/736bc3f6a1009bdb69e3505c0f9116235914e4fb))
* **client:** don't send Content-Type header on GET requests ([43041fb](https://github.com/cloudflare/cloudflare-python/commit/43041fba5e43c7e8022c5ece6d98d055e150a47b))
* dns record example ([8f2f7a4](https://github.com/cloudflare/cloudflare-python/commit/8f2f7a4662883ae4cb85f956dda2b82a7ed952e4))
* dns record example ([9085347](https://github.com/cloudflare/cloudflare-python/commit/908534756a4f8321407ced2dea94531e895989b8))
* **parsing:** correctly handle nested discriminated unions ([9e6eb88](https://github.com/cloudflare/cloudflare-python/commit/9e6eb8890842b715b91c029ed3ad46b52d6fa9b3))
* radar types ([42c2209](https://github.com/cloudflare/cloudflare-python/commit/42c22098266df3dc6ebc0c19cfec97b6d851c9cd))
* radar types ([234b609](https://github.com/cloudflare/cloudflare-python/commit/234b609b77d476c89f92fb289d02a1aaf6decf01))
* **tests:** fix: tests which call HTTP endpoints directly with the example parameters ([721188d](https://github.com/cloudflare/cloudflare-python/commit/721188dddf88b71ba2c0754461c8d7f8d4359304))


### Chores

* **api:** Skip broken prism test for updating custom DLP entries ([71baeb0](https://github.com/cloudflare/cloudflare-python/commit/71baeb0e4ca8145723f85233fa05cc42958a92e0))
* **api:** skip broken prism tests ([c87b536](https://github.com/cloudflare/cloudflare-python/commit/c87b53618d2d3fde0d9f76e910bd9166d52b3b9a))
* **ci:** change upload type ([88a9958](https://github.com/cloudflare/cloudflare-python/commit/88a99586b00f00557d5cf1b7f77979184e71034c))
* **ci:** only run for pushes and fork pull requests ([9900f90](https://github.com/cloudflare/cloudflare-python/commit/9900f90f87f4a58b92c7f89d2b92a63be552c102))
* **internal:** add breaking change detection ([1f93055](https://github.com/cloudflare/cloudflare-python/commit/1f930557c231be493e57c9780341916dd95bedfd))
* **internal:** bump pinned h11 dep ([a151be0](https://github.com/cloudflare/cloudflare-python/commit/a151be01332015a572bfe280f9708a2abf82dbaf))
* **internal:** codegen related update ([371845c](https://github.com/cloudflare/cloudflare-python/commit/371845cca805cc6fa3bb84680d4e5d698c38235e))
* **package:** mark python 3.13 as supported ([9e18f39](https://github.com/cloudflare/cloudflare-python/commit/9e18f39e933b396a425b0a3f6976a1130e7218c2))
* **readme:** fix version rendering on pypi ([d3d7dd6](https://github.com/cloudflare/cloudflare-python/commit/d3d7dd61af8899c760d066d53c69e5b0e4e99fe8))
* **tests:** skip some failing tests on the latest python versions ([dbbb02d](https://github.com/cloudflare/cloudflare-python/commit/dbbb02d2077911a1eac2069ac1e82b54e2ae5b1b))


### Documentation

* **client:** fix httpx.Timeout documentation reference ([0114564](https://github.com/cloudflare/cloudflare-python/commit/0114564d5cfb8459f19fe3dd80ce6e55617096ec))

## 4.3.1 (2025-06-16)

Full Changelog: [v4.3.0...v4.3.1](https://github.com/cloudflare/cloudflare-python/compare/v4.3.0...v4.3.1)
Expand Down
40 changes: 38 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Cloudflare Python API library

[![PyPI version](https://img.shields.io/pypi/v/cloudflare.svg)](https://pypi.org/project/cloudflare/)
<!-- prettier-ignore -->
[![PyPI version](https://img.shields.io/pypi/v/cloudflare.svg?label=pypi%20(stable))](https://pypi.org/project/cloudflare/)

The Cloudflare Python library provides convenient access to the Cloudflare REST API from any Python 3.8+
application. The library includes type definitions for all request params and response fields,
Expand Down Expand Up @@ -70,6 +71,41 @@ asyncio.run(main())

Functionality between the synchronous and asynchronous clients is otherwise identical.

### With aiohttp

By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.

You can enable this by installing `aiohttp`:

```sh
# install from PyPI
pip install cloudflare[aiohttp]
```

Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:

```python
import asyncio
from cloudflare import DefaultAioHttpClient
from cloudflare import AsyncCloudflare


async def main() -> None:
async with AsyncCloudflare(
api_token="Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY",
http_client=DefaultAioHttpClient(),
) as client:
zone = await client.zones.create(
account={"id": "023e105f4ecef8ad9ca31a8372d0c353"},
name="example.com",
type="full",
)
print(zone.id)


asyncio.run(main())
```

## Using types

Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:
Expand Down Expand Up @@ -244,7 +280,7 @@ client.with_options(max_retries=5).zones.get(
### Timeouts

By default requests time out after 1 minute. You can configure this with a `timeout` option,
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:

```python
from cloudflare import Cloudflare
Expand Down
Loading
Loading