feat(outcalls): add flexible outcalls endpoint#7615
Merged
mihailjianu1 merged 21 commits intomasterfrom Feb 3, 2026
Merged
Conversation
dsarlis
reviewed
Nov 12, 2025
oggy-dfin
reviewed
Nov 12, 2025
fspreiss
reviewed
Jan 20, 2026
fspreiss
approved these changes
Jan 20, 2026
fspreiss
reviewed
Jan 22, 2026
mraszyk
reviewed
Jan 22, 2026
Contributor
mraszyk
left a comment
There was a problem hiding this comment.
We should also (eventually) include the new method and its candid types in rs/types/management_canister_types/tests/{candid_equality.rs,ic.did}.
mraszyk
approved these changes
Feb 3, 2026
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.
This PR adds a new
FlexibleHttpRequestas anIc00method. Making a well formatted request to it will result in a "Not implemented" error. In the future, this API will return a list of responses. The candid of the request has the following structure:compared to the current one used for fully replicated requests:
Explanation of the differences:
total_requests: opt nat32: this field specifies how many replicas should attempt the outcall (making the API "flexible"). If missing, it defaults to the replication factor. It's also the replication factor for fully replicated requests (ie all replicas attempt the outcall)min_responses : opt nat32: this field specifies the minimum number of responses that should be contained in the response. This field is non-sensical for fully replicated requests, as they have unique responsesmax_responses: opt nat32: same asmin_responses, but specifies the (inclusive) upper limit.is_replicated. This information is already contained in the above three parameters. ifis_replicated = Some(false), this corresponds to(total_requests = N, min_responses = 1, max_responses = 1).pricing_version. we will implement flexible outcalls with the "pay-as-you-go" pricing model from the beginning, so there is (currently) no need for maintaining multiple pricing versions.max_response_bytes: that parameter is no longer used with the pay-as-you-go pricing modelThe candid of the response has not been introduced in the PR, as it's not being created anywhere yet. We'll introduce it once it's created