pub struct A2aChannelConfig {
pub api_key_hash: String,
pub api_key_prefix: String,
pub session_mode: InvocationSessionMode,
pub message: String,
pub agent_card_name: Option<String>,
pub agent_card_description: Option<String>,
pub rate_limit_per_minute: Option<u32>,
pub auth: Option<AppEndpointAuthConfig>,
pub signing_secret: Option<String>,
}Expand description
Typed A2A (Agent2Agent) channel configuration.
The plaintext API key is never stored. Only the SHA-256 hex hash and a non-secret display prefix are persisted. The plaintext is returned exactly once at create / regenerate time.
message is the template body. {{path.to.value}} placeholders expand
against the incoming A2A request payload and metadata (see
specs/a2a-channel.md).
Fields§
§api_key_hash: StringSHA-256 hex digest of the API key.
api_key_prefix: StringPublic, non-secret display prefix (e.g. evra2a_abc1...).
session_mode: InvocationSessionModeWhether invocations reuse a stable session or create a new one.
message: StringMessage template rendered into the session per invocation.
agent_card_name: Option<String>Optional human-readable agent name surfaced in the Agent Card.
agent_card_description: Option<String>Optional description surfaced in the Agent Card.
rate_limit_per_minute: Option<u32>Optional per-IP rate limit applied to this app’s A2A endpoint, in
requests per minute. None or Some(0) disables the per-channel
limit (the global API limit still applies). Set a positive value to
enforce a stricter cap on unattended agent-to-agent traffic for this
app. Mirrors AgUiChannelConfig::rate_limit_per_minute.
auth: Option<AppEndpointAuthConfig>Optional inline auth config for this A2A endpoint. When omitted, legacy per-channel API-key behavior applies.
signing_secret: Option<String>Optional shared HMAC signing secret. When set, requests must include
X-Everruns-A2A-Timestamp + X-Everruns-A2A-Signature headers and
the server verifies an HMAC-SHA256 signature over the exact
basestring v0:{timestamp}:{body} (Slack-style, no whitespace
between segments) plus a 5-minute timestamp window plus a
signature-keyed dedup so a captured request cannot be replayed
while the API key is still valid (TM-A2A-010). When None, the
channel keeps the existing API-key-only behavior. Layered on top
of auth — independent concerns: auth selects who can call,
signing_secret adds replay protection on top.
Trait Implementations§
Source§impl Clone for A2aChannelConfig
impl Clone for A2aChannelConfig
Source§fn clone(&self) -> A2aChannelConfig
fn clone(&self) -> A2aChannelConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for A2aChannelConfig
impl Debug for A2aChannelConfig
Source§impl<'de> Deserialize<'de> for A2aChannelConfig
impl<'de> Deserialize<'de> for A2aChannelConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for A2aChannelConfig
impl RefUnwindSafe for A2aChannelConfig
impl Send for A2aChannelConfig
impl Sync for A2aChannelConfig
impl Unpin for A2aChannelConfig
impl UnsafeUnpin for A2aChannelConfig
impl UnwindSafe for A2aChannelConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request