• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iotaledger / iota / 24972442756
67%

Build:
DEFAULT BRANCH: develop
Ran 27 Apr 2026 02:31AM UTC
Jobs 1
Files 1265
Run time 3min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

25 Apr 2026 10:34AM UTC coverage: 65.589% (+0.02%) from 65.569%
24972442756

push

github

web-flow
feat: Move `schemars` impls from `iota-types` to `iota-json-rpc-types` (#10508)

[run-ci]

### Summary

This PR removes all `schemars` / `JsonSchema` dependencies from
`iota-types` (the core domain crate) and re-implements JSON schema
generation exclusively within `iota-json-rpc-types` (the RPC boundary
crate). The result is a cleaner separation of concerns: core types no
longer carry RPC-specific schema annotations, and the JSON-RPC layer
owns all serialisation and schema logic through a new `serde_utils`
module.

As a side-effect, the generated `openrpc.json` spec is substantially
simplified — many opaque wrapper schemas have been replaced by their
concrete primitive representations, and several schema types that were
never needed by external clients have been removed entirely.

---

### Motivation

`iota-types` previously derived `JsonSchema` directly on many core types
(addresses, digests, sequence numbers, signatures, etc.). This pulled
the `schemars` crate — a purely RPC-concern — into the core domain crate
as a hard dependency, causing unnecessary coupling. It also meant that
schema shape was dictated by the derive macro rather than by deliberate
API design choices.

---

### Changes

#### New: `crates/iota-json-rpc-types/src/serde_utils.rs`

A new module introduces purpose-built `serde_with` adapter types that
implement both serialisation/deserialisation **and** `JsonSchema` for
commonly shared primitives. These adapters are used with `#[serde_as]`
throughout the RPC types layer.

| Adapter | Schema produced | Notes |
|---|---|---|
| `serde_utils::IotaAddress` | `string` | Wraps native `IotaAddress` |
| `serde_utils::ObjectID` | `string` | Wraps native `ObjectID` |
| `serde_utils::SequenceNumberString` | `string` | `u64` serialised as a
decimal string |
| `serde_utils::SequenceNumberU64` | `integer (uint64)` | Used where a
raw integer is appropriate |
| `serde_utils::ProtocolVersion` | `string` | Wraps
`iota_protocol_config::ProtocolVersion` |... (continued)

736 of 1056 new or added lines in 36 files covered. (69.7%)

211 existing lines in 39 files now uncovered.

176638 of 269310 relevant lines covered (65.59%)

432744.5 hits per line

Uncovered Changes

Lines Coverage ∆ File
82
26.72
-64.45% crates/iota-json-rpc-types/src/iota_checkpoint.rs
55
83.28
crates/iota-json-rpc-types/src/iota_system_state_summary.rs
45
60.53
-0.05% crates/iota-json-rpc-types/src/iota_transaction.rs
29
76.19
-15.7% crates/iota-json-rpc-types/src/lib.rs
28
52.46
-1.17% crates/iota-json-rpc-types/src/iota_object.rs
12
50.75
-3.26% crates/iota-json-rpc-types/src/iota_event.rs
11
65.38
-12.03% crates/iota-json-rpc-types/src/iota_coin.rs
10
75.61
crates/iota-json-rpc-types/src/iota_owner.rs
8
81.4
crates/iota-json-rpc-types/src/iota_object_response_error.rs
6
68.75
-3.21% crates/iota-sdk/src/apis/coin_read.rs
5
0.0
0.0% crates/iota-benchmark/src/lib.rs
5
54.55
-45.45% crates/iota-json-rpc-types/src/iota_governance.rs
4
13.11
0.0% crates/iota-rpc-loadgen/src/payload/rpc_command_processor.rs
3
0.0
0.0% crates/iota-open-rpc/src/examples.rs
3
48.03
0.0% crates/iota-replay/src/data_fetcher.rs
2
16.47
0.0% crates/iota-indexer/src/apis/governance_api.rs
2
0.0
0.0% crates/iota-indexer/src/apis/write_api.rs
2
55.16
-0.1% crates/iota-replay/src/replay.rs
1
1.66
0.0% crates/iota-graphql-rpc/src/types/query.rs
1
0.0
0.0% crates/iota-indexer/src/apis/coin_api.rs
1
0.0
0.0% crates/iota-indexer/src/apis/read_api.rs
1
97.43
0.02% crates/iota-json-rpc/src/coin_api.rs
1
91.97
-0.14% crates/iota-json-rpc/src/governance_api.rs
1
92.18
6.31% crates/iota-open-rpc-macros/src/lib.rs
1
45.0
6.76% crates/iota-sdk/src/apis/governance.rs
1
69.54
-0.01% crates/iota/src/client_commands.rs

Coverage Regressions

Lines Coverage ∆ File
27
73.25
-17.2% crates/iota-types/src/iota_serde.rs
15
75.26
-2.58% crates/iota-grpc-client/src/api/ledger/checkpoints.rs
12
50.51
-2.73% crates/iota-sdk/src/apis/read.rs
11
77.12
1.53% crates/test-cluster/src/lib.rs
10
89.53
0.95% crates/iota-test-transaction-builder/src/lib.rs
10
86.61
-7.87% iota-execution/latest/iota-move-natives/src/authentication_context.rs
9
66.67
-18.75% crates/iota-network-stack/src/anemo_ext.rs
8
52.46
-1.17% crates/iota-json-rpc-types/src/iota_object.rs
8
86.89
-2.46% crates/iota-transaction-builder/src/package.rs
7
80.69
-0.18% crates/iota-types/src/transaction.rs
6
81.39
-0.19% crates/iota-core/src/authority.rs
6
83.5
-1.01% crates/iota-core/src/traffic_controller/mod.rs
6
46.9
-5.31% crates/iota-genesis-builder/src/stardust/types/snapshot.rs
6
91.85
-4.44% crates/iota-package-management/src/lib.rs
6
66.29
-3.43% crates/iota-types/src/iota_system_state/mod.rs
5
89.39
-7.58% crates/iota-grpc-client/src/api/execution/execute.rs
5
77.29
-0.73% crates/iota-sdk/src/wallet_context.rs
5
86.17
-0.17% crates/iota-transaction-builder/src/lib.rs
4
76.83
-0.28% crates/iota-core/src/checkpoints/mod.rs
4
85.58
1.28% crates/iota-grpc-types/src/proto/generated/iota.grpc.v1.ledger_service.accessors.rs
4
56.86
-7.84% crates/iota-grpc-types/src/proto/generated/iota.grpc.v1.move_package_service.accessors.rs
4
21.13
0.0% crates/iota-grpc-types/src/proto/iota/grpc/v1/transaction_execution_service.rs
4
75.11
-0.29% crates/iota-network/src/randomness/mod.rs
3
80.91
-0.12% crates/iota-core/src/authority_server.rs
3
77.05
-4.92% crates/iota-core/src/traffic_controller/nodefw_test_server.rs
3
72.73
-27.27% crates/iota-grpc-client/src/api/ledger/service_info.rs
3
75.0
-2.88% crates/iota-grpc-server/src/server.rs
3
97.96
-2.04% crates/iota-types/src/mock_checkpoint_builder.rs
2
91.56
-0.09% crates/iota-core/src/authority/authority_per_epoch_store.rs
2
90.78
0.42% crates/iota-core/src/epoch/randomness.rs
2
16.47
0.0% crates/iota-indexer/src/apis/governance_api.rs
1
88.26
-0.47% consensus/core/src/subscriber.rs
1
86.11
-2.78% crates/iota-cluster-test/src/test_case/native_transfer_test.rs
1
89.0
-0.34% crates/iota-core/src/connection_monitor.rs
1
60.53
-0.05% crates/iota-json-rpc-types/src/iota_transaction.rs
1
68.75
-3.21% crates/iota-sdk/src/apis/coin_read.rs
1
45.0
6.76% crates/iota-sdk/src/apis/governance.rs
1
80.0
-0.31% crates/starfish/core/src/core_thread.rs
1
87.84
-0.45% crates/starfish/core/src/leader_timeout.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 24972442756.1 27 Apr 2026 02:31AM UTC 1265
65.59
GitHub Action Run
Source Files on build 24972442756
  • Tree
  • List 1265
  • Changed 108
  • Source Changed 61
  • Coverage Changed 95
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24972442756
  • 3c9b74d8 on github
  • Prev Build on develop (#24919387294)
  • Next Build on develop (#25029037219)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc