capiscio-sdk 2.3.0__tar.gz → 2.3.1__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.
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/CHANGELOG.md +129 -13
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/PKG-INFO +1 -1
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/__init__.py +1 -1
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/pyproject.toml +1 -1
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/.github/copilot-instructions.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/.github/markdown-link-check-config.json +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/.github/workflows/docs.yml +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/.github/workflows/integration-tests.yml +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/.github/workflows/pr-checks.yml +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/.github/workflows/publish.yml +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/.gitignore +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/.python-version +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/CONTRIBUTING.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/Dockerfile.test +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/LICENSE +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/QUICK_REFERENCE.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/README.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/RELEASE_GUIDE.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/SECURITY.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/_rpc/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/_rpc/client.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/_rpc/gen/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/_rpc/process.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/badge.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/badge_keeper.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/config.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/dv.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/errors.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/executor.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/infrastructure/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/infrastructure/cache.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/infrastructure/rate_limiter.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/integrations/fastapi.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/py.typed +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/scoring/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/scoring/availability.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/scoring/compliance.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/scoring/trust.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/scoring/types.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/simple_guard.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/types.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/_core.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/agent_card.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/certificate.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/message.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/protocol.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/semver.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/signature.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/capiscio_sdk/validators/url_security.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/api-reference.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/assets/.!58931!favicon.ico +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/assets/favicon.ico +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/assets/logo.png +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/getting-started/concepts.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/getting-started/installation.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/getting-started/quickstart.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/guides/badge-verification.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/guides/configuration.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/guides/scoring.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/includes/abbreviations.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/index.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/javascripts/extra.js +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/stylesheets/extra.css +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/docs/stylesheets/unified.css +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/README.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/secure_ping_pong/README.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/secure_ping_pong/client.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/secure_ping_pong/server.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/simple_agent/README.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/simple_agent/agent_executor.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/simple_agent/main.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/simple_agent/requirements.txt +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/examples/simple_agent/test_client.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/mkdocs.yml +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/e2e/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/Dockerfile.test +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/README.md +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/docker-compose.yml +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/requirements.txt +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/test_badge_keeper.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/test_dv_badge_flow.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/test_dv_order_api.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/test_dv_sdk.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/test_grpc_scoring.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/test_real_executor.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/test_server_integration.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/integration/test_simple_guard.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/__init__.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_agent_card.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_badge.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_badge_keeper.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_cache.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_certificate.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_config.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_core_validator.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_errors.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_executor.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_fastapi_integration.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_message_validator.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_pop_badge.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_protocol_validator.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_rate_limiter.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_semver_validator.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_signature_validator.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_simple_guard.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_types.py +0 -0
- {capiscio_sdk-2.3.0 → capiscio_sdk-2.3.1}/tests/unit/test_url_security.py +0 -0
|
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [2.3.1] - 2025-01-14
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Fixed `__version__` in package `__init__.py` (was 0.3.1, now 2.3.1)
|
|
14
|
+
- Aligned all version references across package metadata
|
|
15
|
+
|
|
8
16
|
## [0.1.0] - 2025-01-10
|
|
9
17
|
|
|
10
18
|
### Added
|
|
@@ -92,25 +100,133 @@ pip install capiscio-sdk==0.1.0
|
|
|
92
100
|
|
|
93
101
|
## [2.3.0] - 2025-01-14
|
|
94
102
|
|
|
95
|
-
|
|
96
|
-
|
|
103
|
+
**Major Release** - Complete Trust Badge ecosystem with gRPC backend, PoP protocol, and DV badge flow.
|
|
104
|
+
|
|
105
|
+
This release introduces the **capiscio-core gRPC integration**, enabling high-performance badge operations through a native Go backend. The SDK now provides a complete implementation of RFC-002 (Trust Badges) and RFC-003 (Proof of Possession).
|
|
97
106
|
|
|
98
107
|
### Added
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
108
|
+
|
|
109
|
+
#### Trust Badge API (`capiscio_sdk.badge`)
|
|
110
|
+
- **`verify_badge()`** - Full badge verification with signature, expiration, and revocation checks
|
|
111
|
+
- **`parse_badge()`** - Parse badge claims without verification (for inspection)
|
|
112
|
+
- **`request_badge()` / `request_badge_sync()`** - Request new badges from CA
|
|
113
|
+
- **`request_pop_badge()` / `request_pop_badge_sync()`** - RFC-003 Proof of Possession badge requests
|
|
114
|
+
- **`start_badge_keeper()`** - Start automatic badge renewal
|
|
115
|
+
- **`BadgeClaims`** dataclass with full RFC-002 claim support
|
|
116
|
+
- **`VerifyOptions`** - Configurable verification (audience, issuers, clock skew)
|
|
117
|
+
- **`VerifyMode`** enum - `ONLINE`, `OFFLINE`, `HYBRID` verification modes
|
|
118
|
+
- **`TrustLevel`** enum - Level 1 (DV), Level 2 (OV), Level 3 (EV)
|
|
119
|
+
|
|
120
|
+
#### Badge Lifecycle Management (`capiscio_sdk.badge_keeper`)
|
|
121
|
+
- **`BadgeKeeper`** class - Automatic badge renewal with background thread
|
|
122
|
+
- Configurable renewal threshold (renew N seconds before expiry)
|
|
123
|
+
- Exponential backoff retry on failure
|
|
124
|
+
- Callback support for badge updates (`on_renew`)
|
|
125
|
+
- Integration with `SimpleGuard` for seamless auth
|
|
126
|
+
- **`BadgeKeeperConfig`** - Full configuration options (TTL, trust level, output file)
|
|
127
|
+
|
|
128
|
+
#### Domain Validation API (`capiscio_sdk.dv`)
|
|
129
|
+
- **`create_dv_order()`** - Create DV badge order with HTTP-01 or DNS-01 challenge
|
|
130
|
+
- **`get_dv_order()`** - Check order status
|
|
131
|
+
- **`finalize_dv_order()`** - Complete validation and receive grant JWT
|
|
132
|
+
- **`DVOrder`** dataclass - Order details (challenge token, validation URL, DNS record)
|
|
133
|
+
- **`DVGrant`** dataclass - Signed grant JWT for badge issuance
|
|
134
|
+
|
|
135
|
+
#### gRPC Backend (`capiscio_sdk._rpc`)
|
|
136
|
+
- **`CapiscioRPCClient`** - High-level gRPC client for capiscio-core
|
|
137
|
+
- Auto-starts local capiscio-core binary when needed
|
|
138
|
+
- Connection pooling and health checks
|
|
139
|
+
- Context manager support (`with CapiscioRPCClient() as client:`)
|
|
140
|
+
- **Generated Protocol Buffers** for all services:
|
|
141
|
+
- `BadgeService` - Badge parsing, verification, issuance
|
|
142
|
+
- `DIDService` - DID parsing and resolution
|
|
143
|
+
- `TrustService` - Trust level operations
|
|
144
|
+
- `RevocationService` - Badge revocation checks
|
|
145
|
+
- `ScoringService` - Trust scoring calculations
|
|
146
|
+
- `SimpleGuardService` - Request signing and verification
|
|
147
|
+
- `RegistryService` - Agent registry operations
|
|
148
|
+
- **`ProcessManager`** - Manages capiscio-core subprocess lifecycle
|
|
149
|
+
|
|
150
|
+
#### Core Validator (`capiscio_sdk.validators`)
|
|
151
|
+
- **`CoreValidator`** class - Go-backed validation for agent cards
|
|
152
|
+
- **`validate_agent_card()`** - One-liner validation using Go core
|
|
153
|
+
- RFC-004 Agent Card schema validation
|
|
154
|
+
- Much faster than pure-Python validation
|
|
155
|
+
|
|
156
|
+
#### RFC-002 v1.3 §7.5 Staleness Options
|
|
157
|
+
- Configurable badge staleness thresholds
|
|
158
|
+
- `max_age` parameter for verification
|
|
159
|
+
- Grace period support for expiring badges
|
|
160
|
+
|
|
161
|
+
### Changed
|
|
162
|
+
- **Version Alignment**: SDK version now matches other CapiscIO products (capiscio-server, capiscio-ui, capiscio-core v2.3.0)
|
|
163
|
+
- **SimpleGuard Refactoring**:
|
|
164
|
+
- Now uses gRPC backend for cryptographic operations
|
|
165
|
+
- Improved request signing with `sign_request()` / `verify_request()`
|
|
166
|
+
- Better error messages with RFC references
|
|
167
|
+
- **Scoring Module**: Enhanced with gRPC-backed calculations
|
|
104
168
|
|
|
105
169
|
### Fixed
|
|
106
|
-
- **CI/CD
|
|
107
|
-
- Publish workflow now runs only unit tests
|
|
108
|
-
-
|
|
109
|
-
- **Lint Issues**: Fixed
|
|
170
|
+
- **CI/CD Pipeline**:
|
|
171
|
+
- Publish workflow now runs only unit tests (prevents false failures from missing infrastructure)
|
|
172
|
+
- Integration tests moved to dedicated workflow with Docker infrastructure
|
|
173
|
+
- **Lint Issues**: Fixed all ruff warnings, updated to latest ruff config
|
|
174
|
+
- **FastAPI Integration**: Improved middleware error handling
|
|
175
|
+
|
|
176
|
+
### Infrastructure
|
|
177
|
+
- **New Integration Test Suite** with Docker Compose:
|
|
178
|
+
- `test_badge_keeper.py` - Badge lifecycle tests
|
|
179
|
+
- `test_dv_badge_flow.py` - Full DV flow E2E tests
|
|
180
|
+
- `test_dv_order_api.py` - DV API tests
|
|
181
|
+
- `test_dv_sdk.py` - SDK integration tests
|
|
182
|
+
- `test_grpc_scoring.py` - gRPC scoring tests
|
|
183
|
+
- `test_server_integration.py` - Server integration tests
|
|
184
|
+
- `test_simple_guard.py` - SimpleGuard tests
|
|
185
|
+
- **New Unit Tests**:
|
|
186
|
+
- `test_badge.py` - Badge API unit tests
|
|
187
|
+
- `test_badge_keeper.py` - BadgeKeeper unit tests
|
|
188
|
+
- `test_core_validator.py` - CoreValidator tests
|
|
189
|
+
- `test_pop_badge.py` - PoP protocol tests
|
|
190
|
+
- **GitHub Actions Workflows**:
|
|
191
|
+
- `integration-tests.yml` - Full integration tests with capiscio-server + postgres + capiscio-core
|
|
110
192
|
|
|
111
193
|
### Documentation
|
|
112
|
-
-
|
|
113
|
-
-
|
|
194
|
+
- **Comprehensive gRPC Integration Guide** (`docs/guides/badge-verification.md`)
|
|
195
|
+
- **Badge Verification Guide** with code examples
|
|
196
|
+
- **GitHub Copilot Instructions** for AI-assisted development
|
|
197
|
+
- **API Reference** updates for all new modules
|
|
198
|
+
|
|
199
|
+
### Dependencies
|
|
200
|
+
- Added `grpcio` and `grpcio-tools` for gRPC support
|
|
201
|
+
- Added `protobuf` for Protocol Buffer serialization
|
|
202
|
+
- Updated `cryptography` to latest version
|
|
203
|
+
|
|
204
|
+
### Statistics
|
|
205
|
+
- **+12,568 lines of code** added
|
|
206
|
+
- **63 files** changed
|
|
207
|
+
- **7 new modules** added
|
|
208
|
+
- **1,321 line** gRPC client implementation
|
|
209
|
+
- **737 line** badge API implementation
|
|
210
|
+
- **304 line** BadgeKeeper implementation
|
|
211
|
+
- **296 line** DV API implementation
|
|
212
|
+
|
|
213
|
+
### Migration from v0.3.x
|
|
214
|
+
This release is backwards compatible. Existing `SimpleGuard` and `CapiscioSecurityExecutor` usage continues to work. New features are additive.
|
|
215
|
+
|
|
216
|
+
To use new badge features:
|
|
217
|
+
```python
|
|
218
|
+
from capiscio_sdk import verify_badge, BadgeKeeper, create_dv_order
|
|
219
|
+
|
|
220
|
+
# Verify an incoming badge
|
|
221
|
+
result = verify_badge(token, trusted_issuers=["https://registry.capisc.io"])
|
|
222
|
+
|
|
223
|
+
# Auto-renew badges
|
|
224
|
+
keeper = BadgeKeeper(api_url="...", api_key="...", agent_id="...")
|
|
225
|
+
keeper.start()
|
|
226
|
+
|
|
227
|
+
# Get a DV badge
|
|
228
|
+
order = create_dv_order(domain="example.com", challenge_type="http-01", jwk=jwk)
|
|
229
|
+
```
|
|
114
230
|
|
|
115
231
|
## [0.3.1] - 2025-11-23
|
|
116
232
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|