Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
5c3e60b
docs: add initial x402 foundation charter (#1911)
CarsonRoscoe Apr 2, 2026
98bcb65
fix: settlement overrides for upto in typescript sdk (#1913)
CarsonRoscoe Apr 2, 2026
2250cae
feat: refactor coinbase/x402 references to x402-foundation/x402 (#1912)
CarsonRoscoe Apr 2, 2026
dd4eb58
chore: version typescript, python and go packages (#1915)
CarsonRoscoe Apr 2, 2026
536b92e
feat: updated pypi workflow to use trusted publishing (#1916)
CarsonRoscoe Apr 2, 2026
af01f26
docs(bazaar): clarify EXTENSION-RESPONSES header applies to verify an…
ethanoroshiba Apr 6, 2026
1392834
feat: add self-facilitation example (#1942)
ethanoroshiba Apr 6, 2026
81dba64
feat: added upto to docs (#1961)
CarsonRoscoe Apr 8, 2026
5033781
feat: add upto readme and client examples (#1963)
CarsonRoscoe Apr 8, 2026
a4e4911
chore(extensions): migrate to @signinwithethereum/siwe (#1917)
caveman-eth Apr 9, 2026
cde9151
feat(specs): add Keeta exact scheme (#1575)
sc4l3r Apr 10, 2026
5df77ca
Add Echo framework documentation (#1783)
mintlify[bot] Apr 10, 2026
cdf3a76
improve defaultAsset docs (#1983)
phdargen Apr 10, 2026
5ab912d
feat(bazaar): add MCP resource type support to Go SDK (#1967)
avidreder Apr 10, 2026
a51c83c
Ecosystem page changes (#1992)
Must-be-Ash Apr 10, 2026
a25800e
feat(avm): Add Algorand (AVM) blockchain exact spec implementation an…
emg110 Apr 10, 2026
84a4bce
fix(evm): restore Mezo Testnet default asset dropped in v2.9.0 refact…
ryanRfox Apr 11, 2026
b123f39
docs(examples): clarify facilitator signer roles (#1937)
Bortlesboat Apr 11, 2026
37b8347
fix(paywall): read token name from payment requirements instead of ha…
ryanRfox Apr 11, 2026
ea0768c
docs(evm): complete default-asset chain list in Go EVM mechanism READ…
ryanRfox Apr 11, 2026
74a9e8e
docs(sellers): replace legacy Go import path in Echo example (#2009)
vikions Apr 12, 2026
2fda851
Add Ultravioleta DAO facilitator to ecosystem directory (#1780)
0xultravioleta Apr 13, 2026
9424291
chore(typescript): bump viem to 2.47.12 across all packages (#2013)
ryanRfox Apr 13, 2026
077b294
feat(svm): implement extra.memo support for exact scheme (#1688)
tenequm Apr 13, 2026
f420044
chore: version typescript packages (#2019)
phdargen Apr 13, 2026
db164fe
chore: version python package (#2020)
phdargen Apr 13, 2026
1059e86
chore(go): release v2.9.0 (#2021)
phdargen Apr 13, 2026
11206b0
Add Algorand (AVM) support to documentation (#1993)
mintlify[bot] Apr 13, 2026
b1176d3
remove legacy examples (#1356)
phdargen Apr 14, 2026
3b98333
Feat/add polygon facilitator (#2031)
AkshatGada Apr 15, 2026
006a1b2
add upto facilitator examples (#2028)
phdargen Apr 15, 2026
f78b268
remove legacy examples (#2036)
phdargen Apr 15, 2026
2a690c7
feat: add batch-settlement payment scheme and Cloudflare network spec…
CameronWhiteside Apr 15, 2026
c6391b1
feat: updated legacy npm packages to deploy via trusted publishing (#…
CarsonRoscoe Apr 16, 2026
c925593
docs: add AI-assisted contributions guidelines and sample agent promp…
notorious-d-e-v Apr 16, 2026
c284d0d
feat: upto evm python (#2023)
CarsonRoscoe Apr 16, 2026
a862793
Update docs/sdk-features.md (#2052)
mintlify[bot] Apr 17, 2026
875cf21
patch avm/fastify (#2041)
phdargen Apr 17, 2026
dc04108
fix: scientific notation price conversion bug (#2053)
CarsonRoscoe Apr 17, 2026
6991456
Map simulation and settlement failures to more detailed errors (#2062)
ethanoroshiba Apr 17, 2026
b7db1d1
chore: version python package (#2064)
CarsonRoscoe Apr 17, 2026
d298e14
add python upto to docs (#2065)
ethanoroshiba Apr 20, 2026
72bca66
SVM スキームの統合テスト placeholder を実テストに置換 (#1931)
natsukingly Apr 21, 2026
5543700
docs: add Documentation Checklist + surface chain-contribution flow (…
ryanRfox Apr 21, 2026
a9a7621
feat: add Quicknode to adopted-by scroller (#2055)
Sahilsen Apr 21, 2026
375f3f2
fix(go): implement SupportedCache Clear (#2072)
viktorcrypt Apr 21, 2026
09c9594
docs: create `README.md` under `typescript/` to showcase list of avai…
CJ42 Apr 21, 2026
2224f1c
feat: add openpayment (#1676)
vittominacori Apr 22, 2026
71a223d
feat: add MCP Bazaar discovery support across TypeScript, Python, and…
ethanoroshiba Apr 22, 2026
4840c8d
Cardano x402 Protocol Specification (#1093)
fabianbormann Apr 23, 2026
85f6123
Update docs/sdk-features.md (#2105)
mintlify[bot] Apr 23, 2026
0a358c3
feat(site): make x402.org agent-ready (#2113)
Must-be-Ash Apr 24, 2026
a051f48
allow ResourceServerExtension to assign x402ResourceServer hooks dire…
CarsonRoscoe Apr 24, 2026
ba1a65a
Document ResourceServerExtension hooks property (#2114)
mintlify[bot] Apr 24, 2026
bd6d7d4
feat(hedera): add initial @x402/hedera package (#1360)
piotrswierzy Apr 24, 2026
05f0e04
feat: add auth-hints extension to streamline scheme-level authenticat…
alftom Apr 24, 2026
60d467d
fix: use dynamic decimals in getDisplayAmount instead of hardcoded US…
natsukingly Apr 26, 2026
9b99acd
refactor: deduplicate checkIfBazaarNeeded across HTTP packages (#1925)
natsukingly Apr 26, 2026
032295b
fix(paywall): use dynamic token decimals instead of hardcoding 6 (#1980)
ryanRfox Apr 26, 2026
4feebcf
fix(site): improve x402 discoverability for scanner (#2128)
Must-be-Ash Apr 26, 2026
484030b
chore(paywall): regenerate bundle + add recurrence guard (#2054)
ryanRfox Apr 26, 2026
ce4748d
chore: version typescript packages (#2148)
phdargen Apr 27, 2026
af26d09
chore: version python package (#2149)
phdargen Apr 27, 2026
bed58c7
chore(go): release v2.10.0 (#2150)
phdargen Apr 27, 2026
582a3d1
feat(site): add x402 demo API endpoint for scanner discoverability (#…
Must-be-Ash Apr 28, 2026
e048247
Add codeowners per-network (#2082)
erikreppel-cb Apr 29, 2026
7ec7815
feat(bazaar): update WithBazaar SDK wrappers with search, unified aut…
ethanoroshiba Apr 29, 2026
01abe6c
specs(exact): propose TON exact scheme for x402 v2 (spec-only) (#1455)
ohld May 1, 2026
08e7568
feat(site): redesign hero section and update navigation CTAs (#2165)
margaretsommers May 1, 2026
78f0519
fix(site): remove x402 demo endpoint (#2172)
Must-be-Ash May 2, 2026
1e0434b
docs: add builder_code.md spec (#2050)
0xClouds May 4, 2026
45d7d19
Batch-settlement TS sdk (#2061)
phdargen May 4, 2026
12708ef
feat: improved aws lambda examples documentation (#2192)
CarsonRoscoe May 4, 2026
e01f40f
fix: documentation (#2194)
CarsonRoscoe May 5, 2026
a0f444c
feat: added cdk to example (#2197)
CarsonRoscoe May 5, 2026
c763d05
Batch-settlement scheme specification for EVM (#2051)
phdargen May 5, 2026
5ceb9f3
docs: add repo move note to README (#40)
Must-be-Ash Apr 9, 2026
d5656e7
add service metadata on resource to all 3 SDKs
aayushijain21 May 4, 2026
657672e
lint
aayushijain21 May 4, 2026
ff4674e
changelog
aayushijain21 May 4, 2026
58aa3c6
review: harden iconUrl validators + tighten signatures
aayushijain21 May 4, 2026
7bbd242
review: constrain serviceName/tags to printable ASCII
aayushijain21 May 4, 2026
f5865c6
add checks to harden iconurl + tag/name validators
aayushijain21 May 5, 2026
d5384a7
update v2 spec + python lint
aayushijain21 May 6, 2026
9c186f4
python format
aayushijain21 May 6, 2026
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
  •  
  •  
  •  
192 changes: 192 additions & 0 deletions .github/CODEOWNERS

Large diffs are not rendered by default.

90 changes: 90 additions & 0 deletions .github/workflows/check_paywall_template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: Check Paywall Template

on:
pull_request:
paths:
- "typescript/packages/http/paywall/**"
- "typescript/packages/mechanisms/evm/**"
- "typescript/pnpm-lock.yaml"
- "python/x402/http/paywall/**"
- "go/http/evm_paywall_template.go"
- "go/http/svm_paywall_template.go"
- "go/http/avm_paywall_template.go"
- ".github/workflows/check_paywall_template.yml"

jobs:
check-paywall-template:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061
with:
version: 10.7.0

- uses: actions/setup-node@v4
with:
node-version: "24"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Install dependencies
working-directory: ./typescript
run: pnpm install --frozen-lockfile

- name: Build workspace dependencies
working-directory: ./typescript
run: pnpm -r run build

- name: Regenerate paywall bundles
working-directory: ./typescript/packages/http/paywall
run: pnpm run build:paywall

- name: Verify regenerated templates match committed files
run: |
git diff --exit-code -- \
typescript/packages/http/paywall/src/evm/gen/template.ts \
typescript/packages/http/paywall/src/svm/gen/template.ts \
typescript/packages/http/paywall/src/avm/gen/template.ts \
python/x402/http/paywall/evm_paywall_template.py \
python/x402/http/paywall/svm_paywall_template.py \
python/x402/http/paywall/avm_paywall_template.py \
go/http/evm_paywall_template.go \
go/http/svm_paywall_template.go \
go/http/avm_paywall_template.go \
|| {
echo ""
echo "::error::Paywall bundled templates are stale. Run 'pnpm --filter @x402/paywall run build:paywall' locally and commit the result."
exit 1
}

- name: Verify determinism (re-run build, compare to first run)
working-directory: ./typescript/packages/http/paywall
run: |
first_sha=$(sha256sum \
src/evm/gen/template.ts \
src/svm/gen/template.ts \
src/avm/gen/template.ts \
../../../../python/x402/http/paywall/evm_paywall_template.py \
../../../../python/x402/http/paywall/svm_paywall_template.py \
../../../../python/x402/http/paywall/avm_paywall_template.py \
../../../../go/http/evm_paywall_template.go \
../../../../go/http/svm_paywall_template.go \
../../../../go/http/avm_paywall_template.go)
pnpm run build:paywall
second_sha=$(sha256sum \
src/evm/gen/template.ts \
src/svm/gen/template.ts \
src/avm/gen/template.ts \
../../../../python/x402/http/paywall/evm_paywall_template.py \
../../../../python/x402/http/paywall/svm_paywall_template.py \
../../../../python/x402/http/paywall/avm_paywall_template.py \
../../../../go/http/evm_paywall_template.go \
../../../../go/http/svm_paywall_template.go \
../../../../go/http/avm_paywall_template.go)
if [ "$first_sha" != "$second_sha" ]; then
echo "::error::build:paywall is non-deterministic across repeat runs. See x4-23b for context."
diff <(echo "$first_sha") <(echo "$second_sha")
exit 1
fi
56 changes: 56 additions & 0 deletions .github/workflows/publish_npm_scoped_x402_avm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Publish @x402/avm package to NPM

on:
workflow_dispatch:

jobs:
publish-npm-x402-avm:
runs-on: ubuntu-latest
environment: ${{ github.ref == 'refs/heads/main' && 'npm' || '' }}
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061
with:
version: 10.7.0

- uses: actions/setup-node@v4
with:
node-version: "24"
registry-url: "https://registry.npmjs.org"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Update npm for OIDC trusted publishing
run: npm install -g npm@latest

- name: Configure npm for trusted publishing
run: npm config delete always-auth 2>/dev/null || true

- name: Install and build
working-directory: ./typescript
run: |
pnpm install --frozen-lockfile
pnpm -r --filter=@x402/core --filter=@x402/extensions --filter=@x402/avm run build

- name: Publish @x402/avm package
working-directory: ./typescript/packages/mechanisms/avm
run: |
# Get package information directly
PACKAGE_NAME=$(node -p "require('./package.json').name")
PACKAGE_VERSION=$(node -p "require('./package.json').version")

echo "Package: $PACKAGE_NAME@$PACKAGE_VERSION"

# Check if running on main branch
if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
echo "Publishing to NPM (main branch)"
pnpm publish --provenance --access public
else
echo "Dry run only (non-main branch: ${{ github.ref }})"
pnpm publish --dry-run --no-git-checks
fi
12 changes: 8 additions & 4 deletions .github/workflows/publish_npm_x402.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,23 @@ jobs:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061
with:
version: 10.7.0

- uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24"
registry-url: "https://registry.npmjs.org"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Update npm for OIDC trusted publishing
run: npm install -g npm@latest

- name: Configure npm for trusted publishing
run: npm config delete always-auth 2>/dev/null || true

- name: Install and build
working-directory: ./typescript
run: |
Expand All @@ -48,5 +54,3 @@ jobs:
echo "Dry run only (non-main branch: ${{ github.ref }})"
pnpm publish --dry-run --no-git-checks
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
14 changes: 9 additions & 5 deletions .github/workflows/publish_npm_x402_axios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,23 @@ jobs:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061
with:
version: 10.7.0

- uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24"
registry-url: "https://registry.npmjs.org"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Update npm for OIDC trusted publishing
run: npm install -g npm@latest

- name: Configure npm for trusted publishing
run: npm config delete always-auth 2>/dev/null || true

- name: Install and build
working-directory: ./typescript
run: |
Expand All @@ -47,6 +53,4 @@ jobs:
else
echo "Dry run only (non-main branch: ${{ github.ref }})"
pnpm publish --dry-run --no-git-checks
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
fi
14 changes: 9 additions & 5 deletions .github/workflows/publish_npm_x402_express.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,23 @@ jobs:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061
with:
version: 10.7.0

- uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24"
registry-url: "https://registry.npmjs.org"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Update npm for OIDC trusted publishing
run: npm install -g npm@latest

- name: Configure npm for trusted publishing
run: npm config delete always-auth 2>/dev/null || true

- name: Install and build
working-directory: ./typescript
run: |
Expand All @@ -47,6 +53,4 @@ jobs:
else
echo "Dry run only (non-main branch: ${{ github.ref }})"
pnpm publish --dry-run --no-git-checks
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
fi
14 changes: 9 additions & 5 deletions .github/workflows/publish_npm_x402_fetch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,23 @@ jobs:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061
with:
version: 10.7.0

- uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24"
registry-url: "https://registry.npmjs.org"
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Update npm for OIDC trusted publishing
run: npm install -g npm@latest

- name: Configure npm for trusted publishing
run: npm config delete always-auth 2>/dev/null || true

- name: Install and build
working-directory: ./typescript
run: |
Expand All @@ -47,6 +53,4 @@ jobs:
else
echo "Dry run only (non-main branch: ${{ github.ref }})"
pnpm publish --dry-run --no-git-checks
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
fi
22 changes: 16 additions & 6 deletions .github/workflows/publish_npm_x402_hono.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,25 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061
with:
version: 10.7.0

- uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24"
registry-url: "https://registry.npmjs.org"
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10.7.0
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Update npm for OIDC trusted publishing
run: npm install -g npm@latest

- name: Configure npm for trusted publishing
run: npm config delete always-auth 2>/dev/null || true

- name: Install and build
working-directory: ./typescript
run: |
Expand All @@ -42,5 +54,3 @@ jobs:
echo "Dry run only (non-main branch: ${{ github.ref }})"
pnpm publish --dry-run --no-git-checks
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
22 changes: 16 additions & 6 deletions .github/workflows/publish_npm_x402_next.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,25 @@ jobs:
id-token: write
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061
with:
version: 10.7.0

- uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24"
registry-url: "https://registry.npmjs.org"
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
version: 10.7.0
cache: "pnpm"
cache-dependency-path: ./typescript

- name: Update npm for OIDC trusted publishing
run: npm install -g npm@latest

- name: Configure npm for trusted publishing
run: npm config delete always-auth 2>/dev/null || true

- name: Install and build
working-directory: ./typescript
run: |
Expand All @@ -42,5 +54,3 @@ jobs:
echo "Dry run only (non-main branch: ${{ github.ref }})"
pnpm publish --dry-run --no-git-checks
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/publish_pypi_x402.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ jobs:
url: https://pypi.org/p/x402
permissions:
contents: read
id-token: write

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -45,4 +46,3 @@ jobs:
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc
with:
packages-dir: python/x402/dist/
password: ${{ secrets.PYPI_X402_TOKEN }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ e2e/facilitators/external-proxies/*
!e2e/facilitators/external-proxies/README.md
typescript/package-lock.json
.pnpm-store/
cdk.out/

# e2e Go build artifacts (compiled binaries)
e2e/clients/go-http/client
Expand Down
Loading
Loading