16.0.0 - 2026-09-01
Added
- The endpoint
/instances/<instance_id>/update/mock_flexible_canister_httpto mock the responses of the committee nodes
of a pending flexible canister HTTP outcall, i.e. one made through theflexible_http_requestmanagement canister endpoint. - The endpoint
/instances/<instance_id>/read/get_canister_httpreports two additional fields for every pending canister HTTP
outcall:replication, describing how the outcall is replicated across the nodes of its subnet (FullyReplicated,
NonReplicated, orFlexiblewith the outcall'stotal_requests,min_responses, andmax_responses), and
pricing_version, reporting whether it is priced with theLegacyor thePayAsYouGopricing model. - Enabling beta features (the field
beta_featuresoficp_configwhen creating an instance) now enables the
flexible_http_requestmanagement canister endpoint on subnets that charge for HTTP outcalls; without beta features that
endpoint is only available on subnets where HTTP outcalls are free (system subnets and subnets with a free cycles cost
schedule). Beta features also enable the pay-as-you-go pricing model, which flexible outcalls are always priced with and
which anhttp_requestcan select through itspricing_versionfield.
Changed
- The endpoint
/instances/<instance_id>/auto_progress(and creating an instance with automatic progress enabled)
only returns after the certified time of the PocketIC instance has been updated for the first time. - Mocked canister HTTP responses report the cycles their node actually spent on the outcall, instead of reporting no spend at
all. This applies to/instances/<instance_id>/update/mock_canister_httpand
/instances/<instance_id>/update/mock_flexible_canister_http. The spend is derived from the size of the mocked response;
unlike a real node, a mocked one is charged no response time, so what a mocked outcall costs does not depend on how fast the
machine running the test is. - Mocking a canister HTTP response whose reject message exceeds 1 KiB now fails. Such a response is not one any node could have
reported. - A node that cannot pay for gossiping its mocked reject reports an out-of-cycles reject instead of the mocked one, matching
what a node of a real subnet does under pay-as-you-go pricing.
Full changelog: CHANGELOG.md
Commit hash: fc21803c3c3a8dd452b3b58b959751c41fecb89c