Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
fcac9b3
Describe the new cost API
oggy-dfin Oct 6, 2025
9ea0269
Add the `pricing_version` to the outcalls endpoint.
oggy-dfin Oct 6, 2025
c8528ed
Fix text alignment etc
oggy-dfin Oct 6, 2025
4ead597
Update docs/references/ic-interface-spec.md
oggy-dfin Oct 10, 2025
3b2c02d
Martin's comments
oggy-dfin Oct 10, 2025
660280c
Rename request time to http roundtrip time
oggy-dfin Oct 22, 2025
685be30
First draft of flexible http outcalls
oggy-dfin Jun 27, 2025
e6c288d
New version (after feature review)
oggy-dfin Sep 25, 2025
14a0954
Latest version building on top of the new pricing model PR
oggy-dfin Nov 12, 2025
417bbdc
Fix the ic.did types
oggy-dfin Nov 12, 2025
0484f2c
Improve the error reporting
oggy-dfin Nov 21, 2025
e0a4c11
Update docs/references/ic-interface-spec.md
oggy-dfin Nov 21, 2025
34e2bfa
Update docs/references/_attachments/ic.did
oggy-dfin Nov 21, 2025
fa34180
Update docs/references/_attachments/ic.did
oggy-dfin Nov 21, 2025
694b23b
Update docs/references/_attachments/ic.did
oggy-dfin Nov 21, 2025
7224006
Improve the improvement
oggy-dfin Nov 21, 2025
055d8ce
Undo roadmap.json changes
oggy-dfin Nov 21, 2025
92c6d75
Martin's comment
oggy-dfin Nov 21, 2025
315b064
Rename the fields in the report
oggy-dfin Nov 21, 2025
b7b4534
Make the result be a variant, not a record!
oggy-dfin Nov 24, 2025
c221f69
Merge branch 'master' into oggy/flexible-http-outcalls
mihailjianu1 Jan 26, 2026
065408c
node_counts -> replication
mihailjianu1 Jan 26, 2026
d0f69e5
nat64 -> nat32
mihailjianu1 Jan 28, 2026
44d5242
better docs
mihailjianu1 Jan 28, 2026
bea49b3
better node errors
mihailjianu1 Jan 28, 2026
dd42f48
advice
mihailjianu1 Jan 28, 2026
951fdcc
better err
mihailjianu1 Jan 29, 2026
3c1f3a4
docs
mihailjianu1 Jan 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions docs/references/_attachments/ic.did
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,28 @@ type http_request_resource_report = record {

type flexible_http_request_err = record {
cause: opt variant {
timeout : vec record { principal; http_request_resource_report; };
invalid_parameters: reserved;
limits_exceeded: vec record { principal; http_request_resource_report; };
out_of_cycles : vec record { principal; http_request_resource_report; };
responses_too_large : vec record { principal; nat64; };
global_err: opt variant {
invalid_parameters : reserved;
timeout : reserved;
out_of_cycles : reserved;
responses_too_large : reserved;
};
local_errs : vec record {
node: principal;
cause : opt variant {
limit_exceeded : opt variant {
request_time : reserved;
response_bytes : reserved;
transform_instructions : reserved;
transformed_response_bytes : reserved;
};
out_of_cycles : reserved;
};
};
};
resource_reports: vec record {
node: principal;
report: http_request_resource_report;
};
message: text;
};
Expand Down
19 changes: 13 additions & 6 deletions docs/references/ic-interface-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -3049,17 +3049,24 @@ The response from the remote server must not exceed `2MB`. Moreover, the total s

Cycles to pay for the call must be explicitly transferred with the call, i.e., they are not automatically deducted from the caller's balance implicitly (e.g., as for inter-canister calls). The upfront cycles cost covers a call that maxes out the resource usage during processing, for example, hitting the `2MB` limit on the size of the response. The unused cycles are then refunded to the caller.

The method may return an error of the `flexible_http_request_err` type. The error includes an error message, and may also include a variant describing the error cause:
The method may return an error of the `flexible_http_request_err` type. The error includes an error message, and may also include a variant describing the error cause. The causes may include:
- an optional "global" error preventing the successful response from being created:

- `timeout`, meaning that less than `min_responses` from the nodes have been collected before some system-defined timeout. The value is accompanied by a vector of available resource reports at the point when the timeout went off.
- `timeout`, meaning that less than `min_responses` from the nodes have been collected before some system-defined timeout. The value is accompanied by a vector of available resource reports at the point when the timeout went off.

- `invalid_parameters`, indicating that the parameters to the call violated one of the conditions.
- `invalid_parameters`, indicating that the parameters to the call violated one of the conditions.

- `limits_exceeded`, indicating that less than `min_responses` from the nodes were available, and that the other nodes exceeded some of the system-defined resource limits while the processing of the outcall. The resource reports of the individual nodes are provided (as a pair of node ID and the report).
- `out_of_cycles` indicating that the attached cycles were not enough to cover the processing of at least `min_responses`.

- `out_of_cycles` indicating that less than `min_responses` from the nodes were available, and that the provided cycles were not sufficient for some of the other nodes to cover their resources. The resource reports of the individual nodes are provided (as a pair of node ID and the report).
- `responses_too_large` : indicating that no combination of at least `min_responses` available responses could fit into the 2MB total limit.

- `responses_too_large` : indicating that no combination of at least `min_responses` available responses could fit into the 2MB total limit. The sizes of available responses at each replica are reported.
- local errors, where the processing was unsuccessful at some nodes. For each such node, the possible error is reported:

- `limits_exceeded`, indicating the node exceeded one of the system-defined resource limits while the processing the outcall.

- `out_of_cycles`, indicating that the this node's portion of the attached cycles was not enough to cover the resources used for processing the outcall.

Additionally, the available reports on resources used by nodes for processing the outcall are provided. A simple textual representation of the error is also returned.

### IC method `node_metrics_history` {#ic-node_metrics_history}

Expand Down