feat: First draft of flexible http outcalls#5890
Draft
Conversation
Contributor
|
🤖 Here's your preview: https://hada6-4yaaa-aaaam-abaha-cai.icp0.io |
oggy-dfin
commented
Jun 27, 2025
748a6ef to
b40ad06
Compare
Co-authored-by: mraszyk <31483726+mraszyk@users.noreply.github.com>
mraszyk
reviewed
Oct 13, 2025
THLO
reviewed
Oct 29, 2025
e14bba0 to
14a0954
Compare
oggy-dfin
commented
Nov 19, 2025
mraszyk
reviewed
Nov 21, 2025
mraszyk
reviewed
Nov 21, 2025
mraszyk
reviewed
Nov 21, 2025
mraszyk
reviewed
Nov 21, 2025
mraszyk
reviewed
Nov 21, 2025
mraszyk
reviewed
Nov 21, 2025
mraszyk
reviewed
Nov 21, 2025
Co-authored-by: mraszyk <31483726+mraszyk@users.noreply.github.com>
Co-authored-by: mraszyk <31483726+mraszyk@users.noreply.github.com>
Co-authored-by: mraszyk <31483726+mraszyk@users.noreply.github.com>
mraszyk
reviewed
Jan 28, 2026
Contributor
mraszyk
left a comment
There was a problem hiding this comment.
Left some more feedback.
mraszyk
reviewed
Jan 28, 2026
mraszyk
reviewed
Jan 28, 2026
mraszyk
reviewed
Jan 29, 2026
mraszyk
reviewed
Jan 29, 2026
mraszyk
reviewed
Jan 29, 2026
github-merge-queue bot
pushed a commit
to dfinity/ic
that referenced
this pull request
Feb 24, 2026
…or flexible calls (#9001) Extends the CanisterHttpRequestContext for flexible outcalls. This is the very first step to enable [flexible HTTPS outcalls](dfinity/portal#5890).
github-merge-queue bot
pushed a commit
to dfinity/ic
that referenced
this pull request
Feb 24, 2026
…or flexible calls (#9001) Extends the CanisterHttpRequestContext for flexible outcalls. This is the very first step to enable [flexible HTTPS outcalls](dfinity/portal#5890).
github-merge-queue bot
pushed a commit
to dfinity/ic
that referenced
this pull request
Mar 3, 2026
#9090) Adds the error types for flexible outcalls according to the draft spec (dfinity/portal#5890).
fspreiss
reviewed
Mar 26, 2026
github-merge-queue bot
pushed a commit
to dfinity/ic
that referenced
this pull request
Mar 27, 2026
…g payload for flexible outcall (#9572) Adapts the HTTP outcalls payload builder for flexible calls to filter out reject responses when trying to find a viable ok-response group. Currently, `find_flexible_responses` picks up responses from the pool via `get_response_content_by_hash`, which returns the full `CanisterHttpResponse` including `Reject` content. It doesn't filter by content type -- any response from a valid committee member gets included, whether `Success` or `Reject`. According to the [spec](dfinity/portal#5890) an `ok` result is `vec http_request_result` (status, headers, body). A `Reject` can't be meaningfully represented as an `http_request_result`. The canister called `flexible_http_request` to get HTTP responses: a node that couldn't reach the server didn't produce a useful HTTP response. The `min_responses` threshold still applies after filtering -- if too many nodes produced `Reject` and we can't reach `min_responses` successes, the group isn't included and the request will eventually time out. In a follow-up PR, to aid with debugging, we will adapt the payload builder to include `Reject` responses in the `node_details` of the [flexible_http_request_err](https://github.com/dfinity/portal/pull/5890/changes#diff-0e66a818a5739ab2c506ec15a9b9e83c5851f14d1f8416b79a130899e547d463R105) whenever a call to `flexible_http_request` times out. --------- Co-authored-by: IDX GitHub Automation <infra+github-automation@dfinity.org>
github-merge-queue bot
pushed a commit
to dfinity/ic
that referenced
this pull request
Mar 27, 2026
…g payload for flexible outcall (#9572) Adapts the HTTP outcalls payload builder for flexible calls to filter out reject responses when trying to find a viable ok-response group. Currently, `find_flexible_responses` picks up responses from the pool via `get_response_content_by_hash`, which returns the full `CanisterHttpResponse` including `Reject` content. It doesn't filter by content type -- any response from a valid committee member gets included, whether `Success` or `Reject`. According to the [spec](dfinity/portal#5890) an `ok` result is `vec http_request_result` (status, headers, body). A `Reject` can't be meaningfully represented as an `http_request_result`. The canister called `flexible_http_request` to get HTTP responses: a node that couldn't reach the server didn't produce a useful HTTP response. The `min_responses` threshold still applies after filtering -- if too many nodes produced `Reject` and we can't reach `min_responses` successes, the group isn't included and the request will eventually time out. In a follow-up PR, to aid with debugging, we will adapt the payload builder to include `Reject` responses in the `node_details` of the [flexible_http_request_err](https://github.com/dfinity/portal/pull/5890/changes#diff-0e66a818a5739ab2c506ec15a9b9e83c5851f14d1f8416b79a130899e547d463R105) whenever a call to `flexible_http_request` times out. --------- Co-authored-by: IDX GitHub Automation <infra+github-automation@dfinity.org>
github-merge-queue bot
pushed a commit
to dfinity/ic
that referenced
this pull request
Mar 27, 2026
…g payload for flexible outcall (#9572) Adapts the HTTP outcalls payload builder for flexible calls to filter out reject responses when trying to find a viable ok-response group. Currently, `find_flexible_responses` picks up responses from the pool via `get_response_content_by_hash`, which returns the full `CanisterHttpResponse` including `Reject` content. It doesn't filter by content type -- any response from a valid committee member gets included, whether `Success` or `Reject`. According to the [spec](dfinity/portal#5890) an `ok` result is `vec http_request_result` (status, headers, body). A `Reject` can't be meaningfully represented as an `http_request_result`. The canister called `flexible_http_request` to get HTTP responses: a node that couldn't reach the server didn't produce a useful HTTP response. The `min_responses` threshold still applies after filtering -- if too many nodes produced `Reject` and we can't reach `min_responses` successes, the group isn't included and the request will eventually time out. In a follow-up PR, to aid with debugging, we will adapt the payload builder to include `Reject` responses in the `node_details` of the [flexible_http_request_err](https://github.com/dfinity/portal/pull/5890/changes#diff-0e66a818a5739ab2c506ec15a9b9e83c5851f14d1f8416b79a130899e547d463R105) whenever a call to `flexible_http_request` times out. --------- Co-authored-by: IDX GitHub Automation <infra+github-automation@dfinity.org>
fspreiss
reviewed
Apr 17, 2026
| }; | ||
|
|
||
| type flexible_http_request_err = record { | ||
| global_error: opt variant { |
Contributor
There was a problem hiding this comment.
I discussed with @gregorydemay that we add yet another global error tag too_many_rejects, which would occur if more than total_requests - min_responses responses from the HTTP adapters are reject responses (e.g., DNS/connection issues).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thank you for your contribution to the IC Developer Portal. This repo contains the content for https://internetcomputer.org and the ICP Developer Documentation, https://internetcomputer.org/docs/.
If you are submitting a pull request for adding or changing content on the ICP Developer Documentation, please make sure that your contribution meets the following requirements:
.mdxfile format to support the previous two components./sidebars.js, otherwise, it will not appear in theside navigation bar.
.github/CODEOWNERSfile iscontains any new directories or specific documents that you added that should be reviewed by a specific teamm.